下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 c语言吃金豆游戏程序设计实验报告

c语言吃金豆游戏程序设计实验报告.doc

c语言吃金豆游戏程序设计实验报告

姐没你想得那么懦弱
2017-11-12 0人阅读 举报 0 0 暂无简介

简介:本文档为《c语言吃金豆游戏程序设计实验报告doc》,可适用于综合领域

c语言吃金豆游戏程序设计实验报告实训题目:吃金豆游戏程序设计院系:计算机科学与工程学院专业:软件工程(单招)学号:姓名:刘泽中指导教师:周荣实训地点:N开课时间:至学年第学期常熟理工学院计算机科学与工程学院制常熟理工学院学生姓名刘泽中实训报告成绩评语:指导教师(签名)年月日说明:指导教师评分后实训报告交院办公室保存。刘泽中目录实训的目的和任务实训目的实训任务开发环境硬件环境软件环境PACMAN游戏功能描述与分析功能描述:游戏软硬件最低标配设施:需求分析总体功能要求程序用到的知识点游戏各功能流程图程序详细分析部分函数功能描述结构体的定义部分函数源码分析程序运行界面图示个人总结实训报告要求与排版字号:(实训报告排版打印统一用A(Xcm)格式。(标题用小二号黑体加粗正文用四号宋体。行距为固定值磅。(页面上边距cm下边距cm左边距cm右边距cm(实训报告页码从正文页面起计算。页码字号选用小四号粗黑体并居中。常熟理工学院刘泽中实训的目的和任务实训目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识理论联系实际进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。使学生在掌握C语言的基本语法的基础上能够更好的理解和运用其解决实际问题。在实践实习操作中让学生对结构化程序设计有更进一步深刻的认识与了解提高学生的实践操作能力。实训任务游戏基本功能:游戏屏幕是一个NxN的网格其中某些格子是固定的墙壁其他网格是可以通行的开始的时候放满了金豆。游戏开始后玩家通过键盘的方向键控制游戏主角PACMAN移动经过的地方金豆被吃掉同时加分。游戏屏幕上还有一个怪物它会随机地移动。PACMAN如果碰到怪物游戏失败。如果吃掉了全部金豆则游戏成功。附加功能游戏主菜单:开始游戏、查看成绩排行榜、退出游戏等项目。每次游戏成功结束要求输入用户名并记录成绩到文件scoretxt。如果已有同名用户且本次得分更高则替代之。在显示排行榜时按得分高低排序。使用不同的关卡即使用多个场景文件scene(n)txt在开始游戏时选择。加入声音效果,吃到金豆时WinLost时显示不同的声音。开发环境硬件环境常熟理工学院软件实验室机房九章楼N机房号机器软件环境常熟理工学院系统开发工具:WINTC是一个TCWINDOWS平台开发工具。该软件使用TC为内核提供Windows平台的开发界面因此也就支持Windows平台下的功能列如剪切、复制、粘贴和查找替换等功能。而且在功能上也有它独特特色列如语法加亮、C内嵌汇编、自定义扩展库的支持等。并提供一组相关辅助工具令你在编程过程中更加游刃有余如虎添翼。本软件主要用于编写C语言程序。软件开发程序:C语言。C语言是目前国际上比较流行的计算机高级编程语言之一因其简洁、使用方便且具备强大的功能而受到编程人员的普遍青睐。它既适合作为系统描述语言也可以用来编写系统软件还可以来编写应用软件。用C语言来编写Pacman这个游戏有较大优势:C语言具有各种各样的数据类型并引入了指针概念使得程序效率更高C语言还包含很广泛的运算符另外C语言具有强大的图形功能支持多种显示器和驱动器而且计算功能、逻辑判断能力也比较强大。操作系统:WindowsxP操作系统。PACMAN游戏功能描述与分析功能描述:游戏菜单:可通过上下键选择开始游戏、选择关卡、查看最高分排名以及退出功能。开始游戏:本游戏预设共八个关卡每个关卡难度均不同。通过各种条件的判断玩家可以通过上下左右键控制Pacman小人四处移动同时地图中也有一个小妖怪随机的四处移动玩家必须躲避小妖怪并四处移动吃掉图中的金豆。若玩家不幸碰撞到小妖怪Monster游戏结束显示Gameover界面并显示分数若你所获得的分数大于排行榜中最后一名的分数则游戏界面会让你输入姓名计入排行榜。若全部金豆吃完进入下一关。若八关全通过则显示Win界面显示所获得的分数并计入排行榜。Gameover界面有再玩一次和退出两个按钮如果选择再玩一次那么游戏重新开始(从第一关开始)若选择退出按钮则游戏返回到菜单主界面。Win界面同Gameover界面刘泽中选择关卡:当进入选择关卡页面后屏幕显示出八块地图的缩略图并有相关功能按钮。玩家可以按键盘的上下左右键选择关卡如若选择可按Enter键选中地图并进入游戏。另外分别有F载入地图功能、F、F或PgUp、PgDn进行缩略图的翻页功能、F显示帮助功能和F或ESC的回到主菜单功能。F载入地图功能:因为本游戏的默认地图有限玩家可以按格式自己画制地图并保存txt格式。然后选择F进入输入路径的页面输入完正确的路径后按回车键就可以载入并玩起自己编写的地图啦~F、F或PgUp、PgDn进行缩略图的翻页功能:由于屏幕显示大小有限所以一幅画面只能显示四幅地图还有幅地图则可以通过F、F或PgUp、PgDn键进行翻页查看。同时这也方便了日后添加多个地图的问题也是程序的美化度大大提高。F帮助功能:每一款游戏不管难易程度如何都有个帮助界面。同样Pacman游戏也需要对于新手来说是必不可少的前提是亲你要看的懂英文喔(Tc软件不支持显示中文啦。)。F或Esc键退出功能:用来回到主菜单界面的一个基本功能排行榜功能:本游戏使用C语言文件的读写及排序实现了游戏的排行榜功能。排行榜默认显示玩过本游戏并取得高分的前八个高分记录他们的姓名及对应的分数(姓名是英文的哟~)前三名红名显示以示他们很牛逼~退出功能键:退出整个游戏。游戏软硬件最低标配设施:软件配备:TurboCwindowsxp等硬件配备:内存:MB及以上外存:GB及以上CPU:奔及以上常熟理工学院需求分析用C语言实现系统实现Pacman游戏的基本功能:吃豆、躲怪、过关实现游戏的菜单界面实现游戏排行榜功能实现游戏中加入声音功能。总体功能要求Pacman游戏界面主要显示开始游戏选择关卡查看排名及退出功能。开始游戏后Pacman吃金豆加分并过关卡碰到怪物游戏结束。游戏结束后输入姓名载入排行榜并可在排行榜中查看到分数的排名及对应的姓名。若玩家不想从第一关开始玩而是想自由选择其中关卡或载入自己的地图则可通过选择关卡来实现。程序用到的知识点数组:一维数组、二维数组以及字符数组和字符串的定义和引用函数:函数的定义、调用、嵌套调用、递归调用、局部变量及全局变量指针:指针变量的定义和引用、指针与数组、指针与字符串、指针与函数结构体和链表:结构体类型变量的定义和引用、结构体与数组、结构体与指针、结构体指针处理链表文件:文件的打开与关闭、文件的读写操作图形模式:作图、画图以及动画技术游戏各功能流程图程序主界面流程图运行程序进入主界面退出游戏开始游戏选择关卡查看排行榜刘泽中开始游戏流程图开始游戏调用gamplay函数进入主循环判断是否有键按下是判断是否为Esc键否判断按键并执行相应动作否是输出动作声音吃掉金豆并加分否是判断是否撞到妖怪否判断是否吃掉所有金豆是Level重新载入地图调用gamePlay进入下一关游戏结束输出分数判断分数是否能进排行榜是常熟理工学院用户输入姓名Pacman按原有方向自动行走返回主界面选择关卡模块流程图选择重新开始游戏或退出选择进入选择关卡模块显示所有地图的缩略图显示菜单部分判断是否有键按下是判断是否是退出键否判断按键并执行相应操作返回游戏主界面查看排行榜流程图进入排行榜界面打开文件读取数据显示数据判断是否有键按下是关闭文件返回游戏主界面刘泽中退出程序流程图(略)程序详细分析部分函数功能描述voidinit()*用于图形模式初始化*voidinitPacman(Face*face,intr,intc,intsize,intx,inty)*pacman的一些初始值设置(坐标初始位置大小等)*voidinitMonster(Monster*monster,intx,inty,enumDirectiondir)*Monster的一些初始设置(坐标运动方向)*voiddrawBlock(inti,intj)*用于画整个地图盘面*voiddrawBall(inti,intj)*用于画地图上的金豆*voiddrawWall(inti,intj)*画地图中的墙*voiddrawGame()*调用上面三个函数完成整个地图的绘制*voiddrawPacman(Face*face)*画主角Pacman*voiddrawmonster(inti,intj,intcolor)*画第二男主角Monster*voiddelays()*设置延时用于处理动画效果易修改*voiddrawCaidan()*用于绘画选择关卡里面的提示菜单界面*voidmoveFace(Face*face)*移动第一男主角Pacman*voidmoveMonster(Monster*monster)*移动第二男主角Monster*voidclearFace(inti,intj)*清除第一男主角Pacman的图案*voidclearMonster(inti,intj)*清除第二男主角Monster的图案*voidchangeDir(Face*face,enumDirectiondir)*调整Pacman运动方向*voidsrandMonster(Monster*monster)*为Monster随机产生一个方向*voidWin()*显示赢了的画面并输出分数*voidgameOver()*显示输了的画面并输出分数*voidDoError()*输了的声音*voidDoWin()*赢了的声音*voidDoOK()*第一男主角Pacman改变一次方向的声音*voidgamePlay()*整个游戏的主要核心函数*voidshowLevel()*在屏幕上输出第几关的函数*常熟理工学院voidloadLevel()*读取相应等级的地图函数*voidHelp()*选择关卡里面F键对应产生的帮助信息*voidsoftHighscore()*排行榜的显示*voidchooseKard()*选择关卡主界面*voidshowMenu()*程序运行开始前显示五彩的游戏名称Pacman*voidMenu()*游戏的主菜单*intmain()*主函数用于调用init及Menu来实现整个程序的运转*结构体的定义Pacman的定义:typedefstruct{intr,cintstartX,startYintisLiveenumDirectiondir}Face*定义Pacman成员包括坐标起始位置死活的标志以及运动方向*Monster的定义:typedefstruct{intxintyenumDirectiondir}Monster*定义Monster成员包括坐标运动方向*部分函数源码分析图形模式初始化函数voidinit(){intgdriver,gmodegdriver=DETECTinitgraph(gdriver,gmode,"c:tcbgi")cleardevice()*清屏*}文件的读取函数voidloadFile(){刘泽中FILE*fpinti,k=,m=if((fp=fopen("c:ranktxt","r"))==){*判断文件是否能打开*printf("cannotopenfile!")exit()}for(i=i<i){*格式化读取函数*fscanf(fp,"sd",highScorenamek,highScorescorem)}fclose(fp)*关闭文件*}对文件内的信息进行排序voidsortHighscore(){*运用选择法进行排序*inti,k,jinttempchartempfor(i=i<i){k=ifor(j=ij<j)if(highScorescorej>highScorescorek)k=jtemp=highScorescorek*拷贝分数到中间变量*strcpy(temp,highScorenamek)*拷贝姓名到中间变量*highScorescorek=highScorescoreistrcpy(highScorenamek,highScorenamei)highScorescorei=tempstrcpy(highScorenamei,temp)}saveHighscore()*调用saveHighscore()函数将排好序的函数写入文件*}画地图界面函数voiddrawGame(){常熟理工学院inti,j,sizetill=*用于计算地图中金豆的总个数*for(i=i<i)for(j=j<j)strij=strij*拷贝地图用于gamePlay里面的判断*for(i=i<i)for(j=j<j)if(strij==)*如果是就是路否则就是墙*drawBlock(i,j)*画路*elsedrawWall(i,j)*画墙*size=imagesize(ORGX*W,ORGY*H,ORGX*WW,ORGY*HH)buff=(void*)malloc(size)*计算缓存大小把格子存入缓存区用于清除*getimage(ORGX*W,ORGY*H,ORGX*WW,ORGY*HH,buff)for(i=i<i)for(j=j<j)if(strij==){*如果是路的话*drawBall(i,j)*画金豆*till*金豆的总个数加*}}画第一男主角PacmanvoiddrawPacman(Face*face){intx,yx=ORGXface>c*WW*计算男主角的中心坐标*y=ORGYface>r*WWsetfillstyle(,RED)setcolor(RED)if(face>dir==RIGHT){*默认方向右*clearFace(face>r,face>c)*擦除Pacman*pieslice(x,y,,,)*画扇形*delays()*延时制作动画效果*pieslice(x,y,,,)*画圆制作动画效果*}else{刘泽中setcolor(RED)circle(x,y,)*画圆*floodfill(x,y,RED)*填充红色*delays()*延时*setfillstyle(,WHITE)setcolor(WHITE)switch(face>dir){caseUP:*上*pieslice(x,y,,,)breakcaseDOWN:*下*pieslice(x,y,,,)breakcaseLEFT:*左*pieslice(x,y,,,)break}}}Pacman的移动(Monster移动与之相仿故略)voidmoveFace(Face*face){switch(face>dir){*if语句用来判断是否为墙*caseUP:if(strface>rface>c==)face>rbreakcaseDOWN:if(strface>rface>c==)face>rbreakcaseLEFT:if(strface>rface>c==)face>cbreakcaseRIGHT:if(strface>rface>c==)face>cbreak}}Pacman的清除(Monster清除与之相仿故略)voidclearFace(inti,intj){*将存入缓存的那一块图取出来覆盖*putimage(ORGXj*W,ORGYi*H,buff,COPYPUT)}随机产生怪物方向的函数常熟理工学院voidsrandMonster(Monster*monster){ints,isrand(time())*随机数*s=rand()*随机产生一个在~之间的数*switch(s){case:monster>dir=UPbreak*方向为上*case:monster>dir=DOWNbreak*方向为下*case:monster>dir=LEFTbreak*方向为左*case:monster>dir=RIGHTbreak*方向为右*}}游戏中产生的声音函数voidDoWin(){*DoError()、DoOK()函数原型与之相仿故略*sound()delay()*延时*sound()delay()sound()delay()sound()delay()sound()delay()sound()delay()sound()delay()sound()delay()nosound()*关闭声音*}开始游戏(整个游戏的核心)函数voidgamePlay(){intkey,i=,j=intsizeFacemyface*定义结构体*Monstermymonstercleardevice()*清屏*setbkcolor(CYAN)*设置背景色*drawGame()*画整个地图*刘泽中loadFile()initMonster(mymonster,fap,fap,UP)*初始化Monster*drawmonster(mymonsterx,mymonstery,)*绘画初始的那个Monster*initPacman(myface,fap,fap,W,ORGX,ORGY)*初始化Pacman*drawPacman(myface)*绘画初始的Pacman*gotoxy(,)*输出分数*printf("SCORE")gotoxy(,)printf("d",score)sumball=*用于统计被吃掉的金豆数*while(myfaceisLive!=){*当Pacman还活着*if(bioskey()==){*如果没有按键*delay()*延时毫秒*clearFace(myfacer,myfacec)*清除当前位置的Pacman*if(mymonsterx==myfacermymonstery==myfacec)*如果Pacman的位置跟Monster的位置相等时*gameOver()*游戏结束*if(sumball==till){*如果吃掉的豆子个数和等于总豆子*DoWin()*胜利的声音*level*关卡等级加准备进入下一关*myfaceisLive=*退出while循环*}if(strmyfacermyfacec==){*如果该位置有金豆*strmyfacermyfacec=该金豆变为无*sumball*吃掉金豆个数加*score=*分数加*gotoxy(,)*输出分数*printf("SCORE")gotoxy(,)printf("d",score)if(sumball==till){*第二次判断是否吃完*levelmyfaceisLive=DoWin()常熟理工学院}}clearMonster(mymonsterx,mymonstery)*清除图像*if(strmymonsterxmymonstery==)*如果该位置没被吃掉原豆子被擦出*drawBall(mymonsterx,mymonstery)*重画金豆*moveMonster(mymonster)*移动Monster*drawmonster(mymonsterx,mymonstery,)*画Monster*srandMonster(mymonster)*随机产生一个妖怪的方向*if(mymonsterx==myfacermymonstery==myfacec)*如果Pacman和Monster坐标相同*gameOver()*游戏结束*moveFace(myface)*移动Pacman*if(mymonsterx==myfacermymonstery==myfacec)gameOver()*再次判断以防BUG*drawPacman(myface)*画Pacman*}else{*否则有按键的情况*key=bioskey()*获取键值*DoOK()*声音*switch(key){caseUP:if(strmyfacermyfacec==)*判断是否墙*changeDir(myface,UP)breakcaseDOWN:if(strmyfacermyfacec==)changeDir(myface,DOWN)breakcaseLEFT:if(strmyfacermyfacec==)changeDir(myface,LEFT)breakcaseRIGHT:if(strmyfacermyfacec==)changeDir(myface,RIGHT)breakcaseESC:Menu()*退回主界面*caseSPACE:getch()*暂停*}}}刘泽中}显示等级函数voidshowLevel(){charsinti=cleardevice()*清屏*setbkcolor(BLACK)*设置背景色*settextstyle(,,)while(i<){*循环*setcolor(rand())*随机产生一种颜色*sprintf(s,"Leveld",level)outtextxy(,,s)*打印等级到屏幕上*delay()*延时毫秒*i}选择关卡界面实现函数voidchooseKard(){intkey,sizeintpf=intpg=intflag=charsloadLevels()size=imagesize(,,,)*计算大小存入缓存*buff=(void*)malloc(size)getimage(,,,,buff)orgx=orgy=*整个地图的位置*level=*等级*setcolor(WHITE)setfillstyle(,WHITE)rectangle(orgx,orgy,orgx*mwmw,orgy*nwnw)rectangle(orgx,orgy,orgx*mwmw,orgy*nwnw)常熟理工学院floodfill(orgx,orgy,WHITE)*填充*setcolor(BLUE)settextstyle(,,)outtextxy(,,"LEVEL")while(flag!=){key=bioskey()switch(key){caseUP:if(pf==)pf=*第一幅图*elseif(pf==)pf=elseif(pf==)pf=elseif(pf==)pf=breakcaseDOWN:if(pf==)pf=*第三幅图*elseif(pf==)pf=elseif(pf==)pf=elseif(pf==)pf=breakcaseLEFT:if(pf==)pf=elseif(pf==)pf=elseif(pf==)pf=*第二幅图*elseif(pf==)pf=breakcaseRIGHT:if(pf==)pf=elseif(pf==)pf=*第四幅图*elseif(pf==)pf=elseif(pf==)pf=breakcaseESC:caseF:flag=Menu()break*退出循环*caseF:casePgUp:if(pg!=){pg=*第一页*level=*等级从开始*loadLevels()}breakcaseF:casePgDn:if(pg!=){pg=*第二页*level=*等级从开始*loadLevels()}breakcaseF:Help()break*帮助函数*caseF:EnterPath()break*输入路径函数*caseENTER:if(pg==){level=pf*第一页的*levelAlone()刘泽中loadMap()*读地图*showLevel()*显示地图等级*gamePlay()*开始游戏*if(sumball==till)Win()flag=*退出循环标志*}elseif(pg==){level=pf*第二页的*levelAlone()loadMap()*读地图*showLevel()gamePlay()if(sumball==till)*判断赢了没*Win()flag=}break}setcolor(BLACK)setfillstyle(,BLACK)rectangle(orgx,orgy,orgx*mwmw,orgy*nwnw)rectangle(orgx,orgy,orgx*mwmw,orgy*nwnw)floodfill(orgx,orgy,BLACK)*画选择地图的外方框*switch(pf){case:orgx=orgy=break*地图位置坐标*case:orgx=orgy=breakcase:orgx=orgy=breakcase:orgx=orgy=break}setcolor(WHITE)setfillstyle(,WHITE)rectangle(orgx,orgy,orgx*mwmw,orgy*nwnw)rectangle(orgx,orgy,orgx*mwmw,orgy*nwnw)floodfill(orgx,orgy,WHITE)常熟理工学院putimage(,,buff,COPYPUT)*取出缓存图像覆盖*setcolor(BLUE)settextstyle(,,)if(pg==){sprintf(s,"LEVELd",pf)*输出选择地图的等级*outtextxy(,,s)}elseif(pg==){sprintf(s,"LEVELd",pf)*第二页的地图等级*outtextxy(,,s)}}getch()}主界面函数voidMenu(){intf=intp=charsintkeyintm本处略去作图代码(比较长)while(f){*While循环实现光标上下滚动的效果*switch(m){case:setcolor(GREEN)settextstyle(,,)outtextxy(,,"START")*Start未选中绿色*settextstyle(,,)setcolor(WHITE)*其余未选中的为白色下同*outtextxy(,,"CHOOSELEVEL")outtextxy(,,"HIGHSCORE")outtextxy(,,"EXIT")breakcase:setcolor(GREEN)刘泽中settextstyle(,,)outtextxy(,,"CHOOSELEVEL")settextstyle(,,)setcolor(WHITE)outtextxy(,,"START")outtextxy(,,"HIGHSCORE")outtextxy(,,"EXIT")breakcase:setcolor(GREEN)settextstyle(,,)outtextxy(,,"HIGHSCORE")settextstyle(,,)setcolor(WHITE)outtextxy(,,"START")outtextxy(,,"CHOOSELEVEL")outtextxy(,,"EXIT")breakcase:setcolor(GREEN)settextstyle(,,)outtextxy(,,"EXIT")settextstyle(,,)setcolor(WHITE)outtextxy(,,"START")outtextxy(,,"CHOOSELEVEL")outtextxy(,,"HIGHSCORE")break}key=bioskey()switch(key){caseUP:if(m<)m=elsembreak*可实现从最下面可再按下回的最上面*caseDOWN:if(m>)m=elsembreakcaseENTER:if(m==){f=p=}*f为while循环的结束标志*elseif(m==){f=p=}elseif(m==){f=p=}elseif(m==){f=p=}break}常熟理工学院}if(p==){loadLevel()}*开始游戏先读取等级*elseif(p==){chooseKard()}*选择关卡*elseif(p==){softHighscore()}*查看排行榜*elseexit()}主函数intmain(){init()*图形模式初始化*showMenu()*显示游戏名称*Menu()*调用主界面函数*cleardevice()*清屏*getch()closegraph()*关闭图形模式*}程序运行界面图示程序开始界面刘泽中游戏主界面开始游戏主界面常熟理工学院选择关卡界面图a选择关卡界面图b输入地图路径界面刘泽中排行榜界面图等级显示界面图常熟理工学院个人总结这次的实训为期十天算是很长很长的了第一天我看到了实训要求后觉得很简单一看那些地图不就是一些些个小方块拼成的嘛于是当天下午我就画按要求画出了棋盘当天晚上实现了Pacman吃金豆的功能第二天早上加入了妖怪基本就已经完成主要任务。但是事实上并没有我想象中那么简单当天下午同学那我程序试玩一下发现程序有许多BUG比如说妖怪会吃金豆妖怪会吃妖怪妖怪会生产金豆Pacman碰到妖怪有时死不掉有时死的掉等等BUG于是第二天下午带晚上我都是在找BUG修复BUG的。修复BUG比写程序困难多了至少我是这样认为的有时候代码里的“=”号不小心写成了“==”号这种细小的错误很难查出来而这两个符号执行出来的效果是完全不一样的。修复BUG的过程中我深深感悟到了程序的严谨性以及好的算法的重要性。当我完成了基本功能后我并没有停留而是去慢慢实现老师列出的附加功能。十天说长也很长说短也不短。十天的实训不但锻炼了我们的编程水平而且提高了我们的坚韧性。如果能在一个找了两个个小时都找不出来的BUG面前心如止水那么你就成功了。每每遇到一个新的BUG我都会很平静的去对待慢慢看仔细研究。我相信这次实训中所遇到的问题、困难我们都用心去解决了在我们往后的编程道路上一定会有所帮助。在实训过程中对所学的知识点有了更加深刻的理解通过实践操作对图形体统的初始化和关闭、各种画图函数的使用、结构体的定义及使用、数组的定义及使用、函数嵌套及调用和键盘操作这些重要知识点进行了巩固达到了实训的基本目的同时在编写代码的过程中也体会到了C语言具有的语句简洁、使用灵活、执行效率高等特点。遇到一些不会的知识点比如说sound函数我就去查阅资料上网找列子去想办法弄懂它然后把它加入到我的程序里来让我的程序更加完美。这种自主学习的方法极大的促进了自己的动手能力及独立思考能力开发了自己的逻辑思维能力培养了分析问题、解决问题的能力。深刻体会到“没有做不到的只有想不到的”的寓意。当遇到一些难题能亲自动手解决它你会发现你会很有成就感会很快乐。遇到不会的自主学习学成之后又是一种满足感这些带给我快乐的都一步一步加深我对编程的兴趣。在程序中我主要用到的结构体与链表其实像这种小游戏完全可以用全刘泽中局变量、全局数组来做但是我用的是结构体结构体可以再一个结构中声明不同的数据类型而且结构体变量是可以相互复制的这些都是数组做不到的。而且使用结构体大大节省了内存空间提高了效率。并且为了程序后续的一些开发提供了更方便的修改方法比如说在后续程序开发中若想多添加两个怪物就可以直接定义结构体后面添加一句Monstermonstern然后在操作Monster的过程中通过一个for循环然后直接使用monsterix,monsteriy来控制Monster的坐标这样就能实现多个妖怪的运行。在后续的开发中可以设置更难的关卡添加更多的妖怪对于结构体来说是非常方便的。在整个程序中我最自豪最欣慰的就是选择关卡那个界面我自认为做的很好但是也是有很多不足的地方的。在我原本设想的程序里可以通过鼠标来控制翻页、帮助、读取地图这些功能键不需要键盘而且在游戏中没关都会随机产生一个小苹果吃掉小苹果就可以反吃妖怪等等这些其实都很简单但由于时间关系都没有一一实现这也是比较遗憾的地方。另外整个程序虽然我界面比较丰富且实现了更多的功能但是程序并不是很严谨算法也不是很精而且主要的playGame做的很普通没在游戏中加入更多的功能。实训过程中不仅是考察一个人的编程能力更多的还是考察一个人的耐心。天转瞬即逝我们付出了多少我们也就收获了多少在这次实训中我感悟很多我也学到了很多我感到很满足。实训不仅锻炼了我们的编程能力而且对于我们所学的知识进行了查漏补缺搞清楚了以前C语言中不懂的知识点使我更加了解掌握C语言。我想这次实训对我们而言是宝贵的更是无法替代的我很感激老师和学校能提供我们这样一个机会让我们可以学到专业知识以外的东西这对我们来说不单单是怎么样处理问题而是培养了我们坚持不懈的精神让我们更加有信息和勇气去面对将来更大的挑战~六:程序源代码(略)如有疑问请联系q版权所有违版必究~

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/34

c语言吃金豆游戏程序设计实验报告

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利