坦克大战课程设计论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

坦克大战游戏设计

1.课程设计的目的

随着手机的日益普及,java功能在移动设备上的实现及java 应用程序产生的影响力,对丰富人们的生活内容,提供便捷的咨询起着不可忽视的作用。本项目介绍了坦克大战的基本构建方法、java的相关技术及本程序的结构分析和具体功能的实现。游戏是在Eclipse3.2环境下编程。本项目重点运用了图形化用户界面GUI,Thread多线程的有关知识,其中涉及了绘图工具的运用,事件处理操作以及图形的碰撞检测等知识点。通过此课程设计,使学生巩固所学知识、培养学生动手能力,了解Java的面向对象的体系结构。学生用Java语言设计一个完整的应用程序,综合应用所学知识完成软件的分析、设计、调试和总结,提高学生对Java语言的综合应用能力和解决问题的能力。

2.设计方案论证

2.1设计思路

本项目介绍了坦克大战的基本构建方法、java的相关技术及本程序的结构分析和具体功能的实现。游戏是在Eclipse3.2环境下编程。

一、游戏基本元素:坦克,炮管,子弹,墙壁,地雷

二、它的主要功能:

(1)能够朝四个方向移动:上、下、左、右键。

(2) 按下鼠标左键发射普通子弹;按下鼠标右键发射散弹;子

弹爆炸的效果,普通子弹和炮弹的效果

(3)敌人能够移动

(4)能够模拟爆炸

(5)能够产生障碍

(6)能够增长生命

玩家控制主坦克(上方有血条的)的移动以及炮弹的发射。若玩家将敌方坦克全部打掉则玩家胜;若期间由玩家控制的主坦克被打掉则视为玩家失败。游戏中只有普通墙作为障碍物,玩家无法穿越它们并且普通子弹不能将墙打穿

;但是玩家可以用炮弹将普通墙打掉。桃心可以将坦克的血加满。

2.2简要的设计流程:

键盘监听器

2.2设计方法

2.2.1构建游戏主类

在主类中构造一个主Frame框架,设置它的大小和位置,并将其显示。在主类中编写一段代码,构造一个窗口。并添加窗口关闭的处理事件,将窗口设置成打小不可变。

主要代码如下:

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

this.setResizable(false);

2.2.2构建坦克类Tank

构造主窗口中所需要的Tank类,并将坦克加到窗口中,实现坦克的四个方向的移动

创建一个坦克类,用画图工具构造出简单的图形代表坦克,并将坦克加入到主窗口当中。

主要代码如下:

abstract class Tank

{

boolean init=false; //第一次画时将图片载入内存

static final Toolkit TLK=Toolkit.getDefaultToolkit(); //用来将图片读入Image数组

public static Image[] turretImg={

TLK.getImage(Tank.class.getClassLoader().getResource("I mage/Tank/turret1.png")),

TLK.getImage(Tank.class.getClassLoader().getResource("I mage/Tank/turret2.png"))};

BufferedImage bTurretImg=null;

Graphics2D g2=null;

AffineTransform trans=new AffineTransform();

public static final int SHOTSCOUNT=5; //同时可发射的子弹数

int shotsCount=0; //已经发射的子弹数

public static final int TANKSPEED=5; //Tank移动速度

public static final int TANKWIDTH=36; //Tank的尺寸

public static final int TANKHEIGHT=38;

public static enum TANK_DIR {U,D,L,R,STOP};

TANK_DIR tankDir; //Tank主体的方向

TANK_DIR moveDir; //Tank的运动方向

boolean camp; //Tank的阵营

boolean isNPC; //是否是有电脑控制的机器人Tank

boolean isLive=true; //Tank是否存活

int x,y; //Tank主体的中心点坐标

int oldx,oldy; //存储Tank前一步的坐标

int turretDirx, turretDiry; //大炮端点的坐标

public static final int TURRETLENGTH=30; //炮筒的长度double oldAngel=0;

double nowAngel;

double turnAngel;

TankClient tc=null; //主界面类的引用

Bomb tankBomb=null;

HitPoint tankHitPoint; //Tank的生命值

static Random rn=new Random(); //随机数发生器

让坦克朝四个方向运动起来,在主类TankClient中启用多线程机制,让系统不断的进行重画。

class RepaintThread implements Runnable //画面重画线程{

public void run()

{

while(repaintFlag)

{

try

相关文档
最新文档