Java面向对象程序设计与应用开发教程第一讲 面向对象游戏设计 1.pptVIP

Java面向对象程序设计与应用开发教程第一讲 面向对象游戏设计 1.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 简单坦克游戏的面向对象实现 * 简单坦克游戏的面向对象实现 本章的游戏例子涵盖了Java语言的众多特点,比如继承、封装、抽象方法、静态方法和静态变量等等,并结合Java画图机制、线程机制和Java网络通信三部分的知识点。 本讲概要 坦克游戏复习 坦克游戏面向对象设计 面向对象分析 坦克的面向对象设计 主窗体的设计 坦克游戏复习 坦克: 圆心坐标:x、y 半径大小:20 坦克朝向:dir 子弹: 圆心坐标、半径、移动方向 坦克的移动:使用键盘按键机制改变圆心坐标,改变之后刷新画面 子弹的移动,使用线程机制控制 面向对象分析 分析坦克大战小游戏,如图1所示,一共有三种实体: 坦克:Tank 子弹:Bullet 障碍物:Block 除了这三种实体以外,我们还需要实体所在的场景类: 场景:GameCanvas 三种对象 为了简单起见,暂不考虑障碍物。在上一讲中开发坦克大战的方法是传统的结构化的思想,本讲我们改用面向对象的方法来实现,可以针对坦克和子弹写各写一个类 坦克的面向对象设计 对于坦克,把类名设定为Tank,类是由属性和方法构成的,Tank类中的属性和方法如下表所示(代码见例1) Tank类的属性 坦克圆心坐标 (x,y) 坦克半径 radius 坦克朝向 dir Tank类的方法 坦克移动 move() 构造方法 Tank() 坦克射击 shoot() 例1:Tank类 public class Tank { int x=100,y=100,dir=0,radius=20; public Tank(int x,int y) { this.x=x; this.y=y; } public void move(int moveDir) { switch(moveDir) { case 0:x=x-5;break;//0表示左 case 1:y=y-5;break;//1表示上 case 2:x=x+5;break;//2表示右 case 3:y=y+5;break;//3表示下 } } } 面向对象坦克绘制 虽然实现了Tank类,但是这个实现有意义吗?接下来要考虑的是如何通过画图机制把坦克表现出来。 若要画出坦克,必须要使用Frame类的paint()方法,每一次变动的时候调用repaint()方法重绘。 paint()方法中画图的关键部分是Graphics对象g,该对象包含了与画图相关的所有方法,能不能把该对象“拿出来”,传给需要使用它的对象,在绘制图形的时候调用呢? 答案是肯定的,Frame类提供了一个getGraphics()方法,该方法返回一个Graphics对象,使用这个返回的对象就能在任何地方进行绘图了。Frame类中在得到Graphics对象以后,只要传给Tank对象,Tank对象调用move()方法改变坦克位置以后就可以进行重绘了。 面向对象坦克绘制 若要画出坦克,必须要使用Frame类的paint()方法每一次变动的时候调用repaint()方法重绘。 paint()方法中画图的关键部分是Graphics对象g,该对象包含了与画图相关的所有方法,能不能把该对象“拿出来”,传给需要使用它的对象,在绘制图形的时候调用呢? 面向对象坦克绘制 答案是肯定的,Frame类提供了一个getGraphics()方法,该方法返回一个Graphics对象,使用这个返回的对象就能在任何地方进行绘图了。Frame类中在得到Graphics对象以后,只要传给Tank对象,Tank对象调用move()方法改变坦克位置以后就可以进行重绘了。 需要在Tank类的定义中增加一个Graphics对象和一个draw()方法,请看例2所示的代码 面向对象坦克绘制 例2:增加绘制方法的Tank类 import java.awt.*; public class Tank { static Graphics g; int x=100,y=100,dir=0,radius=20; public Tank(int x,int y) { this.x=x; this.y=y; } public void move(int moveDir) { switch(moveDir) { case 0:x=x-5;break;//0表示左 case 1:y=y-5;break;//1表示上 case 2:x=x+5;break;//2表示右 case 3:y=y+5;break;//3表示下 } draw(); } public void draw()

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档