贪吃蛇
来源:互联网 发布:addictive drums mac 编辑:程序博客网 时间:2024/03/29 18:06
#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;}//////////////////////////////////////class move //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]= '*';}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;}/*Using 'w,s,a,d'to control direction!!!* * * * * * * * * * * * * * * * * * * ** ** ** ** * * * ** ** ** ** * ** ** ** ** ** ** ** ** ** ** ** * * * * * * * * * * * * * * * * * * **/
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 贪吃蛇
- 杭电1492-The number of divisors(约数) about Humble Numbers
- 字符串分割
- java设计模式---职责链模式
- vs2005与vs2008的转化
- 数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径
- 贪吃蛇
- 让爱变的有力量
- JQuery 模板与 css 设置不当造成 jQuery Ui 不能正常显示
- The Hound of the Baskervilles——1、The Case Begins
- document.all用法+js获取select标签中所选的值
- 互斥锁程序解析
- 命名空间namespace
- 设计模式的四个基本要素
- C# Windows 程序设计 学习笔记2 Paint事件