《vc6完美运行贪吃蛇c源代码.docx》由会员分享,可在线阅读,更多相关《vc6完美运行贪吃蛇c源代码.docx(19页珍藏版)》请在三一办公上搜索。
1、vc6完美运行贪吃蛇c源代码/*贪吃蛇*/#include<stdio.h>#include<windows.h>#include<stdlib.h>#include<conio.h>#define HENG 80#define SHU 25 /HENG是宽度,SHU是高度#define TIME 400 /初始速度void Gotoxy(int x, int y);void Food(struct SHE *head);int Move(struct SHE *head);int Panduan(struct SHE *head, int x, int y);
2、struct SHE *Link(struct SHE *head);void FreeShe(struct SHE *head);void Gameover(void);void Huitu(struct SHE *head);int Fx, Fy; /食物的位置int fen; /得分int fang; /方向参数int Tx, Ty;/构造蛇身struct SHEint x;int y;struct SHE *next;int main(void)struct SHE *head = NULL;int temp;int times = TIME;char m;dofen = 0;fang
3、 = 2;temp = fen;times = TIME;head = NULL;head = (struct SHE *)malloc(sizeof(struct SHE);head -> x = 40;head -> y = 13;head -> next = NULL;Food(head);while (1)Huitu(head);Sleep(times);if (0 = Move(head)FreeShe(head);Gameover;break;if (temp < fen)Food(head);temp = fen;if (times > 50)times -=
4、10;else if (times > 20)times -=1;else;doGotoxy(19,21);printf(是否继续?Y/N:);scanf( %c, &m);system(cls); while (m != Y & m != y & m != n & m != N); while (m = Y | m = y);return 0;/绘图void Huitu(struct SHE *head)int flag = 1;while (head != NULL)Gotoxy(head -> x, head -> y);if (flag = 1)printf();else
5、if (flag = 2)printf();else;Gotoxy(Tx, Ty);printf( );flag+;head = head -> next;/用于光标的移动void Gotoxy(int x, int y) COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);/食物位置构造void Food(struct SHE *head)int flag = 0;struct SHE *pr = head;dosrand(GetTi
6、ckCount); /基于毫秒级的随机数产生办法,需头文件winbase.h, windows中设计程序可以用windows.hFx = (rand%40) * 2;Fy = (rand%12) * 2;flag = 0;pr = head;while (pr != NULL) /防止食物位置与蛇形重合if (pr -> x = Fx & pr -> y = Fy)flag = 1;break;pr = pr -> next; while (flag = 1);Gotoxy(Fx, Fy);printf();/用于蛇的移动int Move(struct SHE *head)char
7、 op;int tox, toy, flag, temp;if (kbhit) /kbhit函数用于检查当前是否有键盘输入,若有则返回一个非0值,否则返回0,需头文件conio.hop = getch;switch (op)case w:if (fang != 3)fang = 1;break;case d:if (fang != 4)fang = 2;break;case s:if (fang != 1)fang = 3;break;case a:if (fang != 2)fang = 4;break;default:break;switch (fang)case 1:toy = (hea
8、d -> y) - 1;tox = (head -> x);break;case 2:tox = (head -> x) + 2;toy = (head -> y);break;case 3:toy = (head -> y) + 1;tox = (head -> x);break;case 4:tox = (head -> x) - 2;toy = (head -> y);break;default:break;flag = Panduan(head, tox, toy);if (flag = 0)return 0; /game overelse if (fl
9、ag = 1)head = Link(head);fen+;else;while (head != NULL)temp = head -> x;head -> x = tox;tox = temp;temp = head -> y;head -> y = toy;toy = temp;head = head -> next;return 1;/用于食物与失败条件的判断int Panduan(struct SHE *head, int x, int y)int flag = 1;if (x < 0 | x > HENG - 1 | y < 0 | y > SH
10、U - 1)return 0; /撞墙while (head != NULL)if (head -> x = x & head -> y = y & flag != 1)return 0; /咬到自己flag+;if (head -> next = NULL)Tx = head -> x;Ty = head -> y;head = head -> next;if (x = Fx & y = Fy)return 1;/有食物return 2;/无异常/蛇身增长struct SHE *Link(struct SHE *head)struct SHE *p, *pr;pr =
11、 head;p = (struct SHE *)malloc(sizeof(struct SHE);if (p = NULL)printf(发生错误!);exit(0);if (head = NULL)head = p;elsewhile (pr -> next != NULL)pr = pr -> next;pr -> next = p;p -> x = Tx;p -> y = Ty;p -> next = NULL;return head;/释放内存void FreeShe(struct SHE *head)struct SHE *pr = NULL;while (
12、head != NULL)pr = head;head = head -> next;free(pr);/游戏失败画面,如果窗口大小不是80*25导致画面不协调可舍去void Gameover(void)int i,j;int aSHUHENG=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
13、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
14、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
15、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,1,0,1
16、,1,1,1,1,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0
17、,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1
18、,1,1,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1
19、,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1
20、,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
21、,0,0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
22、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
23、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
24、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
25、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Gotoxy(0, 0);for (i = 0; i < SHU; i+)for (j = 0; j< HENG; j+)if (aij = 0)printf( );elseprintf(0);Gotoxy(19, 20);printf(游戏最终得分是 %d 分!n, fen);