程序设计的课程设计.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计的课程设计

目录一、绪论2二、设计目的2游戏规则2三、实现31.库函数32.全局变量33.地图的设计34.图片加载函数35.界面初始化36.查找人物坐标函数47.移动函数48.判断游戏是否结束49.游戏过程函数510.计步函数511.选择关卡函数512.界面随机化函数5四、调试5调试一5调试二6调试三6五、结论6绪论经典的推箱子游戏是一个来自日本的古老游戏,它是一款极具趣味的益智游戏,在游戏过程中训练了玩家的逻辑思考能力。在一个狭小的仓库中,要求把木箱放在指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,用最少的步数将所有箱子推到目的地去。其开发过程有一定的技巧和方法,其中设计到三维数组,键盘操作,图形函数,调用音乐函数的灵活运用,产生随机函数,八进制数的使用以及一些基本的函数嵌套、递归使用。设计目的编写一个推箱子游戏,使用图形界面。推箱子游戏的目的是用最少的步数把所有的箱子推到目标位置。游戏规则1.游戏开始时,在游戏区域内随机的出现箱子、障碍物、小人以及箱子的目标位置。2.箱子只可以被推动,不可以被拉动。3.用户通过键盘的来控制小人上下左右的移动来推动箱子。记录用户移动小人的次数。4.如果箱子被推到死角,则游戏结束。5.所有箱子被推到目标位置,游戏胜利。6.可以增加关卡,不同的关卡,难度不同。7.可以允许用户悔步,即用户可以选择取消上一次的移动。实现库函数库函数主要stdio.h 、graphics.h、time.h、conio.h、#pragma comment(lib,Winmm.lib)等,其中graphics.h实现图片加载等功能、time.h是随机地图的生成,#pragma comment(lib,Winmm.lib)在加载背景音乐时所必须的。全局变量定义人物的坐标x,y,关卡计数k和步数计数n_step为全局变量,减少在编程过程中函数定义和使用过程中形参的数目,减少一些麻烦。定义了一个数组a[9][9]作为临时地图的储存,该游戏设计有多关卡,故使用三维数组b[5][9][9]将b[5]定义为不同的关卡。地图的设计地图用二维数组表示,用0表示空地,1表示人物,2表示箱子,3表示目的地,6表示围墙,前三关地图是人为设计的,后两关 void getchance()函数随机制成。设置为靠近的数字有利于程序的简短,如使用自加自减。图片加载函数定义了一个一维图形数组IMAGE img[9] 用于存储图片。loadimage(img[0], 图片\\0.jpg);用于加载程序中使用的图片到img[0]。定义一些图片加载函数如 void blank(int x1, int y1);在坐标为x1,y1处加载图片空地。界面初始化先用Easyx定义一个540*600的控制台,在该界面中有540*540用于加载游戏地图,下面剩余部分用于显示每个关卡游戏所用步数。用函数 void interdace(),用easyx中函数设置背景颜色,以及字体颜色。在初始化界面中有三个选择:关卡选择、游戏说明和关于游戏。对应的显示函数使用的是outtextxy(110,250,**********),用switch语句选择,三个选择对应的三个函数void Select_stage()、void Gamedescription()、void Aboutgames()。游戏说明和关于游戏设计相似,都是一些信息的显示,如游戏的玩法和开发者的一些信息,涉及到一些文档显示函数。假如选择不在三个菜单中则switch中语句default:void interdace();break;通过函数的递归使界面停留在界面初始化选择界面。查找人物坐标函数查找人物坐标x,y函数void find(int a[9][9])因x,y是全局变量,所以该程序中函数可以改变x,y的值,当遍历数组a时,如果a[x][y] 处的值为1,那么返回,函数结束,此时x,y的值就是人物的坐标。移动函数移动函数void move(int a[9][9], int x1, int y1)中x1,y1表示移动过程中相对于人的相对坐标,如向下移动即为move(a,0,-1)。在移动过程中有三种情况,下一步为箱子、墙和目的地。其中难点为假如下一步为箱子,则在该方向的挨着箱子的目的地或者空地则可以推动,墙和箱子则不能。如果能推动,则x,y分别加上x1,y1,实现移动,人走后该处就是空地,用a[x][y]--实现。如果不能推动,则x,y分别加上x1,y1,实现移动。判断游戏是否结束函数int win(int a[9][9])当地图中还有箱子时,游戏还没有结束,当地图中没有箱子时,游戏结束。在还有箱子的情况下,如果箱子的任意两个相邻边挨着的是墙,那么表示箱

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档