创建窗口

创建一个窗体类,继承Frame,(也可以不继承使用JFrame),然后在该类的构造函数中,使用Frame中的方法,设置窗体的标题,大小,位置,可显,不可改变窗体大小(注意:可以使用Toolkit方法获取屏幕的高宽;

也可以直接写窗口的大小;setVisible()方法,显示窗体,最好写在最后面的位置)

然后创建一个类,做主线程,在main方法里将该窗体类实例化,然后就实现了一个游戏窗体。

添加游戏必要元素

先在窗体类中写paint方法,这个paint方法会自动调用,在paint方法里,可以把人物,背景,各个界面的文字画出来,(可以选择不同的字体,颜色,进行美化)关于图片的添加,在该项目里新建一个包用于存图片,图片的使用,我使用的是一个工具类,我所知道的有一个方法把图片对象化的,然后找到图片的路径,对图片进行调用。(图片的实际大小和显示大小不一定一样,实际大小是你在程序中定义的,显示大小是图片本身的大小)(这个之前搞得不是太明白导致两个游戏元素重叠)

控制我方坦克

创建人物类,定义初始位置,和方向,速度,写一个构造器,这样就可以实例化的时候赋初始值了,写一个画笔的成员方法,在从窗体类中的重写paint方法里传过来画笔,这样这个成员方法也相当于重写paint方法了,再写移动方法,通过判断方法来控制移动,然后在paint方法中调用,然后就是获取方向了,可以在窗体类中添加按键监听,通过监听获取四个布尔值,四个布尔值对应着四个方向,在写一个成员方法将四个布尔值转变为方向,在人物类中写一个含参数的方法,用来获取方向进行参数的加减,启动线程,不断重画,进行移动。

闪烁问题

运用双缓存

将所有的东西画在一副虚拟的图片上(和容器一样的大小),然后整个绘制到容器的画布中,一次性的显示出来;

每一次调用repaint()方法(具有刷新页面效果的方法),先调用update()方法(清除当前显示并再调用paint()方法)。

子弹的发射,碰撞,消失

添加x,y等属性;添加构造方法、draw等必要方法;(实时绘制,执行完draw()语句之后立即进行渲染)根据不同的方向,进行不同的运动;按空格发射子弹,那么源头就是监听空格,构造方法来获取此时人物的位置信息的,这样我们获取了子弹的初始坐标和方向,创建一个子弹类,定义的信息和人物类差不多,创建一个子弹容器,在这里写一个方法获取子弹的初始的位置和方向,这样就可以实现按一次空格,就会往子弹容器里添加一个子弹,发射一次子弹后进行发射冷却,可以自己调节时间。关于内存溢出,在子弹类中写一个方法,通过判断子弹的位置,如果子弹的位置超出边界就消去这个子弹(容器中的子弹用getset方法来获取),然后将该方法在paint方法中调用,不断的刷新界面实现子弹的移动。然后判断子弹和界面内物体的碰撞,只要监控它们的坐标,判断是否相同,如果相同就同时消去。

敌方坦克的产生,移动

和控制我方坦克差不多,创建一个新的类,怪物的位置,可以通过创建一个随机类对象random,来获取随机横坐标来随机生成,

怪物的数量多少和子弹相似,用容器的存储,这时候就要明确怪物的数量了,创建一个变量,加入if()判断当变量大于多少时,使坦克不在生成。坦克的移动可以通过获取四个随机数来随机生成的,方向转变的时间间隔相同。

死亡,胜利,失败,暂停界面

死亡就是判断两个坦克和子弹是否碰撞,把两个物体当作矩形,调用intersects()方法判断两个矩形是否相交。如果坦克和子弹相交及坦克死亡子弹消除;子弹和墙壁相交,两者同时消除。消除物体的方法,就是把用到它的方法从遍历paint的列表中去掉。

胜利就是判断我方坦克是否消灭敌方所有坦克且基地保存完好。然后在paint中重新绘制游戏胜利的界面。

失败和胜利大致相同,即我方坦克全部死亡或基地死亡时,重新绘制游戏失败界面。

暂停模式,就是重新定义一个变量,按下暂停键时,给变量重新赋值。当变量的值为某个值时,重新绘制游戏界面,即跳转到暂停界面。并且使坦克不在生成和移动 。再次,按压下暂停键时,改为原来的值使界面转回原来界面,程序正常运行。

优化添加特效

写完上面的游戏就能运行了,不过还是要加一些爆炸特效和背景音乐

爆炸特效就是,在坦克与子弹相碰的位置连续切换绘制爆炸图片来实现。用Toolkit.getImang()方法来获取图片用for()循环进行图片转换

添加背景音乐,创建一个新的类,用File添加音乐的绝对路径。然后在线程中用AudioSystem和AudiolnputStram处理音频文件,然后将要播放的音乐,调用到绘制画面后需要有声音的地方。

我的大致思路就是这样,不过背景音乐的添加搞得还不是太明白。

java坦克大战心得相关推荐

  1. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  2. java坦克大战课设报告_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  3. Java坦克大战游戏源码(java坦克大战)

    Java坦克大战游戏源码(java坦克大战) public Swingtest002() {// 设置标题setTitle("请登陆");// 绝对布局setLayout(null ...

  4. java坦克大战总体功能设计_Java坦克大战设计报告.doc

    Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...

  5. Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计

    Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计 有图有真相 操作方法:ASDW控制移动,鼠标控制炮筒旋转,鼠标左键开枪,空格发射炮弹, 开发思路是标准的游戏开发思路,单线程 ...

  6. java坦克大战的总结_《坦克大战》总结心得

    这几天跟着马士兵的视频写出了<坦克大战>单机版,在此基础上我还修改了几个小版块,比如敌方的坦克全部被我军歼灭后,战争级数上升一级,我军的战斗值恢复到满值,自动生成一批坦克,每次敌军新增的坦 ...

  7. Java坦克大战 (一) 之产生一个窗口

    本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...

  8. Java坦克大战(四)

    这是我的坦克游戏大战的最后一版,里面添加很多新的功能.这个坦克大战的有很多不足之处,但是对于初学者来说依然是一个很好的练习项目,从中我们可以学习Java基础知识,将知识与项目结合,学习面向对象编程思想 ...

  9. java 坦克大战画坦克_java简易坦克大战(2)

    public class Tank1 extends JFrame implements ActionListener { MyPanel mp = null; GuanKaPanel gkmb = ...

  10. java坦克大战(1.0)

    坦克大战 后面开始学习怎么使用java制造一个坦克大战游戏 但是不是直接开始做,而是随着这个游戏程序的制造,一边学习新知识融入到游戏中.包括多线程,反射,IO流- Java坐标体系 在几乎所有的坐标中 ...

最新文章

  1. PCL:点云数据基于法线的边界提取(从最初的法线估计理论推导到最终的边界提取)
  2. 招聘|字节跳动计算机视觉算法实习生
  3. 固态器件理论(5)PN结
  4. Open vSwitch相关字段详解之L4:TCP, UDP, SCTP
  5. 又是Dropout两次!这次它做到了有监督任务的SOTA
  6. java 集合类 map/set/list/vector之间的关系
  7. CentOS系统中安装 vmware-tools
  8. 细节取胜的javadoc
  9. Linux系统编程---5(共享存储映射,存储映射I/O,mmap函数,父子进程间通信,匿名映射)
  10. qt c语言socket,c – Qt双向客户端服务器使用QTcpSocket和QTcpServer
  11. 华为否认窃密;贾跃亭陪许家印考察FF;谷歌或被罚95亿欧元 | 极客头条
  12. apache maven安装教程
  13. chmod 755 究竟是什么鬼?
  14. GHOST XP SP3快速装机版
  15. LabVIEW虚拟示波器设计
  16. PHP之支付宝APP支付
  17. 软件测试的正向思维,反向思维
  18. 小游戏内测激励视频广告,然而小程序最大的潜力是电商
  19. iconfont图标无法显示的问题
  20. 责任链模式与lambda重构责任链模式

热门文章

  1. 软件工程师必读技术书籍推荐
  2. 方舟php服务器控制,方舟基本管理命令代码
  3. 【数据结构】图的存储结构—邻接矩阵
  4. HackerRank数据库题目练习(2)
  5. 计算机408考研专业课思维导图(计算机组原理、数据结构、操作系统、计算机网络)
  6. mes系统服务器连接失败,mes系统如何连接其他系统设备?
  7. gis怎么提取水系_如何使用ArcGIS从天地图中提取水系
  8. 类似switchhost 的简单host切换工具
  9. 计量经济学第六版伍德里奇计算机答案,求伍德里奇计量经济学答案第六版
  10. KNN算法 使用KNN对iris数据集分类