- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java游戏编程原理与实践教程课件第9章--陈锐夏敏捷主编I
游戏界面和相关图片素材 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进行任意分割成子图像。 Java游戏编程原理与实践教程 主编 陈锐 夏敏捷 人民邮电出版社 在“游戏”中,拼块以随机顺序排列,网格上有一个位置是空的。完成拼图的方法是利用这个空位置移动拼块,玩家用鼠标点击空位置周围拼块来交换它们位置,直到所有拼块都回到原位置。拼图游戏运行结果如图9-1。 第9章 人物拼图游戏 9.2 程序设计的思路 游戏中动态生成一个大小3*3的图片按钮数组cells。将图片woman.jpg分割成行列数3*3的小图片,并按顺序编号;每个图片按钮显示一副小图片,其位置成员place存放用0,1,2到8的数,代表正确位置编号。注意最后一个图片按钮显示的是空白信息图片“9.jpg”而位置成员place存放8。 游戏开始时,随机打乱这个图片按钮数组cells,根据玩家用鼠标点击,来交换图片按钮数组cells对应按钮与空白图片按钮位置,判断按钮数组cells所有元素的位置成员place是否有序来判断是否已经完成游戏。 现成分割好的图片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.ge
您可能关注的文档
最近下载
- 熊诗波机械工程测试技术.pptx VIP
- 眼镜学知到智慧树期末考试答案题库2025年温州医科大学.docx VIP
- 江苏开放大学科学思维方法在实际生活和工作中的应用、意义.doc VIP
- 平面砂浆找平层施工工艺 (1).docx
- 学校空调采购安装服务方案(技术方案).doc
- 2025北京市公安局所属事业单位研究中心招聘4人(二)笔试模拟试题及答案解析.docx VIP
- 科技英语写作课件.ppt VIP
- 2025新版三下英语Unit 4 Healthy food单元整体教学设计.docx VIP
- 申请经营电信业务的业务发展、实施计划和技术方案。.pdf VIP
- 社区医院医疗质量安全核心制度要点.DOC VIP
文档评论(0)