算法与数据结构课程设计报告书(吃金子游戏).doc_第1页
算法与数据结构课程设计报告书(吃金子游戏).doc_第2页
算法与数据结构课程设计报告书(吃金子游戏).doc_第3页
算法与数据结构课程设计报告书(吃金子游戏).doc_第4页
算法与数据结构课程设计报告书(吃金子游戏).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法与数据结构课程设计报告书姓名 * 班级 数字媒体技术(2)班 学号 * 指导教师 * 盐城师范学院信息科学与技术学院问题描述:“吃金子”游戏 在地下某处藏有金子(g),有一个精灵()寻找并获取金子。游戏者通过输入四个方向键指挥精灵沿该方向移动去吃金子(每输入一次方向键只移动一步);金子是随机地、每隔一段时间出现在不同的位置,游戏者需在金子消失前到达才能获取它。游戏者的成绩是看其在一定时间内获取的金子数量计算。设计的软、硬件环境: Windows 7 virtual c+6.0 Intel (R) Core(7M) i5-2450M CPU 2.50MZ AMD Radeon HD 7650M Intel (R) HD Graphics 3000ADT(数据结构与算法)设计与功能模块:typedef structint i,j;/数组中的行列坐标 int gold_hour;/金子出现的时间int gold_minute;int gold_second;int gold_time;GOLD;/金子结构体typedef structint x,y;/数组中的行列坐标int direction;/精灵运动方向 1上 2下 3左 4右PLAYER;/精灵结构体GOLD gold100;/金子数组PLAYER player;/玩家int goldnum=0;/金子的个数char frame1020;/游戏框架 游戏界面退出游戏开始游戏帮助手册返回菜单超快速度正常速度蜗牛速度退出游戏 显示分数退出游戏重新开始重选速度程序输入与结果输出: 实验结果分析及收获: 经过一系列的努力,我实现了实验要求的内容,并对吃金子游戏进行了一些优化和改善。现程序编写调试完成,该程序可以实现玩家对游戏的一些操作,选择开始游戏、帮助手册和退出游戏。在选择开始游戏后玩家可以选择游戏的速度,一共设置了三种快慢不同的速度,供不同用户游戏。游戏开始,玩家可以通过按动方向键使精灵朝各个方向移动吃到金子。金子的出现频率和消失时间和当初选择的游戏速度有关,对于精灵运动到边缘部分,我也考虑到了,如当精灵运动到上边缘的位置时,继续向上运动就从下边缘的相同位置出来,以此类推。游戏时间一共30秒,时间到后,游戏自动进行算分并显示,同时玩家可以继续选择继续游戏、重新选择速度或者直接退出游戏。该游戏设计比较完整,较为人性化,对不同玩家有不同的速度选择,界面也有一定的美化,让玩家更加舒适的进行游戏。在该游戏设计编写的过程,我遇到一些难题,如方向键的识别,金子的随机出现和不同速度时的不同操作。但在解决这些问题的过程中我也收获了不少。一个程序的编写不仅需要功能的实现,还有一个很重要的方面就是效率的高低。我在初步编写完程序后,又对程序进行了一定的优化,争取做到高效率运行程序。当出现问题时,我会仔细比对程序多次运行调试,实在解决不了我就去网上搜相似的错误从而解决自己的问题。每一次的程序编写都是对自我逻辑能力和编程能力的一种提升,这是平时的学习生活中比较不常有的,所以这是一次锻炼自我的好机会。其次,长段的程序要一一分析过去,也增加了自己的耐心,不会那么容易烦躁了。此外,游戏是给人玩的,因此应该针对玩家的需求设计出较为人性化的代码,方便玩家的使用,而对界面的一定美化也是必须的。可以把自己当做是玩家,这样才可以知道当你去玩这个游戏的时候你有什么想法和需求,从而更有针对性的去修改代码。最后,在结合其他相似的案例,对程序进行进一步的升级和提高,让程序更加完美!在经过这两周的课程设计,我对编程更加的熟手了,有些小问题我能立马发现和解决,增加了实践经验,这是个难得的经历,我认为像这样的课程设计可以适当增加,这对我们的专业技能的提高是个很好的机会。附录(源程序清单)#include#include#include#include#include#include #include using namespace std;void display();/开始界面void gameover();/游戏结束void help();/帮助页面 介绍该游戏void gameplay();/开始游戏void table();/金子的出现void print();/框架打印void speed();/游戏速度选项SYSTEMTIME ct;/时间int score=0,key,guanka=0;/分数计算typedef structint i,j;/数组中的行列坐标 int gold_hour;int gold_minute;int gold_second;int gold_time;GOLD;/金子结构体typedef structint x,y;/数组中的行列坐标int direction;/精灵运动方向 1上 2下 3左 4右PLAYER;/精灵结构体GOLD gold100;PLAYER player;int goldnum=0;/金子的个数char frame1020;/游戏框架void main()/主函数display();void display()/开始界面 char chioce;system(cls);/清屏cout*欢迎进入吃金子游戏*endl;cout Welcome To The Eat Gold Gameendlendlendlendlendlendl;cout * (char)1 1.开始游戏(play) (char)1 * endlendl;cout * (char)1 2.帮助手册(help) (char)1 * endlendl;cout * (char)1 3.退出游戏(exit) (char)1 * endlendlendl;coutchioce;switch(chioce)case 1:speed();/速度选择gameplay();/进行游戏break;case 2:help();/帮助文档break;case 3:exit(0);/退出break; default:display();/输入出错重新显示界面void table()/产生金子int a=0,b=0;goldnum+;srand(time(0); /设置产生随机数的种子,以当前时间为种子更有随机性a=goldgoldnum.i=rand()%8+1;/产生随机数b=goldgoldnum.j=rand()%14+1;/产生随机数if(a=0 |b=0 |a=9 | b=15)/金子产生在边框上就重新生成金子 a=goldgoldnum.i=rand()%8+1;/产生随机数 b=goldgoldnum.j=rand()%14+1;/产生随机数GetLocalTime(&ct);/获取时间 goldgoldnum.gold_hour=ct.wHour;goldgoldnum.gold_minute=ct.wMinute;goldgoldnum.gold_second=ct.wSecond;goldgoldnum.gold_time=(goldgoldnum.gold_hour*3600+goldgoldnum.gold_minute*60+goldgoldnum.gold_second);/存储金子出现的时间frameab=30;/出现金子void print()int a=0,b=0;coutendlendlendl;for(a=0;a=9;a+)/行 cout ;for(b=0;b=15;b+)/列 cout frameab ;/打印出游戏框架 并进行一定的排版美化if(b=15) coutendl;void gameplay()/进行游戏 int second,second2,minute,minute2,hour,hour2,minus=30,a=0,b=0,k=0;score=0,goldnum=0; for(a=0;a=9;a+)/行for(b=0;b=15;b+)/列if(a=0 |b=0 |a=9 |b=15) frameab=*;/打印框架 else frameab= ;frame11=15;/精灵所在处player.x=1;/初始化精灵的行坐标player.y=1;/初始化精灵的列坐标table();/产生金子 GetLocalTime(&ct);/获取时间 second=ct.wSecond;minute=ct.wMinute; hour=ct.wHour; while(minus!=0) GetLocalTime(&ct);/获取时间 second2=ct.wSecond;/获取当前秒数minute2=ct.wMinute;/获取当前分钟数hour2=ct.wHour; minus=(hour2*3600+minute2*60+second2)-(hour*3600+minute*60+second);/剩余时间的计算minus=30-minus;coutendlendl 剩余时间:minusendl;cout 当前得分:score;for(k=1;k=goldnum;k+) if(hour2*3600+minute2*60+second2)-goldgoldnum.gold_time=4-guanka)/关卡1 3秒出现一个金子 7秒消失 关卡2 2秒出现一个金子 5秒消失 关卡3 1秒出现一个金子 3秒消失 table(); if(hour2*3600+minute2*60+second2)-goldk.gold_time)=9-2*guanka) if(goldk.i=0 & goldk.j=0) framegoldk.igoldk.j=*; else framegoldk.igoldk.j= ; /end for if(kbhit() key=getch();/判断方向键 if(key=72) frameplayer.xplayer.y= ; if(player.x=1) player.x=9; player.x=player.x-1; frameplayer.xplayer.y=15;/精灵改变位置 player.direction=1;/向上走 if(key=77) frameplayer.xplayer.y= ; if(player.y=14) player.y=0; player.y=player.y+1; frameplayer.xplayer.y=15;/精灵改变位置 player.direction=4;/向右走 if(key=75) frameplayer.xplayer.y= ; if(player.y=1) player.y=15; player.y=player.y-1; frameplayer.xplayer.y=15;/精灵改变位置 player.direction=3;/向左走 if(key=80) frameplayer.xplayer.y= ; if(player.x=8) player.x=0; player.x=player.x+1; frameplayer.xplayer.y=15;/精灵改变位置 player.direction=2;/向下走 for(k=0;k=goldnum;k+) if(player.x=goldk.i & player.y=goldk.j) goldk.i=NULL;goldk.j=NULL;score+; /end if /end for/end if是否有键入system(cls);/清屏print(); /end while时间是否到了 gameover();void speed()/游戏速度选项 char chioce; system(cls);/清屏 coutendlendlendlendlendlendlendl;cout * (char)1 1.蜗牛速度 (char)1 * endl;cout 3秒出现一个金子 7秒消失endlendl; cout * (char)1 2.正常速度 (char)1 * endl;cout 2秒出现一个金子 5秒消失endlendl; cout * (char)1 3.加速速度 (char)1 * endl;cout 1秒出现一个金子 3秒消失endlendl;chioce=getch();switch(chioce)/选择游戏速度 case 1: guanka=1;break;case 2: guanka=2;break;case 3: guanka=3;break;default :guanka=2;/选择错误默认正常速度void help()/帮助 char chioce;system(cls);/清屏coutendlendlendlendl 游戏方法如下:endl;/介绍游戏玩法和相关信息cout 1.方向键控制精灵运动吃金子endl;cout 2.在金子未消失之前吃掉才算吃到endl;cout 3.最终得分以你吃到的金子数量为准,游戏时长为30秒endl; cout 其中圆圈表示精灵所在处,三角表示金子所在处endlendl; cout 该游戏版权归盐城师范学院所有endl;cout 开发者:数字媒体12(2)班 徐溢璇 endl;cout 返回菜单(b) 退出游戏(q)endl;chioce=getch(); if(chioce=b | chioce=B)display();else exit(0);void gameove

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论