《c语言贪吃蛇制作过程》由会员分享,可在线阅读,更多相关《c语言贪吃蛇制作过程(16页珍藏版)》请在金锄头文库上搜索。
1、 C语言贪吃蛇制作过程流程图如下:具体代码如下#include head.h#include#include#include#include#include#include#pragma comment(lib,winmm.lib)void Page();/显示界面void Mps();/播放音乐void Check();/检查空格void Stopm();/停止音乐void shows2();/画背景void SetSnake();/设置蛇的位置void DrawSnake();/画蛇void SnakeMove();/蛇的移动void DeleteSnake();/销毁蛇void Chan
2、geDir();/蛇随方向动起来bool SnakeDie();/判断蛇是否死亡void ProduceFood();/随机产生食物void SnakeGrow();/蛇变长void Score();/分数void Page()/显示界面 printf(nnnn);printf(tttt欢迎来到贪吃蛇世界n);printf(tttt 按空格开始游戏n);printf(tttt w,a,s,d,控制方向n);/*void Mps()/播放声音PlaySound(E:霍旭祥st.wav ,NULL,SND_FILENAME | SND_ASYNC);*/void Check()/检测空格char
3、input;while(1) input = _getch();/按空格键停止播放音乐 if( =input) break; /*void Stopm()/停止音乐PlaySound(NULL,0,0);/PlaySound(NULL,0,0);*/画背景void shows2()int i=0;for(i=0;i=1;i-)if(0=Snakei1)continue;/过滤非法蛇身/把前一个节点赋值给后一个节点Snakei0=Snakei-10;Snakei1=Snakei-11;Snakei2=Snakei-12;/处理蛇头Snake02=SnakeDir;/蛇头方向if(west=Sna
4、ke02|east=Snake02)/判断东西Snake01+=Snake02;/Snake01为列else/南北Snake00+=Snake02;/Snake00为行DrawSnake();void DeleteSnake()/销毁蛇int i=0;for(i=0;Snakei0!=0;i+)strncpy(&ground2Snakei0Snakei1 , ,2);void ChangeDir()/蛇随方向动起来if(GetAsyncKeyState(W)if(south!=Snake02)SnakeDir=north;else if(GetAsyncKeyState(S)if(north!
5、=Snake02)SnakeDir=south;else if(GetAsyncKeyState(A)if(east!=Snake02)SnakeDir=west;else if(GetAsyncKeyState(D)if(west!=Snake02)SnakeDir=east;bool SnakeDie()/判断蛇是否死亡if(west=Snake02|east=Snake02)/判断东西/蛇头的下一个是方块就死亡if(0=strncmp(&ground2Snake00Snake01+Snake02,2)return false;else/南北if(0=strncmp(&ground2Sna
6、ke00+Snake02Snake01,2)return false;return true;void ProduceFood()/随机产生食物/产生随机目标 int i;/行和列 bool flag=true; if(false=ProFood)/判断是否产生新的食物; return ; srand(unsigned int)time(NULL); while(1) g_line=rand()%16+2; g_row=rand()%18+2; for(i=0;Snakei0!=0;i+) if(g_line=Snakei0&g_row=Snakei1) flag=false; break;
7、if(true=flag) break; /坐标画食物 strncpy(&ground2g_lineg_row*2,2); ProFood=false;void SnakeGrow()/蛇变长/蛇头坐标与食物坐标相同if(g_line=Snake00&g_row*2=Snake01)if(east=Snakeg_Snakelen2)Snakeg_Snakelen+10=Snakeg_Snakelen0;Snakeg_Snakelen+11=Snakeg_Snakelen1-2;Snakeg_Snakelen+12=Snakeg_Snakelen2;else if(west=Snakeg_Sna
8、kelen2)Snakeg_Snakelen+10=Snakeg_Snakelen0;Snakeg_Snakelen+11=Snakeg_Snakelen1+2;Snakeg_Snakelen+12=Snakeg_Snakelen2;else if(south=Snakeg_Snakelen2)Snakeg_Snakelen+10=Snakeg_Snakelen0-1;Snakeg_Snakelen+11=Snakeg_Snakelen1;Snakeg_Snakelen+12=Snakeg_Snakelen2;else if(north=Snakeg_Snakelen2)Snakeg_Snak
9、elen+10=Snakeg_Snakelen0+1;Snakeg_Snakelen+11=Snakeg_Snakelen1;Snakeg_Snakelen+12=Snakeg_Snakelen2;g_Snakelen+;ProFood=true;g_Score+;void Score()COORD rd;rd.X=55;rd.Y=8;/设置光标位置SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),rd);/打印printf(分数);rd.X=56;rd.Y=9;/设置光标位置SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),rd);/打印printf(%d,g_Score);int main(void) Page();/显示页面 /Mps();/播放音乐 Check(); /Stopm();/按空格键停止播放音乐 system(cls);/清屏; /游戏界面 SetSnake();/设置蛇的位置 shows2(); while(1) system(cls);ProduceFood(); SnakeGrow();/蛇变长 ChangeDir();/改变方向; if(false=SnakeDie()/判断死亡 printf(