贪吃蛇(C语言版)
来源:互联网 发布:消防编程软件 编辑:程序博客网 时间:2024/04/29 06:59
还有比较多的bug,但是没空更改了,这只是写给自己看的。以后用到了就能直接拷过来。
#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <time.h>#define MAXLINE32#define MAXROW16#define LEFT0#define RIGHT1#define UP2#define DOWN3void gotoxy(int x,int y){HANDLE h1; COORD pos;pos.X=x;pos.Y=y;h1=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(h1,pos); //printf("hello world!\n");}int getdir(int *p){char c=getch();if(c == 'w' && *p != DOWN)return UP;else if(c == 's' && *p != UP)return DOWN;else if(c == 'a' && *p != RIGHT)return LEFT;else if(c == 'd' && *p != LEFT)return RIGHT;else if(c == 'p'){gotoxy(8,4);printf("!pause!");while(getch() == 'b'){gotoxy(8,4);printf(" ");return *p;}}//else //return *p;}void initsnak(){int i;gotoxy(0,0);for(i=0;i<MAXLINE;i++){gotoxy(i,0);printf("-");gotoxy(i,MAXROW);printf("-");}for(i=0;i<MAXROW;i++){gotoxy(MAXLINE,i);printf("|");gotoxy(0,i);printf("|");}gotoxy(MAXLINE+5,3);printf("方向键:w,s,a,d:分别是上、下、左、右;\n");gotoxy(MAXLINE+5,4);printf("规则说明:\n");gotoxy(MAXLINE+5,5);printf("蛇头不能触碰四周墙壁和蛇身!否则游戏结束\n");gotoxy(MAXLINE+5,6);printf("暂时没有增加选关功能,\n");gotoxy(MAXLINE+5,7);printf("是从最容易开始,难度慢慢增加!\n");gotoxy(MAXLINE+5,9);printf("快乐游戏,快乐学习\n");}int main(){int X[255],Y[255],foodx,foody,score,level;int lens ,dir,xa,ya,i,lastkey,totalscore;S:X[0]=10;Y[0]=6;X[1]=9;Y[1]=6;dir = RIGHT; totalscore=0;lens=2;score=0;level=0;xa=0;ya=0;initsnak();srand((int )time(0));foodx=rand()%MAXLINE;foody=rand()%MAXROW;if(foodx <= 0 ||foodx >= MAXLINE){foodx=1;}if(foody <= 0 || foody >= MAXROW){foody = 1;}gotoxy(foodx,foody);printf("O");while(1){lastkey=dir;if(kbhit()){//读取键值dir=getdir(&lastkey);//printf("dir = *%d*",dir);}//runing(X,Y,&len);for(i=0;i<lens;i++){gotoxy(X[i],Y[i]);printf("X");}if(level >25)level =25;Sleep(300-level*10);gotoxy(X[lens-1],Y[lens-1]);printf(" ");if(X[0] == foodx && Y[0] == foody){foodx=rand()%MAXLINE;foody=rand()%MAXROW;if(foodx == 0 ||foodx == MAXLINE){foodx=1;}if(foody == 0 || foody == MAXROW){foody = 1;}gotoxy(foodx,foody);printf("O");lens++;score++;totalscore++;if(score >= 2){score = 0;level++;}}for(i=lens-1;i>0;i--){X[i]=X[i-1];Y[i]=Y[i-1];}gotoxy(10,20);printf("head(x,y)=(%d,%d)",X[0],Y[0]);gotoxy(10,21);printf("totalscore: %d , level: %d",totalscore,level+1);if(dir == LEFT){X[0]--;}else if(dir == RIGHT){X[0]++;}else if(dir == UP){Y[0]--;}else if(dir == DOWN){Y[0]++;}//判断结束,还有判断是否和当前长度的蛇身有碰撞for(i=lens-1;i>0;i--){if(X[0] == X[i] && Y[0] == Y[i]){end = 1;}}if(flag == 1 || \X[0] >= (MAXLINE) || Y[0] >= (MAXROW) || X[0] <=0 ||Y[0] <=0){gotoxy(11,4);printf("game over\n");gotoxy(8,5);printf("play agin:(Y or N)\n");if(getchar() == 'Y'){system("cls");goto S;}else return 0;}}return 0;}
- 贪吃蛇(C语言版)
- c语言版贪吃蛇
- C语言版贪吃蛇游戏
- c语言版贪吃蛇《课程设计》
- C语言版贪吃蛇:第一部分
- C语言版贪吃蛇:第二部分
- C语言版贪吃蛇:第三部分
- C语言版贪吃蛇:第四部分
- 第一次独立完成的小游戏(贪吃蛇c语言版)
- 纯c语言版的贪吃蛇,linux终端运行
- 用队列写贪吃蛇(C语言版)
- 教你实现简单的贪吃蛇------C语言版
- 贪吃蛇C实现
- 贪吃蛇C代码
- C代码 贪吃蛇
- [C++] Console 贪吃蛇
- c 贪吃蛇
- C版贪吃蛇
- GCC版本导致的Floating Point Exception
- 使用复杂绑定完成 CheckBoxList 和 RadioButtonList 控件的绑定
- Access ado字段名问题
- DDMS工具使用
- Delphi学习笔记四——语句
- 贪吃蛇(C语言版)
- 【NPC】12、汉密尔顿回路规约到汉密尔顿路径
- Global.asax 文件是什么
- 创建数据库表 province 和 city ,使用 dropdownlist 的绑定,实现省市列表级联。
- 简明 Vim 练级攻略
- awk使用总结
- 贪吃蛇(C++版)
- 23种设计模式之外观模式
- win7下安装 office 2007提示"在安装过程中出错" 解决方法