| 查看: 1498 | 回复: 7 | ||
[求助]
大二编程废求助高手解答一下这个贪吃蛇的C++程序
|
|
看到一个贪吃蛇的C++程序 中间有几个地方不懂 求指教! #include #include #include #include #include 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[j]= '*'; else game[j]= ' '; } } //显示框框; void Fence::OutputF(){ for(int i=0; i<20; i++){ for(int j=0; j<20; j++) cout< cout< } //蛇结点; 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!!!"< } 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()返回键盘上读取的字符;包含头文件 m.change_point(keydown); while(!kbhit()){ //判断有没有按键落下; system("cls" ); //清屏函数 m.moving(); f.OutputF(); Sleep(200); } } return 0; } 问一下红字部分程序的设置目的 以及怎么运行和实现的……(简要的说 就是什么意思= =) 特别是结点那一块……动态数组和各种指针什么的 看着就头大……………… 多谢了 [ Last edited by 微尘、梦想 on 2011-8-27 at 20:06 ] |
» 猜你喜欢
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有6人回复
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
编程废又来求助关于哈弗曼树的C++代码……
已经有8人回复
【求助】用matlab编程,需要将数据自检分类(高手进来指点下)
已经有5人回复
【求助】c++如何发布独立的程序?
已经有15人回复
【求助】C++程序所需内存远远大于物理内存怎么办?
已经有8人回复
【求助】求将c语言改写为C++,求教高人啊!
已经有6人回复
【求助】自己写的C语言,突然想看看C++是什么,求助一下。还有C语言和C++有什么区别啊
已经有22人回复
【分享】C/C++常用算法设计方法,fortran其他语言编程也可以参考下
已经有8人回复
【分享】在大的项目中为什么不用c++[也顺便测试一下你的c++基本水平]
已经有5人回复
【求助】帮我编个程啊~C语言,C++,Matlab,VB...都行~
已经有14人回复
【求助】求c++编一个简单计算器的源代码
已经有6人回复


2楼2011-08-27 18:57:38
imyourkobe
铁杆木虫 (著名写手)
- 应助: 26 (小学生)
- 贵宾: 0.126
- 金币: 7471
- 散金: 6
- 红花: 9
- 沙发: 3
- 帖子: 1688
- 在线: 458.9小时
- 虫号: 183723
- 注册: 2006-02-13
- 专业: 计算机软件
【答案】应助回帖
★ ★
viking1992(金币+5): 虽然依旧不是很懂……不过谢谢了~都木有人理我TUT 2011-08-28 15:00:05
余泽成(金币+2): 谢谢参与应助! 2011-09-01 15:38:46
viking1992(金币+5): 虽然依旧不是很懂……不过谢谢了~都木有人理我TUT 2011-08-28 15:00:05
余泽成(金币+2): 谢谢参与应助! 2011-09-01 15:38:46
|
数据结构中的。 1)双向链表插入操作:插入到表头的处理 q->next =head; //把q对应结点插入到 head位置,即head为q后继。 q->prior =NULL;//q对应结点是表头了,对应的prior 应该为空。 if(head) head->prior =q;//如果已经存在头结点,要处理原头结点,把其前驱设置为q结点 head =q; //q作为新头结点 2)删除操作类似的。 |
3楼2011-08-28 12:15:06
imyourkobe
铁杆木虫 (著名写手)
- 应助: 26 (小学生)
- 贵宾: 0.126
- 金币: 7471
- 散金: 6
- 红花: 9
- 沙发: 3
- 帖子: 1688
- 在线: 458.9小时
- 虫号: 183723
- 注册: 2006-02-13
- 专业: 计算机软件
4楼2011-08-28 15:59:56

5楼2011-09-01 10:09:07
imyourkobe
铁杆木虫 (著名写手)
- 应助: 26 (小学生)
- 贵宾: 0.126
- 金币: 7471
- 散金: 6
- 红花: 9
- 沙发: 3
- 帖子: 1688
- 在线: 458.9小时
- 虫号: 183723
- 注册: 2006-02-13
- 专业: 计算机软件
6楼2011-09-01 13:42:56
文俊点点
木虫 (著名写手)
- 应助: 30 (小学生)
- 金币: 2529.5
- 散金: 1796
- 红花: 1
- 帖子: 1151
- 在线: 500.1小时
- 虫号: 1219128
- 注册: 2011-03-02
- 性别: GG
- 专业: 文艺美学

7楼2011-09-01 18:21:02

8楼2011-09-04 08:48:46













回复此楼