第7章 游戏型教软件设计制作案例解析.ppt

第7章 游戏型教软件设计制作案例解析.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 游戏型教学软件设计与制作案例 * 游戏功能 游戏素材 地图设计 游戏规则和对应算法 代码讲解 游戏关卡地图编辑器 案例:推箱子游戏 * 推箱子游戏的设计 1、游戏功能 (1)游戏运行载入相应的地图,出现一个推箱子的工人,围墙、人可以走的通道、几个箱子和箱子放置的目的地。 (2)让玩家通过按上下左右方向键控制工人推箱子,当箱子们都推到了目的地后出现过关信息,并显示下一关。 (3)推错了玩家可以按空格键 重新玩这关。 * 2、游戏素材 * 3、地图设计 地图想象成一个2维表格,每个格子就是工人每次移动的步长,也是箱子移动的距离。我们设计一个7行*7列的二维数组myArray。对于每个格子的X,Y坐标,可以由二维数组下标换算。 每个格子的状态值分别用枚举类型值 Wall(0)代表墙, Worker(1)代表人, Box(2)代表箱子, Passageway (3)代表路, Destination(4)代表目的地, WorkerInDest(5)代表人在目的地, RedBox(6)代表放到目的地的箱子。 文件存储的原始地图中格子的状态值采用相应整数存放。 * 4、游戏规则和对应算法 1.P1是通道 如果工人前方是通道 { 工人可以进到P1方格;修改相关位置格子的状态值。} 2.P1是围墙 如果工人前方是围墙 { 退出规则判断,布局不做改变; } 3.P1是目的地 如果工人前方是目的地 { 工人可以进到P1方格;修改相关位置格子的状态值。} * 4.前方P1是箱子 (1)P1处为箱子,P2处为墙 如果工人前方P1处为箱子,P2处为墙或出界;退出规则判断,布局不做任何改变。 (2)P1处为箱子,P2处为通道; 如果工人前方P1处为箱子,P2处为通道;工人可以进到P1方格;P2方格状态为箱子。修改相关位置格子的状态值。 (3)P1处为箱子,P2处为目的地; 如果工人前方P1处为箱子,P2处为目的地;工人可以进到P1方格;P2方格状态为放置好的箱子。修改相关位置格子的状态值。 4、游戏规则和对应算法 设计MoveTo()函数来实现,这是最复杂的部分,实现所分析的所有的规则和对应算法。 * private void MoveTo(int x1, int y1, int x2, int y2) { Map_State P1,P2; P1 = P2 = Map_State.None; if(IsInGameArea(x1, y1)) //判断p1是否在游戏区域 P1=myArray[x1, y1]; if (IsInGameArea(x2, y2)) P2 = myArray[x2, y2]; if (P1 == Map_State.Passageway)//P1处为通道 { MoveMan(x,y); x = x1; y = y1; myArray[x1, y1] = Map_State.Worker; } if (P1 == Map_State.Wall || !IsInGameArea(x1, y1)) //P1处为墙 return; if (P1 == Map_State.Destination)//P1处为目的地 { MoveMan(x, y); x = x1; y = y1; myArray[x1, y1] = Map_State.WorkerInDest; } MoveTo( )函数代码讲解 * //以下P1处为箱子 if (P1 == Map_State.Box )//P1处为箱子 if (P2 == Map_State.Wall || P2 == Map_State.Box)//P2处为墙 return; } //P1处为箱子,P2处为通道 if (P1 == Map_State.Box P2 == Map_State.Passageway) { MoveMan(x, y); x = x1; y = y1; myArray[x2,y2]=Map_State.Box; myArray[x1, y1] = Map_State.Worker; } MoveTo( )函数代

文档评论(0)

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

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

1亿VIP精品文档

相关文档