贪吃蛇
来源:互联网 发布:惠州狼雨网络 编辑:程序博客网 时间:2024/04/30 11:15
#include <iostream.h>#include <windows.h>#include <stdlib.h>#include <conio.h>#include <time.h> //使用当前时间做种子;enum dir{up,down,left,right}; //枚举类型enum dir;//围墙;class Fence{public:void InitFence();void OutputF();public:char game[20][20];}f; //定义对象;//画框框;void Fence::InitFence(){for(int i=0; i<20; i++)for(int j=0; j<20; j++){if(i==0||i==19||j==0||j==19)game[i][j]= '*';else game[i][j]= ' ';}}//显示框框;void Fence::OutputF(){for(int i=0; i<20; i++){for(int j=0; j<20; j++)cout<<game[i][j]<<' ';cout<<endl;}}//蛇结点;class SnakeNode{private:int x,y;SnakeNode *prior,*next;public:void add_head(int x,int y);int get_x();int get_y();void delete_tail();}*head=NULL, *tail =NULL;//插入头结点;void SnakeNode::add_head(int x,int y){SnakeNode *q=new SnakeNode;q->x =x; q->y =y;q->next =head;q->prior =NULL;if(head) head->prior =q;head =q;if(!tail) tail =head;f.game[x][y]= '*'; //f对象可以在定义Fence类时定义; 且Fence类在SnakeNode类前定义;}int SnakeNode::get_x(){return x;}int SnakeNode::get_y(){return y;}//删除尾结点;void SnakeNode::delete_tail(){SnakeNode *p =tail;f.game[tail->get_x()][tail->get_y()]= ' ';//把尾结点的坐标表示的'*'置为空格;if(tail==head)tail= head= NULL;else{tail= tail->prior;tail->next= NULL;}delete p;}//move移动;class move{public:dir point; //枚举变量point: 控制方向;int food_x;int food_y;public:void moving();void change_point(char); //改变方向;void get_food();};void move::moving(){int a,b;a= head->get_x(); //取得头结点横坐标b= head->get_y(); //头结点纵坐标switch(point){case up: --a; break;case down: ++a; break;case left: --b; break;case right: ++b; break;}if(a==19||b==19||a==0||b==0){//判断是否撞墙;cout<<"game over!!!"<<endl;exit(0);}if(a==food_x && b==food_y){//吃food;head->add_head(a,b);get_food();}else{head->add_head(a,b); //插入头结点;head->delete_tail(); //删除尾结点;}}void move::change_point(char keydown){switch(keydown){case 'w': point= up; break;case 's': point= down; break;case 'a': point= left; break;case 'd': point= right; break;}}void move::get_food(){srand((unsigned int) time(NULL)); //做种子(程序运行时间); food_x= rand()%18+1; food_y= rand()%18+1;f.game[food_x][food_y]= '*';}//main();int main(){cout<<"Using 'w,s,a,d'to control direction!!!\n\n\n";//画框框和小蛇;move m;f.InitFence();head->add_head(4,3);head->add_head(4,4);head->add_head(4,5);m.get_food();f.OutputF();while (true){char keydown= getch(); //getch()返回键盘上读取的字符;包含头文件<conio.h>m.change_point(keydown);while(!kbhit()){ //判断有没有按键落下;system("cls"); //清屏函数;m.moving();f.OutputF();Sleep(200);}}return 0;}
0 0
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 2015年大一下第13周项目3-OOP版电子词典
- [BI项目记]-BUG创建
- JAVA发送http请求
- [BI项目记]-BUG处理
- RedHat Enterprise Linux 5 安装TFTP服务器
- 贪吃蛇
- ORA-12154: TNS: 无法解析指定的连接标识符 - 解决方案
- URAL 1792. Hamming Code (枚举)
- 四级作文的一些句子模板
- J2EE 中的几种常用模式?及对设计模式的一些看 法
- Warning: Build-tool 17.0.0 is missing AAPT at F:\adt-bundle-windows-x86\sdk\
- 理解arcgis server 10.1 服务发布与数据管理
- JSP注释和声明
- UITableView 表视图