刚刚做完坦克大战的游戏,不能说做完,功能还很简单,还有一些Bug。花了两个下午,一个晚上,因为时间很紧张,(主要怪自己,在别人工作的时候,我在去杭州了,不过,玩得很开心,虽然来了"梅超风"),这里只是简单的一些总结,整理一下自己的思路,Bug,以后会慢慢修复。

写一个游戏,首先要定义的自己的规则,搞清楚自己到底要实现的东西有哪些。然后,一点一点理清自己的思路。搞清楚,为了达到目的,我要做哪些事情,先后顺序是什么。

一开始突然要写坦克,作者也是一头蒙。后来,静下心来,慢慢分析,先学会玩坦克大战这个游戏,搞清楚了游戏规则,然后开始模仿。要写这个游戏,首先,要有一个JFrame。要有自己的坦克和敌方坦克。坦克要会发射子弹。坦克要能够在JFrame上运动。要判断输赢,那么还要自己定义输赢标准。 这些是主干,其他的可以一点一点的加。

一:界面,800*700的JFrame。

背景图片是我截取的一个游戏的,然后一小块,一小块拼起来的,足足拼了400多块(因为这个背景图片很有战场的感觉)。

然后,就是设计地图了。创建一个Map文件,用数字来表示地图上的事物。然后,读取文件,用到了前几天的文件的读取,将字符串转换成数组元素,用数组来存储。遍历数组,数组不同的元素,则绘制相对应的事物。

//根据数组,画出地图

   public void createMap(int[][] array,Graphics g){for(int i=0;i<array.length;i++){for(int j=0;j<array[i].length;j++){if(array[i][j]==1){g.drawImage(Config.Wall.getImage(),35*(j),35*(i),null);}if(array[i][j]==2){g.drawImage(Config.Stone.getImage(),35*(j),35*(i),null);}if(array[i][j]==3){g.drawImage(Config.CantDie.getImage(),35*(j),35*(i),null);}}}}

JFrame双缓冲:借鉴了chang0501的blog,在这里附上地址:http://chang0501.iteye.com/blog/1027663

在这里就不多说了。真是牛人多多,要多多学习。

二:己方坦克

实现的功能:四个方向移动,发射子弹,判断障碍物,当被敌方坦克打中后,自动生成一个新的。游戏结束的标准是:敌方坦克被全部消灭或者己方坦克的基地被毁灭。己方坦克的作用就是保护基地不被毁,可以不断再生,直到游戏结束。

用键盘来控制坦克的方向,需要添加键盘监听器:addKeyListener,用四个boolean变量来记录键盘的按键情况,按下键,相对应的值变为true,那么此时前进的方向就确定了,释放为false。

/**

  * 判断前进方向*/public void directionToHead() {if (dir == e.VK_RIGHT) {right = true;currentDirection = "right";}if (dir == e.VK_LEFT) {left = true;currentDirection = "left";}if (dir == e.VK_UP) {up = true;currentDirection = "up";}if (dir == e.VK_DOWN) {down = true;currentDirection = "down";}}

三:敌方坦克

其实,敌方坦克类里有许多和己方坦克相同的方法,比如,判断是否被打中,是否碰到障碍物。敌方坦克不同的是,被打中后,消失,直到全部被打中消失,那么,游戏结束,己方胜利。敌方坦克的运动方向和位置是随机的。前,后,左,右,四个方向随机选择。

/**

  * 随机选择前前进的方向*/public void initDirection() {Random ran = new Random();int dir = ran.nextInt(4);if (dir == 0) {up = true;}if (dir == 1) {down = true;}if (dir == 2) {left = true;}if (dir == 3) {right = true;}}

四:子弹类

己方子弹,和敌方子弹,创建方法时相同的,里面实现的方法也有很多相同的地方,其实可以合并写在一个类里。但,一开始的时候,我为了理清自己的思路,把他们一一的分开了。

子弹的运动方向和位置的定义,是与坦克运动方向,位置相关的,因此可以用坦克的坐标来表示子弹的坐标,坦克的方向就是子弹的方向。子弹类里,会有一些方法,比如,子弹击中了墙,那么墙就要消失;子弹击中对方坦克,坦克消失,等等。

五:实现爆炸效果

爆炸的实现其实就是连续的绘制图片。将图片保存在数组里,然后遍历绘制。爆炸的产生是在子弹打中坦克的情况的产生的,因此,此时的子弹是setLive(false)的,调用爆炸方法即可。

六:Config类

因为要绘制很多图片,为了方便,可以将要用到的素材放到Config类里。

以上只是我暂时的结果。还有很多要完善的地方,比如,敌方坦克不可以重合,由于敌方坦克运动方向是随机的,坦克可能会原地打转的问题,等等,很多。我会继续完善的。

单机版坦克大战游戏总结相关推荐

  1. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  2. 一文教你使用java开发一款坦克大战游戏

    导读:随着人们对生活质量的要求一天比一天高,为了让人们更好地开掘自身的智慧,游戏就此进入了大众的视野,在人们的生活中有着重要的位置,已然变得必不可少.游戏产业推动高新技术不断升级,极大地促进了经济的增 ...

  3. java开发一款坦克大战游戏

    导读:随着人们对生活质量的要求一天比一天高,为了让人们更好地开掘自身的智慧,游戏就此进入了大众的视野,在人们的生活中有着重要的位置,已然变得必不可少.游戏产业推动高新技术不断升级,极大地促进了经济的增 ...

  4. 基于HTML5坦克大战游戏简化版

    之前我们有分享过不少经典的HTML5游戏,有些还是很有意思的,比如HTML5版切水果游戏和HTML5中国象棋游戏.今天要分享的是一款简化版的HTML5坦克大战游戏,方向键控制坦克的行进方向,空格键发射 ...

  5. python坦克大战游戏_python实现简单坦克大战

    基于对面向对象编程的思想完成简单的坦克大战游戏.主要目的锻炼面相对象编程思想 同样的在使用python进行游戏编写时需要安装pygame模块 安装方法: pycharm安装方式:File --> ...

  6. HTML5制作坦克大战游戏+Canvas绘制基础图形——学习笔记一

    1.离线存储:1)存储到本地,可以离线浏览网页  2)不用cookie(安全性不太高,来回交互的数据量比较大) 2.语音识别 3.图像识别 4.HTML5游戏 5.CSS3的强大之处:动画和各种选择器 ...

  7. 基于Java的坦克大战游戏的设计与实现(论文+PPT+源码)

    幻灯片1 基于Java的坦克大战游戏的设计与实现 幻灯片2 CONTENTS 1 4 设计工具与相关技术 详细设计 2 5 系统分析 结论 3 总体设计 幻灯片3 PPT模板下载:http://www ...

  8. 纯Java实现坦克大战游戏,源码公开

    文章目录 前言 一.源码 二.成员类 前言 近日最做项目,很多网友在问题是否有游戏的代码分享,故总结了去年开发的一款小游戏坦克大战,源码公开,大家一起研究改进 * 功能:坦克大战游戏* 1.画出我的坦 ...

  9. 坦克大战游戏Java网络版设计

    目 录 1.引言 1 2.系统分析 2 2.1需求和技术分析 2 2.2功能分析 2 3.总体设计 2 3.1总体功能 2 3.2坦克大战总体流程图 4 4.详细设计 5 4.1面板功能设计 5 4. ...

最新文章

  1. UI设计培训分享:UI设计师如何准备面试?
  2. OpenKruise 2021 规划曝光:More than workloads
  3. 邮件的一个推送这个系统怎么去搭建的摘抄:感觉有很多的开源的邮件服务器可以参考使用搭建,据说wordpress有集成服务
  4. Filecoin: 影响力容错(PFT)和预期共识(EC)
  5. Unable to locate package php5-curl
  6. 网络克隆报a:\ghosterr.txt故障解决一例
  7. C# 引用类型与值类型转换-装箱和拆箱
  8. Codeforces Round #700 (Div. 2) D1 D2. Painting the Array 思维
  9. java url参数转换:_提示:通过URL激活并发送参数
  10. Tomcat提示“XDB 的服务器 localhost 要求用户名和密码”
  11. 任正非要“拿钱砸人”的芯片产业:平均薪资 10424 元,人才缺口超 30 万!
  12. Linux 命令(4)—— declare/typeset 命令(builtin)
  13. 基于dubbo + maven 的项目搭建
  14. Access手工注入
  15. GCD Timer事件的精度
  16. 计算机网络超详细笔记(二):物理层
  17. 根据工资计算税费html,个税计算器2021 - 个人所得税计算器2021 - 最新个人所得税税前工资税后工资计算公式...
  18. S MT 精密电阻 对照 表
  19. c语言面试(c语言面试基础知识)
  20. 炼数成金数据分析课程---7、数据分析简介

热门文章

  1. Maven可选依赖与排除依赖
  2. 施努卡:锂电池负极材料生产线(电池正极材料生产工艺)
  3. 苹果怎么使用专业计算机,20个你应该知道的iPhone 7实用小技巧
  4. 批量处理 how to batch convert the cr2 files to jpg
  5. 过电流继电器怎么正确选型
  6. 计算机网络 使用eNSP搭建基础网络
  7. Python的setup模块介绍
  8. QNotified模块源码
  9. 公共基础知识:垃圾分类
  10. Android项目实战记录