单机版坦克大战游戏总结
刚刚做完坦克大战的游戏,不能说做完,功能还很简单,还有一些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类里。
以上只是我暂时的结果。还有很多要完善的地方,比如,敌方坦克不可以重合,由于敌方坦克运动方向是随机的,坦克可能会原地打转的问题,等等,很多。我会继续完善的。
单机版坦克大战游戏总结相关推荐
- 3D坦克大战游戏源码
3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...
- 一文教你使用java开发一款坦克大战游戏
导读:随着人们对生活质量的要求一天比一天高,为了让人们更好地开掘自身的智慧,游戏就此进入了大众的视野,在人们的生活中有着重要的位置,已然变得必不可少.游戏产业推动高新技术不断升级,极大地促进了经济的增 ...
- java开发一款坦克大战游戏
导读:随着人们对生活质量的要求一天比一天高,为了让人们更好地开掘自身的智慧,游戏就此进入了大众的视野,在人们的生活中有着重要的位置,已然变得必不可少.游戏产业推动高新技术不断升级,极大地促进了经济的增 ...
- 基于HTML5坦克大战游戏简化版
之前我们有分享过不少经典的HTML5游戏,有些还是很有意思的,比如HTML5版切水果游戏和HTML5中国象棋游戏.今天要分享的是一款简化版的HTML5坦克大战游戏,方向键控制坦克的行进方向,空格键发射 ...
- python坦克大战游戏_python实现简单坦克大战
基于对面向对象编程的思想完成简单的坦克大战游戏.主要目的锻炼面相对象编程思想 同样的在使用python进行游戏编写时需要安装pygame模块 安装方法: pycharm安装方式:File --> ...
- HTML5制作坦克大战游戏+Canvas绘制基础图形——学习笔记一
1.离线存储:1)存储到本地,可以离线浏览网页 2)不用cookie(安全性不太高,来回交互的数据量比较大) 2.语音识别 3.图像识别 4.HTML5游戏 5.CSS3的强大之处:动画和各种选择器 ...
- 基于Java的坦克大战游戏的设计与实现(论文+PPT+源码)
幻灯片1 基于Java的坦克大战游戏的设计与实现 幻灯片2 CONTENTS 1 4 设计工具与相关技术 详细设计 2 5 系统分析 结论 3 总体设计 幻灯片3 PPT模板下载:http://www ...
- 纯Java实现坦克大战游戏,源码公开
文章目录 前言 一.源码 二.成员类 前言 近日最做项目,很多网友在问题是否有游戏的代码分享,故总结了去年开发的一款小游戏坦克大战,源码公开,大家一起研究改进 * 功能:坦克大战游戏* 1.画出我的坦 ...
- 坦克大战游戏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. ...
最新文章
- UI设计培训分享:UI设计师如何准备面试?
- OpenKruise 2021 规划曝光:More than workloads
- 邮件的一个推送这个系统怎么去搭建的摘抄:感觉有很多的开源的邮件服务器可以参考使用搭建,据说wordpress有集成服务
- Filecoin: 影响力容错(PFT)和预期共识(EC)
- Unable to locate package php5-curl
- 网络克隆报a:\ghosterr.txt故障解决一例
- C# 引用类型与值类型转换-装箱和拆箱
- Codeforces Round #700 (Div. 2) D1 D2. Painting the Array 思维
- java url参数转换:_提示:通过URL激活并发送参数
- Tomcat提示“XDB 的服务器 localhost 要求用户名和密码”
- 任正非要“拿钱砸人”的芯片产业:平均薪资 10424 元,人才缺口超 30 万!
- Linux 命令(4)—— declare/typeset 命令(builtin)
- 基于dubbo + maven 的项目搭建
- Access手工注入
- GCD Timer事件的精度
- 计算机网络超详细笔记(二):物理层
- 根据工资计算税费html,个税计算器2021 - 个人所得税计算器2021 - 最新个人所得税税前工资税后工资计算公式...
- S MT 精密电阻 对照 表
- c语言面试(c语言面试基础知识)
- 炼数成金数据分析课程---7、数据分析简介