C語言控制臺貪吃蛇4
阿新 • • 發佈:2017-10-29
eba bsp console 食物 blog pan 是否 lec ons
蛇死亡判斷、吃食物、計分
一、蛇死亡判斷:裝邊界,撞自己死亡
定義:IsSnakeDie()//蛇死亡判斷 函數,返回類型為bool型
思路:
//蛇頭的下一個,是方塊 就是死亡 if(0 == strncmp(&g_strgameback[g_arrSnake[0][0]][g_arrSnake[0][1] + g_arrSnake[0][2]], "■", 2)) { return false; }
二、隨機產生食物及吃食物變長
1、(1)為食物產生隨機的坐標
//產生隨機坐標 srand((unsigned int)time(NULL)); g_nRow= rand()%18 + 1; g_nCol = rand()%20 + 1;
(2)在產生的位置上畫上食物:
strncpy(&g_strgameback[g_nRow][g_nCol*2], "★", 2);
此時調用函數運行結果可以顯示食物,但是沒有判斷是否應該產生新食物,所以會一直隨機產生食物。
(3)判斷是否產生新食物
bool g_bIsProFood = true; //判斷是否產生新的食物 if(false == g_bIsProFood) { return ; }
將隨機產生的食物坐標以及遍歷蛇數組放進一個循環中,實現蛇沒吃掉食物前只有一個食物
2、蛇吃食物變長
當蛇頭坐標與食物的坐標相等時,蛇身變長。先定義一個蛇身長度:int g_nSnakelen = 2;
//蛇頭光標跟坐標相等 if(g_nRow == g_arrSnake[0][0] && g_nLie*2 == g_arrSnake[0][1]) { //蛇長大 if(to_east == g_arrSnake[g_nSnakelen][2]) { g_arrSnake[g_nSnakelen+1][0] = g_arrSnake[g_nSnakelen][0]; g_arrSnake[g_nSnakelen+1][1] = g_arrSnake[g_nSnakelen][0] - 2; g_arrSnake[g_nSnakelen+1][2] = g_arrSnake[g_nSnakelen][0]; } else if(to_west == g_arrSnake[g_nSnakelen][2]) { g_arrSnake[g_nSnakelen+1][0] = g_arrSnake[g_nSnakelen][0]; g_arrSnake[g_nSnakelen+1][1] = g_arrSnake[g_nSnakelen][0] + 2; g_arrSnake[g_nSnakelen+1][2] = g_arrSnake[g_nSnakelen][0]; } else if(to_north == g_arrSnake[g_nSnakelen][2]) { g_arrSnake[g_nSnakelen+1][0] = g_arrSnake[g_nSnakelen][0]; g_arrSnake[g_nSnakelen+1][1] = g_arrSnake[g_nSnakelen][0] + 1; g_arrSnake[g_nSnakelen+1][2] = g_arrSnake[g_nSnakelen][0]; } else if(to_south == g_arrSnake[g_nSnakelen][2]) { g_arrSnake[g_nSnakelen+1][0] = g_arrSnake[g_nSnakelen][0]; g_arrSnake[g_nSnakelen+1][1] = g_arrSnake[g_nSnakelen][0] - 1; g_arrSnake[g_nSnakelen+1][2] = g_arrSnake[g_nSnakelen][0]; } g_nSnakelen++; g_bIsProFood = true; }
當計分函數寫好後需要在蛇變長函數中調用,變長的同時分數也增加
三、計分
設置光標位置:SetConsoleCursorPosition();
COORD rd; rd.X = 55; rd.Y = 8; //設置光標位置 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),rd); printf("Score Is : "); rd.X = 56; rd.Y = 9; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),rd); printf("%d",g_nScore*10);
流程結束。
C語言控制臺貪吃蛇4