Java游戏编程原理与实践教程课件第9章—陈锐夏敏捷主编.pptVIP

Java游戏编程原理与实践教程课件第9章—陈锐夏敏捷主编.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java游戏编程原理与实践教程课件第9章—陈锐夏敏捷主编

Java游戏编程原理与实践教程;在“游戏”中,拼块以随机顺序排列,网格上有一个位置是空的。完成拼图的方法是利用这个空位置移动拼块,玩家用鼠标点击空位置周围拼块来交换它们位置,直到所有拼块都回到原位置。拼图游戏运行结果如图9-1。; 游戏界面和相关图片素材 ;9.2 程序设计的思路 游戏中动态生成一个大小3*3的图片按钮数组cells。将图片woman.jpg分割成行列数3*3的小图片,并按顺序编号;每个图片按钮显示一副小图片,其位置成员place存放用0,1,2到8的数,代表正确位置编号。注意最后一个图片按钮显示的是空白信息图片“9.jpg”而位置成员place存放8。 游戏开始时,随机打乱这个图片按钮数组cells,根据玩家用鼠标点击,来交换图片按钮数组cells对应按钮与空白图片按钮位置,判断按钮数组cells所有元素的位置成员place是否有序来判断是否已经完成游戏。;9.3 关键技术 9.3.1 按钮显示图片实现 Swing中的按钮可以显示图像(图片)。 JButton中显示图像的构造方法: JButton(Icon icon) :按钮上显示图标。;9.3 关键技术 9.3.2 图片按钮移动实现 当图片按钮移动后,按钮的坐标发生改变,此操作通过setLocation()方法实现。setLocation()方法是从Component类继承的,其定义如下: public void. setLocation (int x, int y) 参数x,当前组件左上角在父级坐标空间中新位置的x坐标。参数y,当前组件左上角在父级坐标空间中新位置的y坐标。;9.4 程序设计的步骤 项目组成如图9-2所示。;9.4.1 设计单元图片类(Cell.java) 创建名称为Cell的类,用于封装一个单元图片对象,此类继承JButton对象,并对JButton按钮组件进行重写。 9.4.2 枚举类型Direction.java 项目中创建一个名称为Direction的枚举类型,用于定义图片移动的4个方向。 // 枚举类型四个方向 public enum Direction { UP, // 上 DOWN, // 下 LEFT, // 左 RIGHT // 右 };9.4.3 游戏面板类GamePanel.java 在项目中创建一个名称为GamePanel的类,此类继承JPanel类,实观MouseListener接口,用于创建游戏面板对象。GamePanel类中定义长度为9单元的图片数组对象cells,并通过init方法对所有单元图片对象迸行实例化。 构造方法GamePanel()调用init()初始化对所有单元图片对象迸行实例化。单元图片对象进行实例化是可以直接用现成分割好的图片1.jpg,2.jpg,…..9.jpg(见图9-3)实现。其中9.jpg为空白图片。 也可以不用现成分割好的图片,使用BufferedImage类的getSubimage方法可以对一个大的图片woman.jpg进行任意分割成子图像。;现成分割好的图片1.jpg,2.jpg,…..9.jpg; 图片块上单击事件中,通过e.getSource()获取触发事件的对象cell,与空白图片块cellBlank进行位置比较,从而决定被单击对象cell和空白图片块cellBlank移动方向。 public void mouseClicked(MouseEvent e) { Cell cell = (Cell) e.getSource();// 获取触发事件的对象 int x = cellBlank.getX();// 获取空白图片块x坐标 int y = cellBlank.getY();// 获取空白图片块y坐标 if ((x - cell.getX()) == Cell.IMAGEWIDTH cell.getY() == y) { cell.move(Direction.RIGHT);// 向右移动 cellBlank.move(Direction.LEFT); } else if ((x - cell.getX()) == -Cell.IMAGEWIDTH cell.getY() == y) { cell.move(Direction.LEFT);// 向左移动 cellBlank.move(Direction.RIGHT); } else if (cell.getX() == x (cell.getY() - y) == C

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档