文档库 最新最全的文档下载
当前位置:文档库 › Java语言坦克大战游戏设计(附有代码和图片)

Java语言坦克大战游戏设计(附有代码和图片)

Java语言坦克大战游戏设计(附有代码和图片)
Java语言坦克大战游戏设计(附有代码和图片)

JISHOU UNIVERSITY

本科生毕业设计

题目:基于java语言坦克大战游戏开发作者:

学号:

所属学院:信息科学与工程学院

专业年级:

指导教师:职称:

完成时间:

吉首大学教务处制

目录

基于java语言坦克大战游戏开发 (1)

摘要 (1)

Based on the development of Java language Tank Wars Game (2)

第一章游戏简要说明 (3)

第二章开发环境介绍 (4)

2.1 开发环境 (4)

2.2 java语言特点简介 (4)

2.3 Eclipse开发工具的简介 (5)

第三章系统总体设计 (6)

3.1程序功能的总和 (6)

3.2主体模块 (6)

3.3子弹模块 (6)

3.4坦克模块 (7)

3.5 墙模块 (7)

3.6血液模块 (7)

3.7爆炸模块 (8)

第四章游戏详细设计过程 (9)

4.1创建游戏窗口 (9)

4.2改变游戏背景颜色。 (11)

4.3创建坦克 (11)

4.4 让坦克动起来 (12)

4.5改变窗口的大小 (13)

4.6让坦克受控制 (14)

4.7创建一个Tank类 (15)

4.8让坦克向8个方向移动 (16)

4.9修改4.8中所设计的不足 (18)

4.10添加子弹类 (19)

4.11根据己方坦克的位置,打出子弹 (21)

4.12修改坦克停下来不能打出子弹的问题 (21)

4.13让坦克能够打出多发子弹 (23)

4.14解决炮弹不消亡和坦克出界的问题 (23)

4.15增加敌方坦克 (24)

4.16击毙出现的敌方坦克 (25)

4.17加入爆炸效果 (26)

4.18添加多辆敌方坦克 (27)

4.19让敌方坦克智能化 (29)

4.20建立游戏障碍物 (31)

4.21阻止坦克互相穿越 (32)

4.22为我方坦克添加大招和血条 (33)

4.23添加血块 (34)

4.24重新载入敌军或我军坦克 (35)

4.25加入图片 (35)

第五章游戏的可行性测试 (37)

5.1游戏界面介绍 (37)

5.2游戏运行测试 (40)

第六章总结 (43)

参考文献 (44)

基于java语言坦克大战游戏开发

摘要

随着网络科技的不断发展,我们的生活出现了日新月异的变化,特别是在游戏这一块,出现了前所未有的繁荣,各种各样的游戏进入我们的生活,而当初的“俄罗斯方块”、“坦克大战”、“贪吃蛇”等这些经典中的经典的游戏曾被多少人所知,更是多少80后甚至90后常聊的话题。

基于java坦克大战游戏的设计采用了java语言面向对象的思想,在设计的过程中,游戏的所有物体都赋予对象的概念和属性。本游戏的设计是在玩家进行游戏时,通过上下左右键来控制坦克,并且打出炮弹,以消灭所有敌人为游戏目的。在游戏过程中,敌方的坦克也会智能化的躲避玩家打出来的子弹。通过游戏的设计,是对java语言一个方便灵活运用的体现。

关键字:网络科技 java 面向对象智能化

Based on the development of Java language Tank Wars

Game

Abstract

With the continuous development of network technology, the emergence of our life changes, especially in the game this piece, there has been an unprecedented prosperity, all kinds of games to enter our life, and the original "Tetris", "Tank Wars", "greedy eat snake" and other classic games have been many people know, is how many 80 or even 90 after the talk.

Based on the design of the Java Tank Wars game using java language for the object of thought, in the process of design, the game of all objects are given the concept of the object and attribute. The game's design is in the game, the players, through the upper and lower keys to control the tank, and hit the shell, to destroy all the enemies for the purpose of the game. In the course of the game, the enem y's tanks will also be intelligent to escape the players to play out the bullet. Through the game design, is a convenient and flexible use of Java language.

Keywords: network technology, Java, object-oriented, intelligent

第一章游戏简要说明

《坦克大战》作为曾经风靡全球的一款FC游戏,可谓是曾经经典中的经典,其极为出色的游戏性令全球众多玩家为之疯狂,更是多少80后甚至90后津津乐道的游戏之一。

《坦克大战》是一款以红白机为平台操作设计游戏。玩家通过控制自己的坦克进行射击,以击毁敌方坦克为目的,每个关卡中有着不同的地形和障碍物,玩家可以利用地形中的障碍物进行射击,障碍物可以阻挡敌方的坦克的子弹,同时,也可以阻挡玩家自身打出来的子弹。因此在游戏中,玩家要利用好地图中的障碍物,来保障自身的安全,以达到消灭敌军的目的。在游戏中,还设置了有各种各样的补给。

游戏中坦克能向八个方向移动和开炮,并且坦克与坦克之间不可相互穿越。坦克打出来的炮弹若击中对方,就会产生爆炸现象。玩家的坦克不仅有生命值,而且还有生命个数,当玩家坦克遭到敌方坦克子弹的击打之后,玩家坦克的生命值就会减少,当玩家坦克的生命值减到0时,玩家的坦克就爆炸,同时也会减少一辆坦克数量,玩家也可以通过地图上随机出现的血块来增加自己的血量。当玩家消灭所有的敌方坦克的时候,此时游戏结束;若玩家的坦克被打死,可以按F2键进行开始新的游戏。

其操作简单且娱乐性强,是一款男女老少皆宜的游戏。游戏附带地图编辑器,玩家可自行编辑地图进行游戏。游戏中的众多经典关卡至今还让许多玩家记忆犹新,在80年代时曾经在无数家庭中带来了无尽的欢乐。

第二章开发环境介绍

2.1 开发环境

操作系统:win8.1

开发语言:java

开发工具:Eclipse

2.2 java语言特点简介

(1)简单

java语言的语法很简单,容易掌握,并且它是纯面向对象的语言。Java 语言的简单性可以在下面几点体现出来:

1.1语言的语法与C++很相似,从某种角度上说,java是C和C++转变来的,因此,学过C语言的人员可以很轻松的掌握java的语法。

1.2java对C++语言进行了提高和简化。如,java取消了指针,并且使用接口取代了多重继承,因指针和多重继承往往使程序变得复杂。

1.3 java提供了很多类库,API文档和第三方开发包,此外,还有丰富的基于java的开发项目,JDK已经开放源代码,学者可通过分析这些源代码,从而来提高自己的水平。

(2)面向对象

面向对象是java语言的最重要的部分,同时也是java语言的基础部分,java语言本身就是一种纯面向对象的语言。在Java语言中,提倡万物皆面向对象,语法中不能在类外面定义单独的数据和函数,简而言之,java语言最外部的函数类型是对象,所有的元素只能通过类和对象来访问。

(3)分布性

Java语言的分布性包括操作分布和数据分布,操作分布是指在多个不同的主机上布置相关操作。

(4)可移植性

Java语言程序具有与体系结构无关的特性,可以很方便的移植到不同型号的计算机中。此外,java的类库中也实现了多不同平台的接口,使得这些类库可以移植。

(5)解释性

Java语言程序的运行需要解释器。任何移植了java解释器的计算机或者其他设备都可以用java字节码进行解释执行。字节码独立于平台,他本身携带了许多编译时的信息,使得连接过程更加简单,开发过程更加迅速,更加具有探索性。

(6)安全性

Java语言没有像C语言中的指针和内存释放等语法,可以有效避免非法操作内存,并且java代码要经过指针校验,代码校验等测试步骤才能运行,因此,可以很好的保护系统平台。

(7)健壮性

java程序是以编写多方面的、可靠性的运用为目标的。在编译运行时可以检查错误,消除错误。能更好的帮助用户检测早期出现的错误。

(8)多线程

多线程机制能够让程序在同一个时间点同时运行多个任务,同时相应的同步机制可以保证不同线程能够正确的共享数据。

(9)高性能

java编译后的字节码是在解释器中运行的,因此它的速度比多数交互式运用程序提高了许多,此外,字节码可以在程序运行时被翻译成特定平台的机器指令,从而实现运行速度的提高。

(10)动态

java语言在很多方面比C或C++更能适应发展的环境,可以动态调整库中的方法和增加变量,而客户端却不需要任何更改。在java中进行动态调整是非常简单和直接的。

2.3 Eclipse开发工具的简介

Eclipse是由IBM公司投资4000万美元开发的集成开发工具。它是基于java语言编写,并且是开放源代码的、可扩展的,也是目前全球最流行、使用最多的java开发工具之一。另外,IBM公司捐出Eclipse源代码,组建Eclipse联盟,它专门负责这种工具的后续开发。Eclipse为程序员提供了很好的java程序开发环境,它的平台系统结构是在插件概念的基础上构建起来的,插件是Eclipse平台最具有特色的特征,同时也是区别于其他开发工具的特征之一。

第三章系统总体设计

3.1程序功能的总和

表(1)程序表的功能

程序名程序功能

TankClient.java 游戏的主窗口

Tank.java 坦克的数据和方法

Missile.java 炮弹的数据和方法

Explore.java 爆炸的数据和方法

Wall.java 墙的数据和方法

Blood.java 血块的数据和方法

3.2主体模块

主体是由TankClient.java文件来实现的,主要负责各个类的调用和游戏窗口的创建。该类中的变量还有:

1.游戏的高度 int GAME_HEIGHT

2.游戏的宽度 int GAME_WIDTH

此外,lauchFrame()方法、paint()方法和update( )方法也包括在该类中,其功能分别为实现显示坦克主窗口、重画时调用和使用双缓冲消除闪烁现象。

3.3子弹模块

子弹模块由Missile.java文件实现,可以实现子弹打坦克和判断子弹是否是活着的功能。该类的变量有如下:

1.x方向上的速度int XSPEED

2.Y方向上的速度int YSPEED

3.子弹的高度 int HEIGHT

除了这几个变量外,hitTank( )方法和Islive( )方法也包括在该类中,其

功能分别为实现子弹撞坦克和判断子弹是否还活着。

3.4坦克模块

在坦克模块中可以实现很多功能,如:创建坦克,让坦克能打出子弹,处理坦克和墙相互穿越的问题,为玩家坦克加入血条以及让敌人的坦克智能化的问题。在Tank类中的变量有:

1.x方向上的速度int XSPEED

2.Y方向上的速度int YSPEED

3.坦克的高度 int HEIGHT

该类中还包括collidesWithWall( )方法和Eat( )方法,其功能分别为实现判断坦克和墙相撞的问题和坦克吃到血的问题。

3.5 墙模块

该模块由Wall.java文件实现,在游戏添加两堵墙,处理坦克和墙相撞的问题。Wall类中成员变量有:

1.坦克在x方向上的速度 int XSPEED

2.坦克在y方向上的速度 int YSPEED

3.坦克的高度 int HEIGHT

该类中还包括collidesWithWall( )方法,其功能为处理坦克和墙相撞的问题。

3.6血液模块

该模块由Blood.java文件实现,添加必要的方法,让血块按照一定轨迹运动,并在一定时间消失。该类中的变量有:

1.血块在X轴的坐标int X

2.血块在X轴的坐标int Y

3.血块的高度 int H

该类中还包括Move()方法和islive()方法,其功能分别为处理血块移动的问题和判断血块是否还活着的问题。

3.7爆炸模块

该模块由Explode.java文件实现,击毙一辆坦克后产生爆炸。该类中的变量有:

1.坦克生死的描述boolean Live

2.主类的变量 TankClient Tc

该类中还包括GetDefaultToolkit()方法Draw(Graphics)方法,其功能分别为拿到的工具包和画爆炸现象。

第四章游戏详细设计过程

4.1创建游戏窗口

在游戏设计的前期,要先创建游戏的界面,也就是要为所设计的游戏创建一个窗口,可通过如下代码实现:

import java.awt.*;

public class TankClient extends Frame{

public void lauchFrame(){

this.setLocation(400,300);

this.setSize(800,600);

setVisible(true);

}

public static void main(String[] args) {

TankClient tc = new TankClient();

https://www.wendangku.net/doc/1511630683.html,uchFrame();

}

}

当运行代码是会发现,这样建立的窗口的大小是可以随意变化的,然而在实际中我们不希望窗口任意改变,这样不仅影响了用户体验,而且还会影响游戏的可行性,因此,我们需要对现有的窗口进行有必要的改进,把窗口的大小固定,改进的代码如下:

import java.awt.*;

import java.awt.event.*;

public class TankClient extends Frame{

public void lauchFrame(){

this.setLocation(400,300);

this.setSize(800,600);

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

this.setResizable(false);

setVisible(true);

}

public static void main(String[] args) { TankClient tc = new TankClient();

https://www.wendangku.net/doc/1511630683.html,uchFrame();

}产生如下不可随意改动窗口:

图(1)游戏窗口

4.2改变游戏背景颜色。

图(2)改变颜色的游戏窗口

this.setBackground(color.GREEN);/*改变背景颜色,这里改为绿色,我们还可以改成其他的颜色*/

4.3创建坦克

我们用创建一个实心圆来表示游戏中的坦克,此坦克代表我方的坦克,通过重写paint方法来实现。

图(3)我方坦克的创建

public void paint(Graphics g) {

Color c = g.getColor();

g.setColor(Color.RED);

g.fillOval(50, 50, 30, 30);

g.setColor(c);

}

4.4 让坦克动起来

上面我们所创建的坦克还不能动,显然不是我们要设计游戏的目的,因此。我们要给我们所设计的坦克赋予“生命”。

具体实现步骤为:

(1)将位置改变为变量;

(2)启动线程不断重画;

(3)每次重画改变坦克的位置。

需要注意的是x,y值得含义指的是小方块左上角的点。

图(4)单个坦克单个方向移动

private class PaintThread implements Runnable {

public void run() {

while(true) {

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

4.5改变窗口的大小

很多时候我们需要调节窗口的大小,在程序少的情况下我们可以通过直接改程序中的参数,但是,当我们的程序变得很多的时候,我们会发现当我们要改窗口的大小时,会觉得力不从心,不仅要改的地方很多,既费时又费力,而

且还很容易出错,这时,我们可以给窗口的宽度和高度定义一个变量,通过代

码重构实现,将以后可能需要多处改变的量定义为常量。如下: public static final int GAME_WIDTH=800; public static final int GAME_HEIGHT=640;

以后我们需要用到窗口尺寸的地方就可以用GAME_WIDTH 、GAME_HEIGHT 来代替,这样就可为我们的以后修改提供很多便捷。

注意:常量一般是 public static final 的。且常量名一般都用大写。

4.6让坦克受控制

在4.4中我们建立的坦克虽然可以移动,但移动方向为一直向下,且不受控制,因此我们要为TankClient 建立一个键盘监听类,让坦克听从我们的控制。 步骤:(1)添加键盘监听器类KeyMonitor ;

(2)TankClient 添加键盘监听器;

(3)针对不同的键改变坦克的位置,与重画线程结合产生不同方向运动。

图(5)可向四个方向移动的坦克

private class KeyMonitor extends KeyAdapter{ public void keyPressed(KeyEvent e){ int key=e.getKeyCode(); switch(key){

case KeyEvent.VK_LEFT:

x-=5;

break;

case KeyEvent.VK_UP:

y-=5;

break;

case KeyEvent.VK_RIGHT:

x+=5;

break;

case KeyEvent.VK_DOWN:

y+=5;

break;

}

}

}

4.7创建一个Tank类

1.将坦克单独包装成类

2.步骤:(1)建立坦克类;

(2)为Tank类添加成员变量x,y;

(3)添加draw方法,使Tank类独立控制自己的画法;

(4)添加Tank类的处理按键的方法;

(5)根据Tank类修改TankClient类。

import java.awt.*;

import java.awt.event.*;

public class Tank {

int x,y;

public Tank(int x, int y) {

this.x = x;

this.y = y;

}

public void draw(Graphics g){

Color c=g.getColor();

g.setColor(Color.RED);/*坦克是颜色*/

g.fillOval(x, y, 30, 30);

g.setColor(c);

}

public void keyPressed(KeyEvent e){

int key=e.getKeyCode();

switch(key){

case KeyEvent.VK_LEFT:

x-=5;

break;

case KeyEvent.VK_UP:

y-=5;

break;

case KeyEvent.VK_RIGHT:

x+=5;

break;

case KeyEvent.VK_DOWN:

y+=5;

break;

}

}

}

4.8让坦克向8个方向移动

前面所设计的坦克只能朝4个方向走,为了让游戏更加具有可玩性,我们为坦克再添加四个方向,让坦克能够朝8个方向移动。具体的步骤为:(1)添加记录按键状态的布尔量;

(2)添加代表方向的量(枚举);

(3)根据按键状态确定Tank的方向;

(4)根据方向进行下一步的移动(move)。

void move(){

switch(dir){

case L:

x -= XSPEED;

break;

case LU:

x -= XSPEED;

y -= YSPEED;

break;

case U:

y -= YSPEED;

break;

case RU:

x += XSPEED;

y -= YSPEED;

break;

case R:

x += XSPEED;

break;

case RD:

x += XSPEED;

y += YSPEED;

break;

case D:

y += YSPEED;

break;

case LD:

x -= XSPEED;

y += YSPEED;

break;

case STOP:

break;

}

}

public void keyPressed(KeyEvent e){

韩顺平java坦克大战1.0版本_源代码

/**画坦克1.0 */ import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JPanel; public class MyTankGame extends JFrame { MyPanel mp=null; public static void main(String[] args) { MyTankGame mtk=new MyTankGame(); } public MyTankGame() { mp=new MyPanel(); this.add(mp);//把面板加入窗体 //注册监听 this.addMouseListener(mp); this.addKeyListener(mp); this.addMouseMotionListener(mp); this.addWindowListener(mp); this.setTitle("坦克大战");//窗体标题 this.setSize(600,400);//大小,宽,高(像素) this.setLocation(300,300);//显示位置。左边距,上边距 //禁止用户改变窗口大小 this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);//显示 } } //我的面板 class MyPanel extends JPanel implements

项目坦克大战设计报告

《JA V A程序开发课程设计》项目设计 项目名称:TankWar 软件 专业:软件工程班级:13软工1班姓名:毛晨光学号:24 一、需求分析: 基本功能: 1.玩家控制的坦克能够四处移动并且打击敌方坦克; 2.敌方坦克能够随机四处移动并且打击玩家控制的坦克; 3.玩家控制的坦克拥有血量,而敌方坦克没有; 4.坦克受到攻击时血条会缩短; 5.敌方坦克被消灭完之后,提示游戏胜利; 6.用户方坦克被消灭后提示游戏结束; 特色功能: 1.坦克具有图片,不单单只是个圈圈。 2.增加了血包功能,地图上会随机出现一个血包,我方坦克开过会增加 血量。 二、系统设计: 类:实现游戏界面地图的初始化。 类:绘制和重绘功能。 :监听用户的键盘输入。 类:实现坦克的初始化,绘制,移动,发射等功能。 :实现敌方坦克的初始化,绘制,移动,发射等功能。 类:实现炮弹的初始化,绘制,移动,攻击功能。 类:实现爆炸的初始化。绘制功能,爆炸效果由绘制半径从小到大再到小的圆实现。 类:包含枚举。 类:用于实现血包的功能。 三、功能实现。 一.绘制地图功能: public class TankMap extends Frame{ tart(); }

制坦克功能:public class Tank { 方坦克的绘制方法 public class EnemyTank extends Tank{ 弹绘制方法public class Shell { ntersects())){

ntersects())){ "hittanks"); (false); =false; Explor ex=new Explor(x-3,y-3,; return true; } } return true; } }

坦克大战程序代码

import java.awt.* ; import javax.swing.* ; import java.awt.event.*; import java.util.EventListener; class f extends JFrame { f(String title) { this.setTitle(title) ; this.setSize(608 , 630) ; this.setLocation(300 , 100) ; this.setBackground(Color.BLACK) ; MyTank mp = new MyTank() ; this.add(mp) ; this.addKeyListener(mp) ; new Thread(mp).start() ; } public static void main(String[] args) { f h = new f("坦克大战(版本1.0)") ; h.setVisible(true) ; } } //主战坦克 class MyTank extends JPanel implements KeyListener , Runnable { int x = 280, y = 280 ;//坦克的初始位置 int op = 1 ;//坦克的移动方向 int color = 0 ; int tankspeed = 8 ;//坦克的速度 int tankbullet = 8 ;//坦克的子弹速度 int tankfbullet = 4 ;//敌军的子弹速度 int shengming = 100 ;//生命 int fenshu = 0 ; int nandu = 5 ; //设置游戏难度 //子弹 int dx = 295 , dy = 295 ; int dx1 = 295 , dy1 = -10 ; int dx2 = 600 , dy2 = 295 ;

Java语言坦克大战游戏设计(附有代码和图片)

JISHOU UNIVERSITY 本科生毕业设计 题目:基于java语言坦克大战游戏开发作者: 学号: 所属学院:信息科学与工程学院 专业年级: 指导教师:职称: 完成时间: 吉首大学教务处制

目录 基于java语言坦克大战游戏开发 (1) 摘要 (1) Based on the development of Java language Tank Wars Game (2) 第一章游戏简要说明 (3) 第二章开发环境介绍 (4) 2.1 开发环境 (4) 2.2 java语言特点简介 (4) 2.3 Eclipse开发工具的简介 (5) 第三章系统总体设计 (6) 3.1程序功能的总和 (6) 3.2主体模块 (6) 3.3子弹模块 (6) 3.4坦克模块 (7) 3.5 墙模块 (7) 3.6血液模块 (7) 3.7爆炸模块 (8) 第四章游戏详细设计过程 (9) 4.1创建游戏窗口 (9) 4.2改变游戏背景颜色。 (11) 4.3创建坦克 (11) 4.4 让坦克动起来 (12) 4.5改变窗口的大小 (13) 4.6让坦克受控制 (14) 4.7创建一个Tank类 (15) 4.8让坦克向8个方向移动 (16)

4.9修改4.8中所设计的不足 (18) 4.10添加子弹类 (19) 4.11根据己方坦克的位置,打出子弹 (21) 4.12修改坦克停下来不能打出子弹的问题 (21) 4.13让坦克能够打出多发子弹 (23) 4.14解决炮弹不消亡和坦克出界的问题 (23) 4.15增加敌方坦克 (24) 4.16击毙出现的敌方坦克 (25) 4.17加入爆炸效果 (26) 4.18添加多辆敌方坦克 (27) 4.19让敌方坦克智能化 (29) 4.20建立游戏障碍物 (31) 4.21阻止坦克互相穿越 (32) 4.22为我方坦克添加大招和血条 (33) 4.23添加血块 (34) 4.24重新载入敌军或我军坦克 (35) 4.25加入图片 (35) 第五章游戏的可行性测试 (37) 5.1游戏界面介绍 (37) 5.2游戏运行测试 (40) 第六章总结 (43) 参考文献 (44)

funcode C++课程设计坦克大战

课程设计一坦克大战 一、游戏介绍 相信大部分同学都玩过或看过“坦克大战”这款经典游戏。现在,就由我们自己动手来开发它。只要大家具备了C++语言和面向对象的基础知识,然后按照实验指南的指导一步一步进行下去,相信我们每个同学都能把这款经典游戏做出来。 二、实验目标 综合运用C++及其面向对象的知识开发一款小游戏。 三、实验内容 在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。游戏的具体要求如下: 1、游戏有一个初始页面,如下图。 2、按下任意键开始游戏,玩家控制坦克在战场上穿梭,碰到墙时,不能通过。 3、敌方坦克自由移动,每隔2秒改变一个方向,每隔3秒发射一发子弹。 4、敌方坦克每隔5秒出现一辆,从屏幕上方的左、中、右三个位置依次出现。 5、当玩家被消灭或者我方基地被摧毁或者游戏时间大于30秒的时候,游戏结束。 游戏开始前 进入游戏

四、游戏的整体框架 五、实验指南 实验准备 打开FunCode,创建一个新的C++项目。注意:项目名称必须为英文和数字,且不能有空格。 点击“项目”→“导入地图模板”,从对话框中选取名称为TankWar的模板导入。导入成功后,界面如下: 实验一游戏开始 【实验内容】 1、设置游戏标题 2、按空格键,提示图片消失,游戏进入开始状态. 【实验运行结果】 游戏开始前 按下空格键后 【实验思路】

按下空格键是键盘按下事件,可在CSystem::OnKeyDown函数中编写响应代码。为了保证程序结构的清晰、一致,更好的办法是在CGameMain类中添加一个相应的键盘按下事件处理函数,然后在CSystem::OnMouseClick函数中进行调用。 g_GameMain是CGameMain类的对象,它是全局变量,在程序运行时最先被创建。【实验指导】 1、C++程序的执行入口是主函数。FunCode的主函数名称叫WinMain,写在Main.cpp 文件中。CSystem::SetWindowTitle是设置程序运行窗口标题的函数,修改如下:CSystem::SetWindowTitle("坦克大战"); 2、参考CSystem::OnKeyDown函数,为CGameMain类创建一个OnKeyDown函数。 CGameMain类的头文件是LessonX.h文件,实现代码写在LessonX.cpp文件中。因此,先在LessonX.h文件对函数进行声明。函数的返回值和参数列表都与 CSystem::OnKeyDown函数保持一致。访问权限应该是public。代码如下: voidOnKeyDown(constintiKey,constboolbAltPress,constboolbShiftPress,cons tboolbCtrlPress); 3、接着,在Lesson.cpp文件中对该函数进行定义: voidCGameMain::OnKeyDown(constintiKey,constboolbAltPress,constboolbShif tPress,constboolbCtrlPress) { }

坦克大战java源代码审批稿

坦克大战j a v a源代码 YKK standardization office【 YKK5AB- YKK08- YKK2C- YKK18】

有些图片路径会出错要注意package ; import 坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { =x; =y; } public int getX() { return x; } public void setX(int x) { = x; } public int getY() { return y; } public void setY(int y) { = y; } public int getDirect() { return direct; } public void setDirect(int direct) { = direct; }

public int getColor() { return color; } public void setColor(int color) { = color; } } ; import .*; import .*; import .*; public class MyTankGame4 extends JFrame implements ActionListener{ MyPanel mp=null; MyStartPanel msp=null; quals("New Game")) { (msp); mp=new MyPanel(); Thread mt=new Thread(mp); (); (mp); (mp); (true); } } } etImage"/.jpg")); etImage"/")); image2=().getImage"/")); image3=().getImage"/"));

java开发坦克大战

j a v a开发坦克大战 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

坦克大战游戏演示为什么选择这个项目 1、好玩 2、涉及到java各个方面的技术 1、java面向对象编程; 2、界面编程; 3、绘图技术; 4、多线程; 5、文件i/o操作; 6、数据库 3、巩固旧知识,学习新知识 java绘图坐标体系 绘图坐标本系--介绍 坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。 坐标体系--像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图原理(1)[] Component类提供了两个和绘图相关最重要的方法: 1、paint(Graphicsg)绘制组件的外观 2、repaint()刷新组件的外观

当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件 .*; .*; publicclassWindow013extendsJFrame{ ; 7、画字符串drawString(Stringstr,intx,inty); 8、设置画笔的字体setFont(Fontfont); 9、设置画笔的颜色setColor(Colorc); ; .*; publicclassWindow014extendsJFrame{ ; .*; publicclassWindow015extendsJFrame{ ; .*; import publicclassWindow016extendsJFrameimplementsActionListener{ quals("黑色")){ 点击了黑色按钮"); ; }elseif().equals("红色")){ 点击了红色按钮"); ; }else{ 不知道"); } } } classCatimplementsActionListener{ publicvoidactionPerformed(ActionEventarg0){ if().equals("黑色")){ 也知道你按下了黑色按钮");

马士兵坦克大战经典源代码

package com.bjsxt.tank; import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.ArrayList; /** * 这个类的作用是坦克游戏的主窗口 * @author mashibing * */ public class TankClient extends Frame { /** * 整个坦克游戏的宽度 */ public static final int GAME_WIDTH = 800; public static final int GAME_HEIGHT = 600; Tank myTank = new Tank(50, 50, true, Tank.Direction.STOP, this); Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this); List explodes = new ArrayList(); List missiles = new ArrayList(); List tanks = new ArrayList(); Image offScreenImage = null; Blood b = new Blood(); public void paint(Graphics g) { /* * 指明子弹-爆炸-坦克的数量 * 以及坦克的生命值 */ g.drawString("missiles count:" + missiles.size(), 10, 50); g.drawString("explodes count:" + explodes.size(), 10, 70); g.drawString("tanks count:" + tanks.size(), 10, 90); g.drawString("tanks life:" + myTank.getLife(), 10, 110); if(tanks.size() <= 0) { for(int i=0; i<5; i++) { tanks.add(new Tank(50 + 40*(i+1), 50, false, Tank.Direction.D, this)); }

java开发坦克大战

坦克大战游戏演示 为什么选择这个项目 1、好玩 2、涉及到java各个方面的技术 1、java面向对象编程; 2、界面编程; 3、绘图技术; 4、多线程; 5、文件i/o操作; 6、数据库 3、巩固旧知识,学习新知识 java绘图坐标体系 绘图坐标本系--介绍 坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java 的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。 坐标体系--像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图原理(1)[Window013.java] Component类提供了两个和绘图相关最重要的方法: 1、paint(Graphics g)绘制组件的外观 2、repaint()刷新组件的外观 当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件 import java.awt.*; import javax.swing.*; public class Window013 extends JFrame{ //定义组件 MyPanel mp=null; public static void main(String[] args) { Window013 th=new Window013();

基于java的游戏坦克大战论文

基于j a v a的游戏坦克 大战论文 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

目录 1 2 5 1

第一章绪论 课题研究的背景 如今我们的生活节奏越来越快,每个人的生活压力也在不断变大,长期紧绷着神经容易产生心理和生理上的双重伤害,人们需要在工作和学习之外放松自己,玩玩游戏正是放松自己的方式之一。 坦克大战,一个众所周知的小游戏,曾经在红白机时代风靡一时。其界面简单,耐玩,关卡多,可玩性高,没有局限的年龄层。 Java是现在全球最时髦的开发工具之一,它拥有庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机,总之,Java的出现,确实给整个程序界带来了巨大的冲击,也许现在还无法准确评估Java为整个IT业带来的影响,但是有一点毋庸置疑—Java将不可避免的影响一带程序员。 使用Java作为开发工具,来做坦克大战这个小游戏,是一种很理性的选择。Java游戏可以在本地桌面系统下运行,也可以在Web浏览器下运行。 我在大学四年中学到了很多计算机的知识,JAVA语言,软件工程,数据结构,软件工程等课程。如今我将用我所学的知识来完成一个坦克大战游戏,来锻炼自己的动手能力,独立作出一个小程序。 课题研究的任务 本文中所做的主要工作如下: (1)介绍了制作坦克大战游戏的意义和目的。 (2)设计坦克大战游戏各个类,实现各类效果和目标。 (3)分析并解决游戏中的若干技术问题。 (4)完成坦克大战游戏,进行测试并分析结果.

第二章系统分析 课题的可行性分析 1、课题要求 (1)与实践活动和相关的文件和资料由教师提供。 (2)本课题要求学生有熟练的Java开发能力,有较强的自学能力。 (3)具体问题再做详细调查研究并与指导老师面谈。 2、可行性分析 技术可行性:游戏对机器没有多大要求,现在无论什么电脑,只要能安装J2SDK,就能在电脑上开发这款游戏。制作出来的游戏可以在本地桌面运行,也可在WEB上运行,现在JAVA语言非常成熟,完全能够完成这个游戏。 经济可行性:开发这个游戏除了耗费自己的时间和精力以外,不需要其他的资金问题,完成后放到网上开放下载,无需任何费用,有兴趣的人可以自己下载来玩。 需求分析 在游戏中需要实现的功能: (1)能够通过键盘自由控制坦克移动和发射子弹; (2)敌方坦克能够随机移动和随机发射子弹; (3)子弹和不同阵营坦克碰撞后会产生爆炸; (4)消灭敌方坦克后会有个计分板记录玩家得分 (5)游戏进行到一半时可以暂停退出,下次打开游戏时选继续游戏可以继续之前的游戏。 第三章系统总体设计 游戏总体流程设计 开始新游戏时,先进行初始化,然后调用敌方坦克类和我方坦克类,实现键盘监听功能,战场显示所有坦克的移动,发射子弹。判断子弹和敌方坦克的碰撞,调用爆炸类,调用记录类,修改玩家总得分。

坦克大战课程设计论文

坦克大战游戏设计 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构建游戏主类

坦克大战程序源代码

import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.*; public class TankClient extends Frame { private static final long serialVersionUID = 1L; public static final int GAME_WIDTH=800; public static final int GAME_HIGH=600; Tank myTank=new Tank(50,50,this,true); List tanks=new ArrayList(); List missles=new ArrayList(); private static Random r=new Random(); Wall w1=new Wall(300,100,300,40,this),w2=new Wall(100,150,40,300,this); AddBlood Addb=new AddBlood(); List explodes = new ArrayList(); Image offScreenImage=null; public void paint(Graphics g) { g.drawString("missles count:"+missles.size(), 10,50); g.drawString("tanks count:" + tanks.size(), 10, 70); g.drawString("exlpode count:" +explodes.size(), 10, 90); g.drawString("mytank life:" + myTank.getLife(), 10, 110); for(int i=0;i

java坦克大战毕业设计论文

基于J2SE的网络版坦克大战游戏设计 摘要 [摘要]:J2SE (Java 2 Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程,是伴随着计算机技术的飞速发展而诞生的一项新的开发技术。随着个人电脑的日益普及、Java 功能在个人电脑上的实现,Java应用程序产生的单机增值服务逐渐体现出其影响力,对丰富人们的生活内容、愉悦身心、开发智力等起着不可忽视的作用。该论文通过总结和分析JA V A 游戏的开发流程和代码框架的设计,开发了一款基于J2SE架构的游戏——坦克大战。本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克能向八个方向移动,并且打出炮弹,子弹击中敌人坦克,子弹和敌人坦克同时消失,产生爆炸,CPU坦克能智能的移动并且打出炮弹。能够支持网络对战和单机对战两种模式。 Java良好的跨平台特性在软件的开发中显示出了巨大的威力,“一次编写,随处运行”,java 系统可以运行在不同的操作系统和硬件上。随着linux的持续增长以及MacOSX完全支持java 技术,跨平台的特性变得越来越有分量。 由于免费、跨平台、java语言本身技术先进,在高校中,java已经成为许多学科研究、课程和计算的首选语言,用java做上机作业,一般都是鼓励的。据我所知,北大、清华许多院系的研究生入学考试都可以用java语言答题。实际上,用java来完成这些工作,大多数情况下要比用C或其他语言简洁得多,你可以把注意力集中在算法等核心部分,从而获得更高分数。 [关键词] 面向对象坦克大战游戏J2SE Socket

坦克大战java源代码

有些图片路径会出错要注意package com.tankgame; import java.util.Vector; //坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { this.x=x; this.y=y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getDirect() { return direct; } public void setDirect(int direct) { this.direct = direct;

} public int getColor() { return color; } public void setColor(int color) { this.color = color; } } //我的坦克 class Hero extends Tank { Shot shot=null; Vector shotm=new V ector(); public Hero(int x,int y) { super(x,y); this.color=5; } //坦克具有一个打击敌人的方法 public void shotenemy(int x,int y,int direct) { switch(direct) { case 0: shot=new Shot(this.x+10,this.y,0); shotm.add(shot); break; case 1: shot=new Shot(this.x+30,this.y+10,1); shotm.add(shot); break; case 2: shot=new Shot(this.x+10,this.y+30,2); shotm.add(shot); break; case 3: shot=new Shot(this.x,this.y+10,3); shotm.add(shot);

java写的坦克大战简易版

MyTankGame2.java package test; import javax.swing.*; import java.awt.*; import java.awt.event.*; //import java.io.*; import java.util.*; class MyTankGame2 extends JFrame implements ActionListener { MyPanel mp=null; //定义一个开始的面板 MyStartPanel msp=null; //做出我需要的菜单 JMenuBar jmb=null; //开始游戏 JMenu jm1=null; JMenuItem jmi1=null; //退出系统 JMenuItem jmi2=null; //存盘退出 JMenuItem jmi3=null; JMenuItem jmi4=null; public static void main(String[] args) { //System.out.println("Hello World!"); MyTankGame2 mtg=new MyTankGame2(); } //构造方法 public MyTankGame2() { //创建菜单及菜单选项 jmb=new JMenuBar(); jm1=new JMenu("游戏(G)"); //设置助记符 jm1.setMnemonic('G'); jmi1=new JMenuItem("开始新游戏(N)"); jmi2=new JMenuItem("退出游戏(E)"); jmi3=new JMenuItem("存盘退出游戏"); jmi4=new JMenuItem("继续上局游戏"); jmi4.addActionListener(this);

基于Java的网络版坦克大战游戏设计_毕业设计

伊犁师范学院 本科生毕业论文(设计) 论文题目:基于Java的网络版坦克大战游戏设计

基于Java的网络版坦克大战游戏设计 (伊犁师范学院计算机科学系06-2班,新疆伊宁市 835000) 摘要:本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克移动并能够智能的打出炮弹,躲避子弹,炸毁对方坦克。能够支持网络对战和单机对战两种模式。 关键词:面向对象;坦克大战;网络游戏;Java;Socket 类 中图分类号:TP311.1 目录

摘要 ......................................................................... 第1章前言.. (1) 1.1游戏设计的需求分析 (1) 1.1.1国内外电子网络游戏的现状 (1) 1.1.2本系统的现实意义 (1) 1.1.3本系统和其他开发游戏区别 (2) 1.2开发技术概述 (2) 1.2.1J AVA、C语言、C++三种主流编程技术比较 (2) 1.3本章小结 (2) 第2章相关技术理论 (3) 2.1系统运行环境 (3) 2.1.1系统运行的软件环境 (3) 2.1.2系统运行的硬件环境 (3) 2.2相关理论 (3) 2.2.1关于E CLIPSE的介绍 (3) 2.2.2J2SE框架 (3) 2.2.3联机通信机制 (4) 2.2.4J AVA图形编程 (5) 2.3本章小结 (5) 第3章系统设计 (5) 3.1系统可行性分析 (6) 3.1.1技术可行性 (6) 3.1.2经济可行性 (6) 3.1.3操作可行性 (6) 3.2系统需求分析 (6) 3.2.1在人机对战模式下实现的功能 (6) 3.2.2在网络对战模式下实现的功能 (6) 3.3系统功能设计 (6) 3.3.1坦克大战总体功能设计 (7)

毕业设计论文 基于J2ME的Java游戏--坦克大战的开发

目录 摘要 ................................................................................................................... - I - Abstract .................................................................................................................... - I - 引言 ...................................................................................................................... II 第一章绪论 .................................................................................................... - 1 - 1.1 手机软件现状.......................................................................................... - 1 - 1.2 游戏业务及J2ME概况............................................................................ - 1 - 1.3 任天堂(Nintendo)的8位FC机器和Battle City背景介绍............ - 3 - 1.4 本章小结.................................................................................................. - 3 - 第二章开发环境及相关技术的介绍 ................................................................ - 5 - 2.1 开发环境.................................................................................................. - 5 - 2.2 Java语言的特点..................................................................................... - 5 - 2.3 关于JBuilder9....................................................................................... - 5 - 2.4 关于Wireless Tool Kit....................................................................... - 6 - 2.5 Java Appication Manager.................................................................... - 6 - 2.6 本章小结.................................................................................................. - 6 - 第三章程序结构、思想和相关技术 ................................................................ - 7 - 3.1 本程序需解决的有关技术问题.............................................................. - 7 - 3.2 程序流程.................................................................................................. - 8 - 3.3 绘图与MIDP2.0新增的GameCanvas包.............................................. - 10 - 3.3.1 提供低级绘制的Canvas类....................................................... - 10 - 3.3.2 Graphics类................................................................................ - 10 - 3.3.3 PNG格式...................................................................................... - 10 - 3.3.4 Game包中的新功能.................................................................... - 11 - 3.3.5 有关绘图的一些技术................................................................. - 12 - 3.4 坦克的控制和敌方的智能运行............................................................ - 12 - 3.5 子弹的运行和控制................................................................................ - 13 - 3.6 RMS数据库系统..................................................................................... - 14 - 3.7 内存使用的最佳化................................................................................ - 15 - 3.8 混淆器(Obfuscator)的使用................................................................ - 16 - 3.9 模拟器的相关调试................................................................................ - 16 - 3.10 本章小结.............................................................................................. - 17 - 第四章程序分析和具体实现 .............................................................................. - 18 - 4.1 游戏进入前的选择................................................................................ - 18 - 4.2 主游戏逻辑及其涉及到的若干类........................................................ - 19 - 4.3 坦克的共同行为.................................................................................... - 21 - 4.4 玩家坦克的功能属性............................................................................ - 22 - 4.5 敌人坦克的功能属性............................................................................ - 22 - 4.6 子弹的运行和控制................................................................................ - 24 - 4.7 记分系统................................................................................................ - 25 -

相关文档
相关文档 最新文档