推箱子游戏毕业论文.doc
山东交通学院C语言课程设计推箱子游戏毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日课 程 设 计 任 务 书题 目 推箱子游戏 系 (部) 信息工程系 专 业 计算机科学与技术 班 级 信息093 学生姓名 xxx 学 号 090810311 4 月 6 日至 4 月 10 日 共 1 周指导教师(签字) 系 主 任(签字) 2010年 4 月 12 日一、 设计内容及要求【规则】本游戏的目的就是把所有的箱子都推到目标位置上。箱子只能推动而不能拉动。一次只能推动一个箱子。二、 设计原始资料经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道!三、设计完成后提交的文件和图表1计算说明书部分程序设计分析总体来说,这次推箱子游戏软件遵循的依旧是从上到下,逐步细化的编程思想。我也是在设想好大体轮廓后,从最基础的功能开始,不断地调试、补充、检查直到最后达到预定目的。这样的设计不仅仅可以使自己不至于太过急躁,而且还可以使自己的思路清晰,便于对程序整体性把握,使自己对编程过程的每一步都很清晰明了。给自己的修改与添加留有了足够的扩展空间,这样的设计可以使编程者不至于在反复重读程序上浪费太多时间,而且每一步都有具体而明确的目标。我想这对我以后的编程工作会有很大的影响,而这也正是我认为本次课程设计最大的收获。2图纸部分:进c操作游戏开始提示界面输入tt=dt=a进b输出结束进at=bt=c结束或按d程序流程图 是 否 是 否 是 否 是 否四、进程安排第一天:初步分析程序,并对程序需要用到的函数及工具进行分析;第二天:分析程序各个模块及功能并编出大体轮廓;第三天:初步完善程序功能及模块,分析各种情况;第四天:进一步分析完善程序、补充功能,修复漏洞;第五天:最后检查程序,准备答辩。五、主要参考资料1.C程序设计(第三版), 谭浩强 编,清华大学出版社2.Turbo C 2.0实用大全, 常玉龙等 编写,北京航空航天大学出版社3.C游戏编程从入门到精通,浦滨著, 北京希望电子出版社4.C函数实用手册, 张曜 郭立山 吴天著, 冶金工业出版社成 绩 评 定 表口试(答辩)成绩报告成绩总评成绩摘 要1週間、訓練学校学生手-能力、我C言語開催。教師生徒助借、私最終的倉庫番終。、私、経験持、我協力重要性理解。気軽学期本当継続的改善上昇行、試運転徐私改善。自分同時間深洞察力、常改善、魂作成。1週間、実際私自分知識適用指定。、我最愛熱意影響与。私以上教科書知識持得1週間展開。私勉強定数拡大完了。关键字:、C言語、倉庫番目 录前言91推箱子游戏软件预览101.1推箱子游戏软件发展之路101.2程序结构流程图101.3程序总体模块分析112推箱子游戏软件函数分析112.1程序中的函数组成及其功能112.2各函数实现原理113程序各界面截图及说明123.1开始界面123.2a、b或c对应界面及计时和限时功能123.3选d后进入界面144程序相关源代码及相应注释144.1输出函数144.2移动函数(仅以向左代表)164.2.1当输入d时164.2.2向左移动164.3设置背景函数184.4主函数20致谢22参考文献23前 言随着科技的不断发展,世界对计算机的依赖逐渐加深。而编程作为指导计算机工作的的一门学科也正在逐步被发展完善。作为信息技术的重要部分,编程无疑是学习计算机科学路途中的的重要组成部分。而作为一个编程初学者,说实在话这是编程生涯的第一次课程设计,因此难免会有许多不尽如人意的地方,希望各位读者能够以宽阔的胸怀给予谅解。在课程设计之初选课题时,我和我的组友为了给自己一个挑战而选择了推箱子游戏软件开发。本来按我们的能力编一个游戏软件其实是有一定难度的,但最终我们通过自己一个星期的努力,终于将它调试通过并初步完善,心中真的很高心。因为我们学习是调试环境多是在 VC 6.0 下,所以我们放弃了Win TC 下的编程,这其实也为我们下一步的C+课程的学习做好铺垫。要说程序中有令自己遗憾的地方那就应该说没能用到图形驱动函数,在此希望读者能够谅解。在此谨向那些在我编程过程中为我提供帮助的老师和同学表示真挚的感谢和敬意。1 推箱子游戏软件预览1.1 推箱子游戏软件发展之路在刚接到这个程序时我的要求还仅仅只是要求能够推着箱子到达目的地,其他功能还没敢考虑。可现在重新回顾才发现原来随着不断地调试与补充,最终使程序向丰满和功能完善发展。由刚开始的移动问题到后来的推箱子问题再到后来到目的地后变化,进而达到限时和获胜提示。这之间有太多的努力与学习,直到答辩完成才发现原来在无形之间自己已经获得了太多太多。我想这也正是一个正常编程员的成长史。所以在本文之初想用这几段文字与大家一块分享自己的成功喜悦及经验,希望能对大家能有一定帮助1.2 程序结构流程图结束并计算用时通过时间到按回车键计时后回车开始选择d选择b选择界面选择c进入游戏c选择a进入游戏a进入游戏b中途退出按d键并回车1.3 程序总体模块分析本程序总体大致可分为三大模块,即读入、判断调整、输出。(1)读 入 :即设置读入操作把使用者的输入操作符读入程序,并定义变量储存起来为下一步的判断做好准备;(2)判断调整:这一操作为下一步的调整二维数组内容提供依据,通过大量的判断语句对所有可能出现的情况提供相对应的唯一操作,使用户能顺利使用软件并起到规范化输入的目的当输入不明字符时不作处理。判断结束后,执行相应操作改变数组内容从而改变输出内容,使用户顺利进行下一步操作。(3)输 出 :通过刷屏后重新输出从而使背景得以改变,进而等待用户下一步的输入操作。2 推箱子游戏软件函数分析2.1 程序中的函数组成及其功能(1)输出函数(show函数):输出转义背景;(2)移动函数(move):改变二维数组内部数据并判断结束与否;(3)设置背景函数(map):设置游戏场景提供基础游戏数据;(4)其他系统函数:略。2.2 各函数实现原理(1) 移动函数:移动函数又可分为上、下、左、右四种移动方式。在移动的时候还会遇到许多情况,如遇到墙不能移动、不能同时推动两个箱子、进入目的地后需要改变图标、离开目的地后要还原图标等问题。在可操作情况下设置相应操作,在不可操作情况下设置空执行从而不进行任何操作(也起到规范化输入作用)。(2) 输出函数:通过for语句套用从而达到输出二维数组的效果,另外通过if语句判断转义进而实现输出更加人性化的背景,从而达到更高的可用性。(3) 设置背景函数:通过二维数组初始化对游戏背景进行设置,并在其内部设计移动函数调用从而达到每一关都是一个独立的个体,可以单独实现计时、限时、刷屏等功能,另外还可以输出相应的提示界面。从而为下一步添加场景提供了宽阔的空间。(4) 计时、限时、刷屏和调色函数:提供了更加人性化的游戏界面,提高了使用者的游戏兴趣。使dos界面不再仅是黑白的、毫无生气的操作窗口。3 程序各界面截图及说明3.1 开始界面通过按abcd四个键来选择是进入特定游戏还是退出。3.2 a、b或c对应界面及计时和限时功能第一层游戏界面,按方向键移动 游戏结束,下部有提示单个共用时数, 星号(代人)去推箱子; 提高游戏乐趣。同时有提示限制时间30秒。第二层游戏界面,按方向键移动 游戏结束,下部有提示单个共用时星号(代人)去推箱子; 数,提高游戏乐趣。同时有提示限制时间30秒。第三层游戏界面,按方向键移动 游戏结束,下部有提示单个共用时星号(代人)去推箱子; 数,提高游戏乐趣。同时有提示限制时间30秒。提示游戏已超时按回车键回到主界面重新选择游戏。3.3 选d后进入界面回到主界面后继续按d,结束总游戏并计算游戏过程总共用时。4 程序相关源代码及相应注释4.1 输出函数void show(char b99)printf("tttt*n");printf("tttt 推箱子游戏 ");printf("ntttt*n");printf("tttt 人: 墙:ntttt 箱子: 目的地:ntttt 按 d 键 退出游戏ntttt 限时30秒!");printf("ntttt*n");for(int i=0;i<9;i+) /使用循环将地图转换输出printf("tttt ");for(int k=0;k<9;k+)if(bik='#')printf("");elseif(bik=3)printf("");elseif(bik=5)printf("");elseif(bik=1)printf("");elseif(bik='!')printf("");elseprintf("%c ",bik);printf("n");printf("tttt*n");4.2 移动函数(仅以向左代表) 4.2.1 当输入d时void move(char c99,int *x,int *y,int X,int Y,int A,int B,int N,int M,char *t)*t=getch();if(*t='d')/遇到d返回4.2.2 向左移动if(*t=75)if(c*x*y-1='#'|c*x*y-1=5&&c*x*y-2=5|c*x*y-1=5&& c*x*y-2='!')/遇到墙或推两个箱子elseif(c*x*y-1='!')/把箱子推出目的地if(c*x*y-2!=0)elsec*x*y=0;*y-=1;c*x*y=1;c*x*y-1=5;elseif(c*x*y-1=5&&c*x*y-2!='#')/推箱子 if(c*x*y=cXY|c*x*y=cAB|c*x*y=cNM) /推着箱子离开目的地 c*x*y=3; *y-=1; c*x*y=1; c*x*y-1=5; else c*x*y=0; *y-=1; c*x*y=1; c*x*y-1=5; elseif(c*x*y-1=5&&c*x*y-2='#')/推不动箱子 else if(c*x*y-1=cXY|c*x*y-1=cAB|c*x*y-1=cNM)/进到目的地 c*x*y=0; *y-=1; c*x*y=1; else if(c*x*y=cXY|c*x*y=cAB|c*x*y=cNM) /离开目的地 c*x*y=3; *y-=1; c*x*y=1; else /走到空地 c*x*y=0; *y-=1; c*x*y=1; if(cXY=5|cAB=5|cNM=5)/箱子推到目的地c*x*y-1='!'4.3 设置背景函数void map1()time_t p,q,o;time(&p);int i=4,j=4,m=6,n=2,t=1,k=3;system("cls");/刷屏system("color 1E");int x=1,y=7;char z,a99= /*为背景设置初始资料*/'#','#','#','#','#','#','#','#','#','#','#','#', 3 , 0 , 0 , 0 , 1 ,'#','#','#', 0 , 0 , 0 ,'#', 0 ,'#','#','#', 0 , 0 ,'#', 0 , 0 , 0 , 0 ,'#','#', 0 , 5 , 0 , 3 , 5 , 5 , 0 ,'#','#','#','#','#', 0 , 0 ,'#','#','#','#','#', 3 , 0 , 0 , 0 ,'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'show(a);/调用输出函数loop:move(a,&x,&y,i,j,m,n,t,k,&z);if(aij='!'&&amn='!'&&atk='!')system("cls");/刷屏show(a);printf("tttt YOU ARE WIN!n");time(&q);printf("ttttt 用时%.3d秒n",q-p);printf("tttt*回车重 新选择*ntttt");getch();elsetime(&o);if(z='d')return;if(o-p>30)loop1:system("cls");/刷屏printf("tttt时间已过请重新回车选关!");int g=getch();if(g=13)/判断是否为回车符return;elsegoto loop1;system("cls");/刷屏show(a);/调用输出函数goto loop;4.4 主函数void main(int argc,char*argv)time_t a,b;time(&a);system("color 4E");loop1:system("cls");/刷屏printf("nnnnnntttt欢迎进入推箱子游戏nntttt 请按a b c选择游戏nntttt 按 d 键 结束");int t=getch();if(t='d')printf("nttt ");elseif(t='a')map1();goto loop1;if(t='b')map2();goto loop1;if(t='c')map3();goto loop1;elseprintf("nntttt 请重新输入:");goto loop1;time(&b);printf("nnnntttt 游戏总共用时%.3d秒nttt ",b-a);getch();/等待读取回车符以结束程序致 谢在此报告结尾之际,谨感谢张老师及各位同学的帮助,让我能够在实践中学到书本上没有的知识。也感谢学校提供给我们这次宝贵的实践机会,让我们可以在实践中寻找经验与能力。怀念与老师和同学在一起的每一刻,期待下一次的合作早日到来!参考文献1.C程序设计(第三版), 谭浩强 编,清华大学出版社2.Turbo C 2.0实用大全, 常玉龙等 编写,北京航空航天大学出版社3.C游戏编程从入门到精通,浦滨著, 北京希望电子出版社4.C函数实用手册, 张曜 郭立山 吴天著, 冶金工业出版社学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名): 年 月 日学位论文出版授权书本人及导师完全同意中国博士学位论文全文数据库出版章程、中国优秀硕士学位论文全文数据库出版章程(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在中国博士学位论文全文数据库、中国优秀硕士学位论文全文数据库中全文发表和以电子、网络形式公开出版,并同意编入CNKI中国知识资源总库,在中国博硕士学位论文评价数据库中使用和在互联网上传播,同意按“章程”规定享受相关权益。论文密级:公开保密(_年_月至_年_月)(保密的学位论文在解密后应遵守此协议)作者签名:_ 导师签名:_年_月_日 _年_月_日独 创 声 明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名: 二一年九月二十日 毕业设计(论文)使用授权声明本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定) 作者签名: 二一年九月二十日致 谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并