- 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综合编程——坦克大战(15.1.5)概要1
修改绘制子弹代码,取出列表中的每颗子弹,绘制 当子弹死亡,还需要将该子弹从子弹列表中删除 当子弹死亡后,控制子弹的线程结束 第四版 我方子弹击中敌人坦克后,敌人坦克消失 让敌人坦克也可以随机上下左右移动 控制所有坦克在规定范围内移动 让敌人的坦克也能够发射子弹 敌人坦克子弹能够击中我方坦克 1、我方子弹击中敌人坦克后,敌人坦克消失 何为击中?子弹的坐标进入敌人坦克的范围内(30*20)为击中(判断敌人坦克的方向,决定敌人坦克的范围)。 如果敌人坦克的方向为向上(或者向下)的话,敌人坦克的范围为:et.x~et.x+20,et.y~et.y+30;如果子弹的坐标进入此范围则击中坦克 如果敌人坦克的方向为向左(或者向右)的话,敌人坦克的范围为:et.x~et.x+30,et.y~et.y+20;如果子弹的坐标进入此范围则击中坦克 30 20 20 30 需要写出击中的方法,通过调用该方法判断我方所有子弹和敌人所有坦克的击中关系。 该方法应该写在什么地方? 在MainPanel中新建一个方法hit,在调用该方法时需要将子弹和敌人坦克这两个参数传递进去。 在何处调用该方法? 因为需要随时判断坦克是否被击中,所以需要在MainPanel的run方法中调用hit方法 如果敌人坦克已经死亡,则需要在绘制坦克向量所有坦克之前删除掉该坦克,不再需要绘制该坦克 如果子弹已经死亡,也需要在向量中删除该子弹不再绘制 2、敌人坦克也可以自由移动 我的坦克通过键盘的上下左右键控制其移动,敌人坦克如何控制? 需要做成线程,由线程控制 在敌人坦克的run方法中需要: 让敌人坦克动起来(根据原方向继续走30步改变一次方向,每走一步休眠50毫秒)。 让敌人坦克随机改变方向(int)(Math.random()*4)。此处最好在敌人坦克类中编写changeDirect()方法,在run中调用此方法。 敌人坦克死亡后退出线程。 在MainPanel创建敌人坦克时,启动敌人的坦克线程 3、控制所有坦克在规定范围内移动 坦克每走一步都需要检查是否出了边界,如果出边界都需要改变方向,不再继续走 4、让敌人的坦克也能够发射子弹 在敌人坦克的run方法中调用父类坦克的shot()方法 解决连发问题,一次发射三颗子弹 别忘了在MyPanel的paint方法中绘制敌人坦克的子弹。 5、敌人坦克子弹能够击中我方坦克 原理同击中己任坦克一样 编写判断击中我方坦克的方法hitme(EneneyTank),该方法中取出传递进来的坦克的没一颗子弹,如果该子弹还活着,则判断该子弹和我方坦克的位置,如果击中则子弹和我方坦克的isalive属性该为false; 在JPanel的run方法中调用每一辆坦克,如果该坦克还活着,且我方坦克也活着,则调用hitme方法,判断是否击中我方坦克。 在JPanel的paint方法中,在绘出我方坦克之前判断我方坦克是否还活着,如果活着再绘出。 坦克游戏第5版 记录玩家一共消灭了多少辆敌人坦克 能够存盘退出游戏,下次打开游戏时能够恢复到上次退出的状态,接着玩游戏 Java IO知识 解决之道——文件或者数据库保存 程序在退出时,将消灭的坦克数和各个坦克的位置数据保存到文件(数据库)中,当下次游戏开始时,从文件(数据库)中恢复这些数据 文件是数据源 输入流、输出流(以我们的程序为参照) 字节流和字符流 File类 FileInputStream类和FileOutputStream类 FileReader类FileWriter类 JFileChooser类 //创建一个JFileChooser类 JFileChooser jfc=new JFileChooser(); //弹出该选择对话框 jfc.showSaveDialog(null); //设置为可视化 Jfc.setVisible(true); 第六版、坦克大战(47) 防止敌人坦克重叠运行 可以分关 可以在玩游戏时暂停和继续 可以记录玩家成绩 可以加入声音 1、防止敌人坦克重叠运行 此功能用一个方法来实现hitOther(),该方法应该写在什么地方? EnemyTank类或者JPanel的run()中都可以,建议将该方法写在EnemyTank类中,因为这是坦克本身就具有的一种能力。 如果希望某一辆坦克自己判断是否碰到了别的坦克,则它需要知道其他所有坦克的信息,因此需要将MyPanel中的敌人坦克向量表(保存的是所有敌人坦克信息的向量表)传递给EnemyTank类 什么时候传递给该坦克? 该坦克创建之后,需要传递给他向量表, 当向量表发生变化时,需要重新传递给他该向量表 在什么地方调用hitOther()方法? 坦克每走一步都需要判断有没有碰到其他盟友,因此应该在该坦克的run()中调用该方法 2、分
文档评论(0)