C語言貪吃蛇

2021-08-17 20:39:44 字數 3698 閱讀 4248

/*親測devc++編譯器完美執行*/

#define _crt_secure_no_warnings

#include

#include

#include

#include

void readini(file **fphead, int *score, char *argv) //建立或開啟乙個和執行檔案對應的ini檔案,讀取最高紀錄

if (1 == flag)

else

for (; filename[i] != '\\'&&i >= 0; i--)pfilename = &filename[i];

if ((*fphead = fopen(pfilename, "rb+")) == null)

}else

}void writeini(file **fphead, int *score, char *argv)  //開啟乙個和執行檔案對應的ini檔案,寫入最高紀錄

if (1 == flag)

else

for (; filename[i] != '\\'&&i >= 0; i--)pfilename = &filename[i];

if ((*fphead = fopen(pfilename, "wb+")) == null)

else

}void gotoxy(int x, int y)//游標定位,游標定位函式setconsolecursorposition是左上角位置是0,0然後向左向下延伸

void color(int a)//顏色函式

void refresh(int q[22], int grade, int gamespeed, int length, int score) //  輸出貪吃蛇棋盤

if (q[i][j] == 1 || q[i][j] == 2)//輸出棋盤牆壁

if (q[i][j] == 3)//輸出蛇頭

if (q[i][j] == 4)//輸出蛇身

if (q[i][j] == 5)//輸出果子

}if (i == 0) printf("\t***********************");

if (i == 1) printf("\t等級為:%d", grade);//顯示等級

if (i == 3) printf("\t自動前進時間");

if (i == 4) printf("\t間隔為:%dms", gamespeed);//顯示時間

if (i == 6) printf("\t歷史最高分為:%d分", score);

if (i == 7) printf("\t你現在得分為:%d分", (length + (grade - 1) * 8) * 10);

if (i == 8) printf("\t**********************");

if (i == 9) printf("\t遊戲說明:");

if (i == 10) printf("\t(1)用小鍵盤方向鍵控制");

if (i == 11) printf("\t蛇頭運動方向;");

if (i == 12) printf("\t(2)蛇每吃乙個果子蛇身");

if (i == 13) printf("\t增加一節;");

if (i == 14) printf("\t(3)蛇咬到自己或碰到牆");

if (i == 15) printf("\t壁遊戲結束。");

if (i == 18) printf("\t**********************");}}

int main(int argc, char *argv)

first = 1;

for (i = 1; i <= 3; i++)

tcsqipan[1][i] = 4;    //蛇身

tcsqipan[1][4] = 3;       //蛇頭

}srand(time(0));//設定隨機種子

do while (tcsqipan[x1][y1] != 0);//如果不是在空白處重新出果子

tcsqipan[x1][y1] = 5;//貪吃蛇棋盤相應座標標上果子的標誌5

color(12);

printf("\n\n\t\t\t\t貪吃蛇遊戲即將開始 !\n");//準備開始

for (i = 3; i >= 0; i--)

x = tcszuobiao[0][head];

y = tcszuobiao[1][head];//儲存蛇頭座標到x,y變數

while (1)//執行一局遊戲

if (!(direction == 72 || direction == 80 || direction == 75 || direction == 77))

else

if (direction == 72 && directiontemp == 80)//忽略反方向按鍵

else if (direction == 80 && directiontemp == 72)

else if (direction == 75 && directiontemp == 77)

else if (direction == 77 && directiontemp == 75)

switch (direction)//判斷方向鍵

if (x == 0 || x == 21 || y == 0 || y == 21)      // 蛇頭碰到牆壁,結束本局遊戲

else

gotoxy(23, 12);

printf("按回車鍵重新開始,按esc退出遊戲\n");//顯示的提示

break;//退出該局遊戲

}if (tcsqipan[x][y] != 0 && !(x == x1&&y == y1) && tcsqipan[x][y] != 3) //   蛇頭碰到蛇身,結束本局遊戲

else

gotoxy(23, 12);

printf("按回車鍵重新開始,按esc退出遊戲\n");//顯示的提示

break;//退出該局遊戲}/*

遊戲執行時的核心演算法開始

*/if (x == x1 && y == y1) //  吃果子,長度加1

tcsqipan[x][y] = 3;//貪吃蛇棋盤相應座標現在蛇頭標誌改為蛇頭標誌3

tcsqipan[tcszuobiao[0][head]][tcszuobiao[1][head]] = 4;//貪吃蛇棋盤相應座標原來蛇頭標誌改為蛇身標誌4

head = (head + 1) % 400;//防止陣列越界

tcszuobiao[0][head] = x;//蛇頭的x座標

tcszuobiao[1][head] = y;//蛇頭的y座標

do//隨機出果子

while (tcsqipan[x1][y1] != 0);//如果不是在空白處重新出果子

tcsqipan[x1][y1] = 5;//貪吃蛇棋盤相應座標標上果子的標誌5

gotoxy(22, 12);

printf("\t遊戲進行中!\n");

refresh(tcsqipan, grade, gamespeed, length, score);

}else  //  不吃果子

else}/*

遊戲執行時的核心演算法結束*/}

while (1)

system("cls");//清除螢幕重新開始

}return 0;

}

C語言貪吃蛇

include include include include include include define screen width 40 遊戲螢幕寬度 define screen length 15 遊戲螢幕長度 define start x 16 螢幕起始x座標 define start y ...

C語言 貪吃蛇

include include include define framewidght 22 define frameheight 22 short generaterandnumber short a,short b void posconsolecursor short x,short y voi...

C語言 貪吃蛇

結構體鍊錶,動態分配記憶體,鍵盤輸入檢測,設定游標。1,涉及多個結構體,分別定義蛇,方向,結點,位置座標,遊戲 2,結點串聯形成鍊錶,遍歷獲取成員座標,列印符號得到蛇身。3,不斷的加頭,去尾,重新遍歷座標,再列印形成蛇的移動。4,食物產生的位置判定,不能越界,也不能與蛇身體重合。5,蛇的轉向判定,一...