- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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()
您可能关注的文档
- Illustrator CS4 实用案例教程 高职多媒体 葛洪央第5章 图层与模版的应用.ppt
- 新编经济应用数学 线 概 数 第五版 4.1.1 Word 教案.doc
- 新编经济应用数学 线 概 数 第五版 4.1.2 Word 教案.doc
- Illustrator CS4 实用案例教程 高职多媒体 葛洪央第6章 图形的变异.ppt
- 新编经济应用数学 线 概 数 第五版 4.1.3 Word 教案.doc
- Illustrator CS4 实用案例教程 高职多媒体 葛洪央第7章 符号与混合的应用.ppt
- 新编经济应用数学 线 概 数 第五版 教案3.1.1.doc
- 新编经济应用数学 线 概 数 第五版 教案3.1.2.doc
- Illustrator CS4 实用案例教程 高职多媒体 葛洪央第8章 特殊效果的表现.ppt
- 新编经济应用数学 线 概 数 第五版 教案3.1.3.doc
- 电子教参语法前言.doc
- Java面向对象程序设计与应用开发教程第一讲 数据类型 运算符与表达式.ppt
- Java面向对象程序设计与应用开发教程第一讲.ppt
- Java面向对象程序设计与应用开发教程第一讲Java画图机制.ppt
- Java面向对象程序设计与应用开发教程第一讲图形用户界面基础.ppt
- Java面向对象程序设计与应用开发教程第一章 认识Java.ppt
- Java语言程序设计 高职软件专业 赵景晖 迟勇 课件补充内容:网络通信.ppt
- Java语言程序设计 高职软件专业 赵景晖 迟勇 课件第四章 流程控制.ppt
- 电子商务英语 第二版 1 5单元练习答案.doc
- Java语言程序设计实用教程 第三版 高职软件专业 赵从军第1章 Java运行与开发环境.ppt
原创力文档


文档评论(0)