纯C语言写的贪吃蛇源码
2013-12-12 17:48
393 查看
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include <windows.h> #define N 225 struct Food { int x; int y; int yes;//1表示需要出现新食物,0表示已有食物。 }food; struct Snake { struct Food body ; int life;//1表示蛇死啦,0表示蛇活着。 int node;//蛇的节数。 char direction;//蛇自动运动的方向。 }snake; int score=0; int main() { FILE *p; int i,j,k,b; char map[16][16],c; p=fopen("E:\\file.txt","r"); if(p==NULL) { printf("error"); exit(1); } for(i=0;i<16;i++) { for(j=0;j<16;j++) { map[i][j]=fgetc(p); } fgetc(p); } snake.body[0].x=8;//蛇头。 snake.body[0].y=8; snake.body[1].x=8; snake.body[1].y=7; snake.body[2].x=8; snake.body[2].y=6; snake.node=3;//蛇的节数。 food.yes=1; srand(time(NULL)); snake.direction='d';//一开始蛇自动往右跑。 while(1) { if(kbhit()) { c=getch(); if(snake.life==1) break; if(c=='w' && snake.direction!='s') snake.direction='w'; else if(c=='a' && snake.direction!='d') snake.direction='a'; else if(c=='s' && snake.direction!='w') snake.direction='s'; else if(c=='d' && snake.direction!='a') snake.direction='d'; } if(food.yes==1)//需要随机出现新的食物。 { food.x=1+rand()%14; food.y=1+rand()%14; for(i=0;i<snake.node;i++) { if(food.x==snake.body[i].x && food.y==snake.body[i].y) { food.x=1+rand()%14; food.y=1+rand()%14; } } food.yes=0; } if(snake.body[0].x==food.x && snake.body[0].y==food.y) { // 蛇吃到食物了。 snake.node++;//蛇身长一节。 food.yes=1;//地图上需要出现新的食物。 system("cls"); score+=5; } for(i=snake.node-1;i>0;i--)//蛇往前移动。 { snake.body[i].x=snake.body[i-1].x; snake.body[i].y=snake.body[i-1].y; } switch(snake.direction)//蛇头方向。 { case'a': snake.body[0].y-=1; break; case'w': snake.body[0].x-=1; break; case'd': snake.body[0].y+=1; break; case's': snake.body[0].x+=1; break; } if(food.yes==0)//显示蛇,食物和围墙。 { system("cls"); for(i=0;i<16;i++) { for(j=0;j<16;j++) { b = 1; for(k=0;k<snake.node;k++) { if(i == snake.body[k].x && j == snake.body[k].y ) { if(k==0) printf("●");//蛇头。 else printf("□");//蛇身。 b=0; break; } } if(b==1) { if(i==food.x && j==food.y && i<15 && i>0 && j<15 && j>0)//食物。 printf("★"); else if(map[i][j]=='1') printf("■"); else printf(" "); } } putchar('\n'); } Sleep(250);//休眠函数。 } for(i=3;i<snake.node;i++)//判断蛇是否咬到自己。 { if(snake.body[i].x==snake.body[0].x && snake.body[i].y==snake.body[0].y) { snake.life=1; break; } } if(snake.life==1) { printf("蛇把自己咬死了\n"); printf("共得分:%d\n",score); break; } if(snake.body[0].x>=15 || snake.body[0].x<=0 || snake.body[0].y>=15 || snake.body[0].y<=0) { printf("蛇撞墙死了!\n"); printf("共得分:%d\n",score); snake.life=1; break; } } fclose(p); return 0; }
下面是file.txt:
1111111111111111 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1000000000000001 1111111111111111
相关文章推荐
- 贪吃蛇编写思路及C语言源码
- 细致的C语言写贪吃蛇教程+详细思路-适合新手附源码
- C语言之贪吃蛇游戏源码
- c语言贪吃蛇的源码,用'A''S''D''W'操作
- 贪吃蛇源码解析(面向对象)
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- 贪吃蛇----C语言实现
- 设计模式在C语言中的应用--读nginx源码
- 算法竞赛入门经典(第2版)-刘汝佳-第三章解题源码(C语言)
- 纯C语言:检索与周游遍历源码
- 70行C语言代码实现贪吃蛇
- C语言解析pcap文件得到HTTP信息实例(原创,附源码)
- C语言标准库 qsort bsearch 源码实现
- Linux下C语言实现C/S模式编程(附源码,运行截图)
- 采用easyX插件进行C语言编写的贪吃蛇,自带播放音乐
- 线性表链式存储的C语言实现(含源码)
- 学习C语言进阶课程———贪吃蛇项目
- C语言 小游戏之贪吃蛇
- Ubuntu C语言 curses 贪吃蛇 小游戏
- 第26天 贪吃蛇项目源码