週末無聊,嘗試寫了下貪吃蛇。先上**
#include#include#include#include#include#includeusing namespace std;
#define up 72;
#define down 80;
#define left 75;
#define right 77;
struct xyval
;queueque;
int main()
for (int i = 1; i < 21; i++)
//核心
//生成頭部*和乙個果實$
int xval, yval, xfood, yfood;
srand(time(0));
xval = rand() % 14 + 3;
yval = rand() % 14 + 3;
playspace[xval][yval] = '*';
que.push(xyval);
do while (xfood == xval && yfood == yval);
playspace[xfood][yfood] = '$';
for (int i = 0; i < 22; i++)
//初始的移動方向
int move;
int movei = rand() % 4 + 1;
switch (movei)
//移動
while (1)
if (playspace[xval][yval] == '@' || playspace[xval][yval] == '*')
break;
switch (playspace[xval][yval])
);temp = que.front();
que.pop();
playspace[temp.x][temp.y] = 0;
break;
case '$':
playspace[xval][yval] = '*';
temp.x = xval;
temp.y = yval;
que.push(temp);
do while (playspace[xfood][yfood] != 0);
playspace[xfood][yfood] = '$';
break;
} //輸出此刻的狀態
for (int i = 0; i < 22; i++)
//sleep(1 * 2000);
//輸入鍵盤控制
if (clock() > leveltime)
if (level > 4)
level = 4;
clock_t timebegin = clock();
char ch;
while (1)
else if (clock() - timebegin >= 1000 / level)
break;
} if (ch == 72 || ch == 75 || ch == 77 || ch == 80)
move = ch;
ch = 0;
}cout << "failed" << endl;
system("pause");
return 0;
}
貪吃蛇是乙個二維畫素遊戲。因為使用乙個char型別的二維陣列來實現。
使用cout函式不斷的有間隔時間的列印這個二維陣列,實現貪吃蛇的移動效果。
使用乙個佇列來儲存「貪吃蛇」這條蛇所有元素的「座標」,也就是相應元素在二維陣列中的索引。
通過clock()函式,來給使用者一定時間輸入控制。
1. 是牆壁或蛇自身。此時遊戲失敗,結束程序。**僅需跳出迴圈,輸出「failed」即可。
2. 是果實。此時果實變成蛇的頭部,將這個座標push到佇列que中。此外還需要另外生成乙個果實。
3. 是空的。此時下乙個節點稱為蛇的頭部,而蛇的尾部節點的座標放在que的隊首。使用que.front()獲得這個需要刪除的節點的座標, 將這個座標對應的二維陣列值設為0,然後pop出佇列。
1. 使用rand結合srand、time(0)生成的隨機數來產生果實和頭部的隨即座標。
2. 注意,果實、頭部的座標只能生成在「空位」,如果這個位置不是空的,就需要重新生成座標。
1. 使用kbhie()函式來檢測是否有鍵盤輸入,getch()來獲取鍵盤輸入。
2. 使用乙個迴圈巢狀乙個時間條件來實現「限時」。(之前用sleep()來做的時候發生一些意外,究其原因,sleep是將整個程式暫停,暫停期間使用者的輸入是不會被程式接受的。而這個迴圈可以一直等待使用者輸入)
3. 使用乙個時間函式來實現level(難度)隨時間增長的特性。
眼花。尤其的難度增高以後,把我看哭了。。。。
c 實現貪吃蛇
include include include include include include include include include word square color 7 義方向 define key up 72 define key down 80 define key left 75...
C 實現貪吃蛇
vs 2015 easyx 蛇能上下左右移動 蛇能吃食物 能判斷蛇的死亡 蛇的長度,每節蛇的座標,蛇移動的方向 蛇初始化,移動,改變方向,吃食物,畫蛇,蛇是否死亡 食物的座標,食物是否被吃掉 初始化食物,新的食物,畫食物 因為蛇吃食物時需要知道食物的座標,所以需要獲得食物座標的方法 因為蛇吃食物後需...
C實現貪吃蛇
include include include include define width 25 define high 15 int movedirection 1 2 3 4是小蛇的移動方向,分別表示上下左右 int canvas high width 二維陣列儲存遊戲畫布中對應的元素 0為空格,...