C 控制台實現貪吃蛇遊戲

2022-09-29 23:12:21 字數 3328 閱讀 3015

剛學完了c語言,便嘗試的寫了貪吃蛇的**,但是效果不佳,很多的bug,所以,這個學了c++,便重新的寫了這個小遊戲,用類來封裝!

先是標頭檔案:

struct snake

;class snake

~snake(){}

void display(); //顯示蛇身函式

void rightmove(); //右移函式

void leftmove(); //左移函式

void upmove(); //上移函式

void downmove(); //下移函式

int cheak(); //檢查是否撞牆或撞到自身

void creat_food(); //產生食物

int eat_food(); //吃食物

private:

struct snake s[100]; //先定義蛇身最長100

int length; //當前蛇長度

int x3, y3; //食物座標

int up, down, right, left; //蛇的狀態,是上移還是下移或...};

void make_frame(); //列印框架的函式

void show(); //遊戲開始倒計時函式

void gameover(); //遊戲結束函式

下面是各個函式的實現的cpp檔案:

# include

# include

# include

# include "snake.h"

# define maxlen 20

# define maxwen 30

using namespace std;

handle hout = getstdhandle(std_output_handle); //獲取控制代碼

void gotoxy(handle hout, int x, int y) //輸出位置的函式

void snake::display() //列印蛇身

else //列印蛇身 }

gotoxy(hout, 0, 22);

}void snake::rightmove() //右移

gotoxy(hout, x2, y2); //消除蛇移動遺留的 『*'

cout << ' ';

}void snake::leftmove() //左移

gotoxy(hout, x2, y2); //同上

cout << ' ';

}void snake::downmove() //下移

gotoxy(hout, x2, y2); //同上

cout << ' ';

}void snake::upmove() //上移

gotoxy(hout, x2, y2); //同上

cout << ' ';

}int snake::cheak()

} if (flag == 1 || (s[length - 1].x >= 30 + 1 || s[length - 1].x < 4) || (s[length - 1].y <= 1 || s[length - 1].y >= 20))

else }

void snake::creat_food() //產生食物座標

gotoxy(hout, x3, y3); //顯示食物

cout << '*';

}int snake::eat_food()

else if (down == 1) //同上

else if (right == 1) //同上

else if (left == 1) //同上

length++; //蛇長加1

return 1;

} else

return 0;

}void make_frame() //列印框架函式

for (int i = 2; i < maxlen; i++)

gotoxy(hout, 2 + maxwen, 1);

printf("╗");

for (int i = 2; i < maxlen; i++)

gotoxy(hout, 2, maxlen);

printf("╚");

gotoxy(hout, 2 + maxwen, maxlen);

printf("╝");

for (int i = 4; i < 2 + maxwen; i++) }

void show() //顯示操作方法和遊戲開始倒計時

void gameover() //遊戲結束函式

主函式的cpp檔案:

# include

# include

# include

# include "snake.h"

using namespace std;

char ch;

int main()

sleep(500); //等待500ms

p: if (_kbhit()) //是否有按鍵 }

pp: switch (ch) //有按鍵

sleep(500);

pw: if (_kbhit()) }

}break;

case 97: //左移的情況

sleep(500);

pa: if (_kbhit())

}}break;

case 115: //下移的情況

sleep(500);

ps: i程式設計客棧f (_kbhit()) }

}break;

case 100: //右移的情況

sleep(500);

pd: if (_kbhit())

}}break;

default:

break;

} gameover(); //顯示遊戲結束,是否重玩

py: ch = _getch();

if (ch == 110) //否

else if (ch == 121) //是

continue;

else

goto py;

} return 0;

}下面是遊戲的截圖:

控制台的實現,不是很美觀,主要是由於上下和左右的間隙不一樣大,所以看起來不是很好看,但總體還是實現了貪吃蛇!

關於c++小遊戲的內容專題: 《c++經典小遊戲》 學習了解

本文標題: c++控制台實現貪吃蛇遊戲

本文位址:

c 控制台實現貪吃蛇

思路 效果 沒開發前覺得挺難,一步步做下來後就不覺得難了,當然,只是粗略的實現,速度,地圖自定義等都可以再繼續優化,規劃也不好。貪吃蛇包含 牆,食物,蛇。牆 初始後固定動,直接按橫0縱0,高寬自定列印字元即可。食物 x,y生成在牆內。蛇 會動,實際會動的只有蛇頭和蛇尾,蛇身每個字元都會經過蛇頭的位置...

C 控制台貪吃蛇

軟體實訓作品,現放出個人源 供需要的同學參考 int startx 8 x起點 const int starty 4 y起點 const int rangex 60 x範圍 const int rangey 20 y範圍 const int endx startx rangex x終點 const ...

C 控制台貪吃蛇

大二下的遊戲程式設計第乙個小作業,以此篇記錄一下,感謝李仕老師的循循善誘和同學們的熱情討論。include include include using namespace std define leftborder 3 define topborder 3 bool gameover,died 遊戲...