版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 贪吃蛇 专 业:计算机科学与技术 姓 名: 学 号: 指导教师: 李 晓 虹 2016 年 1 月 10 日课程设计报告模块内容:(1) 系统需求分析利用C+实现方块方块控制、显示更新、游戏记分、游戏等级以及贪吃蛇控制,直接由玩家通过键盘控制,游戏区域的方块部件根据玩家具体键盘的操作左右移动。(2) 总体设计屏幕中央有一个矩形“容器”,输入“1-5”开始游戏后,贪吃蛇开始移动通过上下左右移动。(3) 详细设计1.游戏过程中,当在矩形“容器”中,出现一个贪吃蛇时,必须在游戏方块的预览区域中移动。2.贪吃蛇一旦碰到圆点就增长一格
2、,一碰到边缘正方形游戏就结束。3.一旦游戏结束按y结束或esc退出。 系统调试/ ConsoleApplication1.cpp : 定义控制台应用程序的入口点。/#include "stdafx.h"#include <iostream>#include<Windows.h>#include<time.h>#include<stdlib.h>#include "conio.h"/using namespace std;const int UP=72;/上const int DOWN=80;/下const
3、int LEFT=75;/左const int RIGHT=77;/右int map2238;/当map=1时表示有食物。int n;/用来记录蛇身长度,初始为3节struct snakeint x;/蛇身所在横坐标int y;/蛇身所在纵坐标int direction;/行走方向p200;void gotoxy(int x,int y); /移动坐标void qiang();/绘制墙和启动画面int game(int guan);/游戏运行void qp();/清除屏幕int _tmain(int argc, _TCHAR* argv)qiang();int guan;to:while(1)
4、gotoxy(30,3);cout<<"请输入关数(1-5)关:" cin>>guan;cin.get(); if(guan<6&&guan>0) break;/判断关数是否溢出gotoxy(30,4);cout<<"输入错误!"gotoxy(0,0);/cout<<" 第"<<guan<<"关"/在顶端显示当前关数int time;switch (guan) case 1:time=1000;break;/case
5、 2:time=800;break;/case 3:time=500;break;/ 根据关数来设定蛇的移动速度case 4:time=300;break;/case 5:time=150;break;/while(1) qp(); for(int i=0;i<22;i+) for(int j=0;j<38;j+) mapij=0;/将数组初始化为0 n=3;/用来记录蛇身长度,初始为3节 if(game(time) goto to; else gotoxy(30,6); cout<<"按Y重新开始,按其它键退出" int ch=_getch();
6、if(!(ch=121|ch=89) break;/y=121,Y=89 return 0;void gotoxy(int x,int y) /移动坐标COORD coord; coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );void qiang()/绘制墙gotoxy(26,0);cout<<"!按确定键可以暂停或开始游戏"/gotoxy(0,1);cout<<"-贪吃蛇-"cout<<&
7、quot; " cout<<" "cout<<" 游戏规则: "cout<<" 碰到边上的蛇会死 "cout<<" 每隔二十秒蛇的速度会加快 " cout<<" 控制方向键上下左右,吃到蛇的长度加一 "cout<<" 按Esc键可以重新选关 "cout<<" "cout<<" " cout<<" "c
8、out<<" " cout<<" "cout<<" " cout<<" " cout<<" "cout<<" " cout<<" "cout<<" "cout<<" "cout<<" "cout<<" "cout<<" &qu
9、ot;cout<<""gotoxy(0,0);void qp()for(int i=2;i<24;i+) gotoxy(2,i); cout<<" "/清除屏幕int game(int time)int i,x=0,y=0,food=0;/food为记录吃了多少食物int ch=RIGHT;p0.x=6; /p0.y=10; /p0.direction=RIGHT; /p1.x=4; /p1.y=10; / 初始化蛇所在位置和移动方向 p1.direction=RIGHT; /p2.x=2; /p2.y=10; /p2.di
10、rection=RIGHT; /p3.x=4;/p3.y=4;/记录蛇尾的信息p3.direction=RIGHT;/p4.x=4;/p4.y=4;/记录蛇尾的信息p4.direction=RIGHT;/gotoxy(62,0);/cout<<"已用时间:"/在顶端显示时间gotoxy(76,0);/cout<<"秒"/ gotoxy(10,0); cout<<"吃过的食物:"/在顶端显示吃过的食物数clock_t t1=clock()/CLOCKS_PER_SEC;/记录当前程序已用时间while
11、(1) int count=0;clock_t t;clock_t t2=clock()/CLOCKS_PER_SEC;/记录游戏开始时程序已运行的时间gotoxy(72,0);t=t2-t1;if(t%20=0&&count<=6) time-=10; count+;cout<<t;/在顶端显示游戏开始时间 if(mapxy!=1)/判断食物是不是被吃掉 gotoxy(21,0);cout<<food;/在顶端显示吃过的食物数food+;/将食物数加1 srand(t2%33);/将随机数种子初始化y=rand()%38;/产生随机横坐标 sra
12、nd(t2%44);/将随机数种子初始化x=rand()%22;/产生随机纵坐标 mapxy=1;/随机出现食物gotoxy(2*(y+1),x+2);/定位到食物出现的位置cout<<""/打印出食物gotoxy(pn-1.x,pn-1.y);/移到蛇尾所在地cout<<" "/清除上个循环的蛇尾pn-1.x=pn-2.x;/pn-1.y=pn-2.y;/记录新的蛇尾信息pn-1.direction=pn-2.direction;/gotoxy(p0.x,p0.y);/转到蛇头位置cout<<""
13、/打印蛇头for(i=1;i<n-1;i+) gotoxy(pi.x,pi.y);/转到当前蛇身位置cout<<""/打印蛇身 Sleep(time);/控制蛇的移动速度for(i=n-2;i>0;i-)pi.x=pi-1.x;/改变蛇身横坐标pi.y=pi-1.y;/改变蛇身纵坐标pi.direction=pi-1.direction;/改变蛇身方向if(_kbhit()/判断是否按键ch=_getch();if(ch=224)/判断按的是不是方向键 ch=_getch(); if(ch+p0.direction!=152)/判断按键是否是反方向
14、p0.direction=ch;/如果不是就改变蛇头方向else if(ch=13)/判断用户是否暂停escclock_t a,b;a=clock()/CLOCKS_PER_SEC;/记录当前程序已用时间gotoxy(30,4); cout<<"已暂停,按确定键开始"while(1)if(_kbhit()&&_getch()=13)/判断是否按键且是否解除暂停 gotoxy(30,4); cout<<" "/清除"已暂停,按确定键开始"这行字 break; b=clock()/CLOCKS_PE
15、R_SEC;/记录当前程序已用时间t1+=(b-a);/将暂停所用时间减去else if(ch=27)/判断是否重新选关return 1;/是的话返回1break; switch (p0.direction) case UP:p0.y-=1;break;/改变蛇头坐标,移动蛇头case DOWN:p0.y+=1;break;/改变蛇头坐标,移动蛇头case LEFT:p0.x-=2;break;/改变蛇头坐标,移动蛇头case RIGHT:p0.x+=2;break;/改变蛇头坐标,移动蛇头if(p0.x=0|p0.x=78|p0.y=1|p0.y=24)/当蛇撞到墙时gotoxy(30,5);cout<<"游戏结束!a"break;for(i=1;i<n-1;i+)if(p0.x=pi.x&&p0.y=pi.y)/判断蛇是否撞到自己gotoxy(30,5); cout<<"游戏结束!a" i=n-1;/结束当前循环if(i=n) break;/如果蛇撞到自己了就结束循环if(p0.x=2*(y+1)&&p0.y=x+2)/判断蛇是否吃到食物+n;/让蛇长度加1map
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电路分析基础试题》课件
- 《微观经济学》考试试卷试题及参考答案
- 《专业英语(计算机英语)》复习题
- 八下期末考拔高测试卷(5)(原卷版)
- 《诚邀创业伙伴》课件
- 2012年高考语文试卷(安徽)(解析卷)
- 父母课堂与教育理念分享计划
- 购物中心导购员服务总结
- 水产养殖行业销售工作总结
- 娱乐场馆卫生要素
- 北京联合大学《数据挖掘B》2023-2024学年第一学期期末试卷
- 2024年中国大数据企业排行榜V9.0(大数据产业白皮书)-中国民营科技促进会
- 2025年统编版高考政治一轮复习:选择性必修1、2、3共3册必背考点知识点汇编
- 货物交接单和交接合同
- 《灭火应急疏散预案》课件
- 【高分复习笔记】孙广仁《中医基础理论》(第9版)笔记与考研真题详解
- 开题报告:高质量数字教材建设机制及政策研究
- PE工程师工作总结
- 期末复习试题 (试卷)-2024-2025学年四年级上册数学人教版
- 七年级语文下册专项练习知识(对联)
- MOOC 知识图谱导论-浙江大学 中国大学慕课答案
评论
0/150
提交评论