创建窗口

创建一个窗体类,继承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. plsql配置多数据源,想换哪个换哪个
  2. source ubuntu 退出_Ubuntu如何使用source命令执行文件
  3. slurm任务调度系统部署和测试(一)
  4. cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题
  5. Data Partitioning Guidance
  6. 网络名称空间 实例研究 veth处于不同网络的路由问题
  7. WaitForSingleObject的用法举例
  8. Bootstrap学习笔记(三) 网格系统
  9. 闲谈StringBuilder
  10. 剑指 Offer 03. 数组中重复的数字()
  11. MySQL性能优化的最佳经验
  12. 渗透测试入门23之OSCP渗透测试认证经验分享
  13. 柏林纪行(中):Node.js Collaboration Summit
  14. myeclipse里html添加背景颜色,myeclipse怎么设置主题-设置myeclipse主题背景颜色的教程 - 河东软件园...
  15. Win32中GDI+应用(一)
  16. php在类里如何调用call_user_func_array《细说php2》
  17. ImageMagick中文使用手册——复合字体效果
  18. 在VirtualBox上安装Linux的Guest Additions
  19. 护肤品html作业,聚美优品美容产品热点.html
  20. JAVA专业课题研究方向有哪些_教师课题研究方向与范围有哪些

热门文章

  1. Xcode 9: An error occurred uploading to the iTunes Store. iTunes Store Operation Failed
  2. js打开新页面的两种方式
  3. android五中布局 四大组件,Android 四大组件五大布局
  4. Java开源框架Netty
  5. 全国省市区县json数据
  6. 【小程序demo】带你玩转支付宝小程序之小程序二维码
  7. CPC系统在win10上的安装,1小时快速安装
  8. c++ opencv数字图像处理:频率域滤波--同态滤波
  9. c#通讯西门子plc
  10. sql插入后返回id