首 页 | 关于我们 | 课程设置 | 咨询报名 | 学员作品 | 网上教学 | 实习就业 | 诚征加盟 | 出国留学 |
 
北京金海韩国游戏学院—学生作品《疯狂坦克》

目录:

一、概述:......................................................1

1游戏介绍:....................................................1

2推荐配置:....................................................2

3游戏特色:....................................................2

二、游戏角色设计:..............................................2

三、游戏过程截图: ..............................................3

四、项目评语: .................................................5

附录:游戏设计: ...............................................6

一、概述

1、游戏介绍:

游戏名称:《疯狂坦克》

游戏题材:敌方坦克来袭,守卫我方根据地。

游戏风格:射击

游戏类型:即时战斗

运行环境:支持jvm虚拟机的浏览器

开发工具:J2SE

操作方式:键盘

游戏启动方式:进入游戏画面后,用鼠标左键点击屏幕任意位置,游戏即可启动。

方向控制:up down left right

射击炮弹:S键

游戏操作环境:Windows98操作系统以上

2.推荐配置:

处理器CPU: 赛扬1.0

显卡: 集成

声卡: 集成

硬盘: 1M

内存:32MB RAM

操作系统:支持jvm虚拟机的浏览器的操作系统

网络下载: 56K 以上Modem 宽带:(ADSL,Cable Modem)

发行区域:北京

策划编程人员:2 人

所在学校:北京金海计算机培训学校

用户群体:6-30岁

  • 游戏特色:

(1)紧张生活中的简单娱乐,一个小小的射击类游戏!

(2)操作方法简单易学。

(3)有攻有守,还可两人配合作战。操作你的坦克,移动炮筒,狠狠的打击侵略者。玩家可享受射击的快感,体验战斗的激烈。喜欢小游戏的玩友请不要错过。

二、游戏角色设计 游戏涉及图片:

1.敌方坦克:

2.我方坦克:

3.陷阱:
       
4.战壕:

5.奖励物品(我方坦克吃后可增强攻击力和自我保护):

6.我方根据地:

三、游戏过程截图

可用方向键控制坦克移动方向,S键发射炮弹。

右方边框内显示的是玩家所得的分数和剩余的我方坦克数量.

游戏失败截图:


过关提示图:


第二关截图:

下图是我方坦克吃奖励物品时的截图(红圈内所示):

四、项目评语

:评语:北京金海计算机培训学校海标工作组(陈余,张卫,黄月光,倪时伟,扬宏毅)设计的游戏是基于Applet平台的游戏,此款游戏功能齐全,编码规范,而且有很好的移植性,稍加修改就能移植到各种无线平台,操作简单,体现了软件开发者先进的编程思想和优秀设计者的素质。我们课程分为三大部(初级,中级,高级)分学员完成游戏是在仅仅学完初级(java语言基础)之后,在没有系统讲解游戏的设计和游戏项目的情况下,设计出来的,可以预见,等到我们全部学习结束之后,一定能成为出色的游戏开发者。

指导老师: 许文超

附录:游戏设计

【教师评语】面向对象的思想理解的非常好,考虑周全,设计规范合理,条理清晰,可读性好。在初级教学中已经展现了他们良好的素质,相信在以后不但深入的学习学员们能取得更大的成功。

游戏程序设计

/**

* 坦克游戏

* 游戏主方法

* 游戏规则:消灭所有的敌方坦克,同时保卫自己的基地不被击毁

* 方向键控制运动S键开火

*/

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

public class CombatTank34 extends Applet

implements KeyListener, ActionListener

{

private Image offScreenImage;

private final Rectangle Border = new Rectangle(12, 12, 498, 498);

private int GameFlow;

private levels Level;

private int LevelNo;

private Ticker t;

private base Base;

private Image BASE[];

private int steelhome;

private int sheild;

private int timestop;

private int life;

private int Score;

private boolean gameover;

private boolean stageclear;

private boolean drawVictoryPics;

private Tank tank;

private Image tankImage[];

private int Enemyindex;

private int EnemyNo;

private int Enemylimits;

private Enemy1 E1[];

private Image E1Image[];

private Enemy2 E2[];

private Image E2Image[];

private Enemy3 E3[];

private Image E3Image[];

private Enemy4 E4[];

private Image E4Image[];

private wall Wall[];

private Image WALL;

private Steelwall SteelWall[];

private Image STEELWALL;

private riverRiver[];

private ImageRIVER;

private grass Grass[];

private bullet tankBullet[];

private int indexOftankBullet;

private int tankbulletspeed;

private int tankbulletNumber;

private int bulletpower;

private int tankbulletinterval;

private int TBI;

private bullet enemyBullet[];

private smallBomb SB[];

private int indexOfSB;

private bigBomb BB[];

private int indexOfBB;

private powerup PowerUp[];

private int indexOfpu;

private Image PUimage[];

private boolean UP_TYPED;

private boolean DOWN_TYPED;

private boolean RIGHT_TYPED;

private boolean LEFT_TYPED;

private boolean fire_TYPED;

/**

* 构造方法

*/

public CombatTank34()

{

steelhome = -1;

sheild = -1;

life = 3;

Score = 0x989680;

tankImage = new Image[16];

E1Image = new Image[8];

E2Image = new Image[8];

E3Image = new Image[8];

E4Image = new Image[20];

TBI = 7;

}

/**

* 初始化

*/

public void init()

{

Base = new base();

BASE = new Image[2];

sheild = 200;

tank = new Tank(223, 498, 0, 1);

Enemyindex = 0;

EnemyNo = 3;

Enemylimits = 20;

E1 = new Enemy1[Enemylimits];

E2 = new Enemy2[Enemylimits];

E3 = new Enemy3[Enemylimits];

E4 = new Enemy4[Enemylimits];

LevelNo = 1;

Level = new levels(LevelNo);

Wall = new wall[Level.getwalls().length];

Wall = Level.getwalls();

Wall[0] = new wall(248, 498, 2);

Wall[1] = new wall(273, 498, 3);

Wall[2] = new wall(248, 473, 1);

Wall[3] = new wall(273, 473, 1);

SteelWall = new Steelwall[Level.getSteelwalls().length];

SteelWall = Level.getSteelwalls();

River = new river[1];

River[0] = new river(600, 600);

Grass = new grass[1];

Grass[0] = new grass(650, 650);

SB = new smallBomb[10000];

indexOfSB = 0;

BB = new bigBomb[10000];

indexOfBB = 0;

PowerUp = new powerup[1000];

indexOfpu = 0;

PUimage = new Image[7];

tankBullet = new bullet[10000];

indexOftankBullet = 2;

tankbulletspeed = 7;

tankbulletNumber = 1;

tankbulletinterval = 8;

bulletpower = 1;

enemyBullet = new bullet[Enemylimits];

BASE[0] = getImage(getDocumentBase(), "image\\Base1.jpg");

BASE[1] = getImage(getDocumentBase(), "image\\Base2.jpg");

for(int i = 0; i < 16; i++)

{

tankImage[i] = getImage(getDocumentBase(), "image\\T" + (i + 1) + ".jpg");

}

for(int j = 0; j < 8; j++)

{

E1Image[j] = getImage(getDocumentBase(), "image\\EN1" + (j + 1) + ".jpg");

}

for(int k = 0; k < 8; k++)

{

E2Image[k] = getImage(getDocumentBase(), "image\\E2" + (k + 1) + ".jpg");

}

for(int l = 0; l < 8; l++)

{

E3Image[l] = getImage(getDocumentBase(), "image\\E3" + (l + 1) + ".jpg");

}

for(int i1 = 0; i1 < 20; i1++)

{

E4Image[i1] = getImage(getDocumentBase(), "image\\E4" + (i1 + 1) + ".jpg");

}

WALL = getImage(getDocumentBase(), "image\\Wall-new.jpg");

STEELWALL = getImage(getDocumentBase(), "image\\SteelWall-new.jpg");

RIVER = getImage(getDocumentBase(), "image\\water.jpg");

for(int j1 = 0; j1 < 7; j1++)

{

PUimage[j1] = getImage(getDocumentBase(), "image\\PU" + (j1 + 1) + ".jpg");

}

addKeyListener(this);

requestFocus();

t = new Ticker(30);

t.addActionListener(this);

t.start();

}

public void stop()

{

}

public void destroy()

{

t.stop();

}

public void actionPerformed(ActionEvent actionevent)

{

GameFlow++;

for(int i = 0; i <= indexOfpu; i++)

{

if(PowerUp[i] == null)

{

continue;

}

PowerUp[i].flashing();

if(PowerUp[i].stopDisplay())

{

PowerUp[i] = null;

}

}

if(steelhome > 0)

{

steelhome--;

}

if(steelhome == 0)

{

for(int j = 0; j < 4; j++)

{

SteelWall[j] = null;

}

Wall[0] = new wall(248, 498, 2);

Wall[1] = new wall(273, 498, 3);

Wall[2] = new wall(248, 473, 1);

Wall[3] = new wall(273, 473, 1);

steelhome = -1;

}

if(sheild > 0)

{

sheild--;

}

if(timestop > 0)

{

timestop--;

}

if(Enemyindex == Enemylimits && !drawVictoryPics && GameFlow > 600 && !gameover)

{

stageclear = true;

for(int k = 12; k < 20; k++)

{

if(E1[k] != null || E2[k] != null || E3[k] != null || E4[k] != null)

{

stageclear = false;

}

}

if(stageclear)

{

GameFlow = 0;

}

}

if(stageclear && GameFlow >= 200)

{

drawVictoryPics = true;

stageclear = false;

GameFlow = 0;

}

if(drawVictoryPics && GameFlow == 23)

{

LevelNo++;

if(LevelNo > 2)

{

LevelNo = 1;

}

tank.changePosition(223, 498, 0);

Level = new levels(LevelNo);

Wall = new wall[Level.getwalls().length];

Wall = Level.getwalls();

Wall[0] = new wall(248, 498, 2);

Wall[1] = new wall(273, 498, 3);

Wall[2] = new wall(248, 473, 1);

Wall[3] = new wall(273, 473, 1);

SteelWall = new Steelwall[Level.getSteelwalls().length];

SteelWall = Level.getSteelwalls();

Grass = new grass[Level.getgrasses().length];

Grass = Level.getgrasses();

River = new river[Level.getrivers().length];

River = Level.getrivers();

indexOfpu = 0;

indexOfSB = 0;

indexOfBB = 0;

Score += 1000;

}

if(drawVictoryPics && GameFlow == 200)

{

Enemyindex = 0;

}

if(drawVictoryPics && GameFlow >= 230)

{

drawVictoryPics = false;

EnemyNo = Level.getenemyNo();

GameFlow = 0;

sheild = 200;

}

if(Enemyindex < Enemylimits && !drawVictoryPics)

{

if(Enemyindex % 3 == 0 && Enemyindex < EnemyNo && Enemyindex < Enemylimits && GameFlow % 50 == 0)

{

if(Level.getEnemyorders(1, LevelNo, Enemyindex))

{

E1[Enemyindex] = new Enemy1(23, 23);

}

if(Level.getEnemyorders(2, LevelNo, Enemyindex))

{

E2[Enemyindex] = new Enemy2(23, 23);

}

if(Level.getEnemyorders(3, LevelNo, Enemyindex))

{

E3[Enemyindex] = new Enemy3(23, 23);

}

if(Level.getEnemyorders(4, LevelNo, Enemyindex))

{

E4[Enemyindex] = new Enemy4(23, 23);

}

}

if(Enemyindex % 3 == 1 && Enemyindex < EnemyNo && Enemyindex < Enemylimits && GameFlow % 100 == 0)

{

if(Level.getEnemyorders(1, LevelNo, Enemyindex))

{

E1[Enemyindex] = new Enemy1(260, 23);

}

if(Level.getEnemyorders(2, LevelNo, Enemyindex))

{

E2[Enemyindex] = new Enemy2(260, 23);

}

if(Level.getEnemyorders(3, LevelNo, Enemyindex))

{

E3[Enemyindex] = new Enemy3(260, 23);

}

if(Level.getEnemyorders(4, LevelNo, Enemyindex))

{

E4[Enemyindex] = new Enemy4(260, 23);

}

}

if(Enemyindex % 3 == 2 && Enemyindex < EnemyNo && Enemyindex < Enemylimits && GameFlow % 150 == 0)

{

if(Level.getEnemyorders(1, LevelNo, Enemyindex))

{

E1[Enemyindex] = new Enemy1(498, 23);

}

if(Level.getEnemyorders(2, LevelNo, Enemyindex))

{

E2[Enemyindex] = new Enemy2(498, 23);

}

if(Level.getEnemyorders(3, LevelNo, Enemyindex))

{

E3[Enemyindex] = new Enemy3(489, 23);

}

if(Level.getEnemyorders(4, LevelNo, Enemyindex))

{

E4[Enemyindex] = new Enemy4(489, 23);

}

}

if(Enemyindex != 0 && Enemyindex % 4 == 0)

{

if(E1[Enemyindex] != null)

{

E1[Enemyindex].flashing();

}

if(E2[Enemyindex] != null)

{

E2[Enemyindex].flashing();

}

if(E3[Enemyindex] != null)

{

E3[Enemyindex].flashing();

}

if(E4[Enemyindex] != null)

{

E4[Enemyindex].flashing();

}

}

if((E1[Enemyindex] != null || E2[Enemyindex] != null || E3[Enemyindex] != null || E4[Enemyindex] != null) && Enemyindex < Enemylimits)

{

Enemyindex++;

}

}

if(UP_TYPED || DOWN_TYPED || LEFT_TYPED || RIGHT_TYPED)

{

if(!gameover && !drawVictoryPics)

{

tank.move(E1, E2, E3, E4, Wall, SteelWall, River);

}

tank.accelerate();

}

label0:

for(int l = 0; l <= indexOfpu; l++)

{

if(PowerUp[l] == null || !tank.getBorder().intersects(PowerUp[l].PowerUp()))

{

continue;

}

Score += 100;

if(PowerUp[l].getFunction() == 1)

{

PowerUp[l] = null;

if(tank.getStatus() == 1)

{

tankbulletspeed = 12;

tank.changeStatus(2);

TBI = 6;

break;

}

if(tank.getStatus() == 2)

{

tankbulletNumber = 2;

TBI = 4;

tank.changeStatus(3);

break;

}

if(tank.getStatus() == 3)

{

bulletpower = 2;

tank.changeStatus(4);

}

break;

}

if(PowerUp[l].getFunction() == 2)

{

PowerUp[l] = null;

steelhome = 1200;

SteelWall[0] = new Steelwall(248, 498, 2);

SteelWall[1] = new Steelwall(273, 498, 3);

SteelWall[2] = new Steelwall(248, 473, 1);

SteelWall[3] = new Steelwall(273, 473, 1);

break;

}

if(PowerUp[l].getFunction() == 3)

{

PowerUp[l] = null;

int j1 = 0;

do

{

if(j1 >= Enemyindex)

{

break label0;

}

if(E1[j1] != null)

{

BB[indexOfBB] = new bigBomb(E1[j1].getxPos(), E1[j1].getyPos());

indexOfBB++;

E1[j1] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

}

if(E2[j1] != null)

{

BB[indexOfBB] = new bigBomb(E2[j1].getxPos(), E2[j1].getyPos());

indexOfBB++;

E2[j1] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

}

if(E3[j1] != null)

{

BB[indexOfBB] = new bigBomb(E3[j1].getxPos(), E3[j1].getyPos());

indexOfBB++;

E3[j1] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

}

if(E4[j1] != null)

{

BB[indexOfBB] = new bigBomb(E4[j1].getxPos(), E4[j1].getyPos());

indexOfBB++;

E4[j1] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

}

j1++;

} while(true);

}

if(PowerUp[l].getFunction() == 4)

{

PowerUp[l] = null;

sheild = 660 + (int)(Math.random() * 330D);

break;

}

if(PowerUp[l].getFunction() == 5)

{

PowerUp[l] = null;

timestop = 400 + (int)(Math.random() * 330D);

break;

}

if(PowerUp[l].getFunction() == 6)

{

PowerUp[l] = null;

tank.powerup();

tankbulletNumber = 2;

TBI = 4;

tankbulletspeed = 12;

bulletpower = 2;

tank.changeStatus(4);

break;

}

if(PowerUp[l].getFunction() != 7)

{

continue;

}

PowerUp[l] = null;

life++;

break;

}

for(int i1 = 0; i1 < Enemyindex; i1++)

{

if(E1[i1] != null)

{

E1[i1].move(tank, E1, E2, E3, E4, i1, Wall, SteelWall, River, timestop);

if((int)(Math.random() * 30D) > 27 && enemyBullet[i1] == null && timestop < 1)

{

enemyBullet[i1] = new bullet(E1[i1].getxPos(), E1[i1].getyPos(), E1[i1].getDirection(), 7, 1);

}

}

if(E2[i1] != null)

{

E2[i1].move(tank, E1, E2, E3, E4, i1, Wall, SteelWall, River, timestop);

if((int)(Math.random() * 30D) > 27 && enemyBullet[i1] == null && timestop < 1)

{

enemyBullet[i1] = new bullet(E2[i1].getxPos(), E2[i1].getyPos(), E2[i1].getDirection(), 7, 1);

}

}

if(E3[i1] != null)

{

E3[i1].move(tank, E1, E2, E3, E4, i1, Wall, SteelWall, River, timestop);

if((int)(Math.random() * 30D) > 26 && enemyBullet[i1] == null && timestop < 1)

{

enemyBullet[i1] = new bullet(E3[i1].getxPos(), E3[i1].getyPos(), E3[i1].getDirection(), 12, 1);

}

}

if(E4[i1] == null)

{

continue;

}

E4[i1].move(tank, E1, E2, E3, E4, i1, Wall, SteelWall, River, timestop);

if((int)(Math.random() * 30D) > 27 && enemyBullet[i1] == null && timestop < 1)

{

enemyBullet[i1] = new bullet(E4[i1].getxPos(), E4[i1].getyPos(), E4[i1].getDirection(), 7, 1);

}

}

boolean flag = false;

for(int k1 = indexOftankBullet - 2; k1 <= indexOftankBullet; k1++)

{

boolean flag1 = false;

if(tankBullet[k1] != null)

{

tankBullet[k1].move();

if(!Border.contains(tankBullet[k1].getbulletposition()))

{

flag1 = true;

}

}

if(tankBullet[k1] != null)

{

for(int l1 = 0; l1 < Wall.length; l1++)

{

if(Wall[l1] == null || tankBullet[k1] == null || !Wall[l1].getborder().intersects(tankBullet[k1].getbulletborder()))

{

continue;

}

Wall[l1].damageWall(tankBullet[k1].getbulletborder(), bulletpower, tankBullet[k1].getbulletdirection());

if(Wall[l1].Bulletdestoried())

{

Wall[l1].restore();

flag1 = true;

}

if(Wall[l1].walldestoried())

{

Wall[l1] = null;

}

}

}

if(tankBullet[k1] != null)

{

for(int i2 = 0; i2 < SteelWall.length; i2++)

{

if(SteelWall[i2] == null || tankBullet[k1] == null || !SteelWall[i2].getborder().intersects(tankBullet[k1].getbulletborder()))

{

continue;

}

SteelWall[i2].damageWall(tankBullet[k1].getbulletborder(), bulletpower, tankBullet[k1].getbulletdirection());

if(SteelWall[i2].Bulletdestoried())

{

SteelWall[i2].restore();

flag1 = true;

}

if(SteelWall[i2].walldestoried())

{

SteelWall[i2] = null;

}

}

}

if(tankBullet[k1] != null)

{

int j2 = 0;

do

{

if(j2 >= Enemyindex)

{

break;

}

if(E1[j2] != null && E1[j2].getE1().intersects(tankBullet[k1].getbulletborder()))

{

Score += 100;

BB[indexOfBB] = new bigBomb(E1[j2].getxPos(), E1[j2].getyPos());

indexOfBB++;

flag1 = true;

if(E1[j2].isFlashing())

{

PowerUp[indexOfpu] = new powerup();

indexOfpu++;

}

E1[j2] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

break;

}

if(E2[j2] != null && E2[j2].getE1().intersects(tankBullet[k1].getbulletborder()))

{

Score += 200;

BB[indexOfBB] = new bigBomb(E2[j2].getxPos(), E2[j2].getyPos());

indexOfBB++;

flag1 = true;

if(E2[j2].isFlashing())

{

PowerUp[indexOfpu] = new powerup();

indexOfpu++;

}

E2[j2] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

break;

}

if(E3[j2] != null && E3[j2].getE1().intersects(tankBullet[k1].getbulletborder()))

{

Score += 300;

BB[indexOfBB] = new bigBomb(E3[j2].getxPos(), E3[j2].getyPos());

indexOfBB++;

flag1 = true;

if(E3[j2].isFlashing())

{

PowerUp[indexOfpu] = new powerup();

indexOfpu++;

}

E3[j2] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

break;

}

if(E4[j2] != null && E4[j2].getE1().intersects(tankBullet[k1].getbulletborder()))

{

E4[j2].hurt();

if(E4[j2].getStatus() > 3)

{

Score += 400;

BB[indexOfBB] = new bigBomb(E4[j2].getxPos(), E4[j2].getyPos());

indexOfBB++;

E4[j2] = null;

if(Enemyindex < Enemylimits)

{

EnemyNo++;

}

}

flag1 = true;

if(E4[j2] != null && E4[j2].isFlashing())

{

PowerUp[indexOfpu] = new powerup();

E4[j2].stopFlashing();

indexOfpu++;

}

break;

}

j2++;

} while(true);

}

if(flag1)

{

SB[indexOfSB] = new smallBomb(tankBullet[k1].getbulletposition());

indexOfSB++;

tankBullet[k1] = null;

}

}

boolean flag2 = false;

for(int k2 = 0; k2 < Enemyindex; k2++)

{

boolean flag3 = false;

if(enemyBullet[k2] != null)

{

enemyBullet[k2].move();

if(!Border.contains(enemyBullet[k2].getbulletposition()))

{

flag3 = true;

}

}

if(enemyBullet[k2] != null)

{

for(int j3 = 0; j3 < Wall.length; j3++)

{

if(Wall[j3] == null || enemyBullet[k2] == null || !Wall[j3].getborder().intersects(enemyBullet[k2].getbulletborder()))

{

continue;

}

Wall[j3].damageWall(enemyBullet[k2].getbulletborder(), 1, enemyBullet[k2].getbulletdirection());

if(Wall[j3].Bulletdestoried())

{

Wall[j3].restore();

flag3 = true;

}

if(Wall[j3].walldestoried())

{

Wall[j3] = null;

}

}

}

if(enemyBullet[k2] != null)

{

for(int k3 = 0; k3 < SteelWall.length; k3++)

{

if(SteelWall[k3] == null || enemyBullet[k2] == null || !SteelWall[k3].getborder().intersects(enemyBullet[k2].getbulletborder()))

{

continue;

}

SteelWall[k3].damageWall(enemyBullet[k2].getbulletborder(), 1, enemyBullet[k2].getbulletdirection());

if(SteelWall[k3].Bulletdestoried())

{

SteelWall[k3].restore();

flag3 = true;

}

}

}

if(enemyBullet[k2] != null)

{

int l3 = indexOftankBullet - 2;

do

{

if(l3 > indexOftankBullet)

{

break;

}

if(tankBullet[l3] != null && tankBullet[l3].getbulletborder().intersects(enemyBullet[k2].getbulletborder()))

{

tankBullet[l3] = null;

flag3 = true;

break;

}

l3++;

} while(true);

}

if(enemyBullet[k2] != null && enemyBullet[k2].getbulletborder().intersects(tank.getVBorder()))

{

flag3 = true;

if(sheild <= 0 && tank.gettankhealth() != 2)

{

BB[indexOfBB] = new bigBomb(tank.getxPos(), tank.getyPos());

indexOfBB++;

if(life > 0)

{

life--;

}

if(life > 0)

{

tank = new Tank(223, 498, 0, 1);

sheild = 200;

}

if(life <= 0 && sheild <= 0)

{

tank = new Tank(600, 800, 0, 1);

gameover = true;

}

tankbulletNumber = 1;

bulletpower = 1;

tankbulletspeed = 7;

TBI = 7;

}

if(tank.gettankhealth() == 2)

{

bulletpower = 1;

tank.hurt();

tank.changeStatus(3);

}

}

if(enemyBullet[k2] != null && Base.getImageNo() == 1 && enemyBullet[k2].getbulletborder().intersects(Base.getBaseborder()))

{

Base.doom();

BB[indexOfBB] = new bigBomb(260, 498);

indexOfBB++;

flag3 = true;

gameover = true;

}

if(flag3)

{

SB[indexOfSB] = new smallBomb(enemyBullet[k2].getbulletposition());

indexOfSB++;

enemyBullet[k2] = null;

}

}

if(fire_TYPED && tankBullet[indexOftankBullet - tankbulletNumber] == null && tankbulletinterval <= 0 && !drawVictoryPics && !gameover)

{

tankBullet[indexOftankBullet] = new bullet(tank.getxPos(), tank.getyPos(), tank.getDirection(), tankbulletspeed, bulletpower);

indexOftankBullet++;

tankbulletinterval = TBI;

}

tankbulletinterval--;

for(int l2 = 0; l2 <= indexOfSB; l2++)

{

if(SB[l2] == null)

{

continue;

}

if(SB[l2].BombTimeleft() > 0)

{

SB[l2].keepbombing();

}

if(SB[l2].BombTimeleft() <= 0)

{

SB[l2] = null;

}

}

for(int i3 = 0; i3 <= indexOfBB; i3++)

{

if(BB[i3] == null)

{

continue;

}

if(BB[i3].BombTimeleft() > 0)

{

BB[i3].keepbombing();

}

if(BB[i3].BombTimeleft() <= 0)

{

BB[i3] = null;

}

}

repaint();

}

/**

* 绘制图形

*/

public void paint(Graphics g)

{

g.setColor(new Color(128, 64, 0));

g.fillRect(0, 0, 610, 520);

g.setColor(Color.blue);

g.drawRect(10, 10, 501, 501);

g.drawRect(9, 9, 503, 503);

for(int i = 0; i < Wall.length; i++)

{

if(Wall[i] != null)

{

g.drawImage(WALL, Wall[i].getxPos() - 12, Wall[i].getyPos() - 12, this);

Wall[i].draw(g);

}

}

for(int j = 0; j < SteelWall.length; j++)

{

if(SteelWall[j] != null)

{

g.drawImage(STEELWALL, SteelWall[j].getxPos() - 12, SteelWall[j].getyPos() - 12, this);

SteelWall[j].draw(g);

}

}

for(int k = 0; k < River.length; k++)

{

g.drawImage(RIVER, River[k].getxPos() - 12, River[k].getyPos() - 12, this);

}

for(int l = 0; l <= indexOftankBullet; l++)

{

if(tankBullet[l] != null)

{

tankBullet[l].draw(g);

}

}

for(int i1 = 0; i1 < Enemyindex; i1++)

{

if(enemyBullet[i1] != null)

{

enemyBullet[i1].draw(g);

}

}

g.drawImage(BASE[Base.getImageNo() - 1], 248, 485, this);

for(int j1 = 0; j1 <= indexOfSB; j1++)

{

if(SB[j1] != null)

{

SB[j1].draw(g);

}

}

for(int k1 = 0; k1 <= indexOfBB; k1++)

{

if(BB[k1] != null)

{

BB[k1].draw(g);

}

}

g.drawImage(tankImage[tank.getImageNo()], tank.getxPos() - 12, tank.getyPos() - 12, this);

g.drawImage(tankImage[tank.getImageNo()], tank.getxPos() - 12, tank.getyPos() - 12, this);

g.drawImage(tankImage[0], 520, 450, this);

if(sheild > 0)

{

g.setColor(Color.red);

g.drawRect(tank.getxPos() - 13, tank.getyPos() - 13, 27, 27);

g.drawRect(tank.getxPos() - 12, tank.getyPos() - 12, 25, 25);

}

for(int l1 = 0; l1 < Enemyindex; l1++)

{

if(E1[l1] != null)

{

g.drawImage(E1Image[E1[l1].getImageNo()], E1[l1].getxPos() - 12, E1[l1].getyPos() - 12, this);

}

}

for(int i2 = 0; i2 < Enemyindex; i2++)

{

if(E2[i2] != null)

{

g.drawImage(E2Image[E2[i2].getImageNo()], E2[i2].getxPos() - 12, E2[i2].getyPos() - 12, this);

}

}

for(int j2 = 0; j2 < Enemyindex; j2++)

{

if(E3[j2] != null)

{

g.drawImage(E3Image[E3[j2].getImageNo()], E3[j2].getxPos() - 12, E3[j2].getyPos() - 12, this);

}

}

for(int k2 = 0; k2 < Enemyindex; k2++)

{

if(E4[k2] != null)

{

g.drawImage(E4Image[E4[k2].getImageNo()], E4[k2].getxPos() - 12, E4[k2].getyPos() - 12, this);

}

}

for(int l2 = 0; l2 < Grass.length; l2++)

{

Grass[l2].draw(g);

}

for(int i3 = 0; i3 < indexOfpu; i3++)

{

if(PowerUp[i3] != null)

{

g.drawImage(PUimage[PowerUp[i3].getFunction() - 1], PowerUp[i3].getxPos() - 12, PowerUp[i3].getyPos() - 12, this);

}

}

if(drawVictoryPics)

{

g.setColor(Color.lightGray);

if(GameFlow > 0 && GameFlow < 20)

{

g.fillRect(11, 11, 500, GameFlow * 15);

g.fillRect(11, 510 - GameFlow * 15, 500, GameFlow * 15);

}

if(GameFlow >= 20 && GameFlow <= 208)

{

g.fillRect(11, 11, 500, 500);

}

if(GameFlow > 208 && GameFlow < 229)

{

g.fillRect(11, 11, 500, 260 - (GameFlow - 209) * 15);

g.fillRect(11, 261 + (GameFlow - 209) * 15, 500, 260 - (GameFlow - 209) * 15);

}

Font font = new Font("Century Gothic", 1, 19);

g.setFont(font);

g.setColor(Color.blue);

if(GameFlow >= 20 && GameFlow <= 208)

{

g.drawString("Stage Clear", 200, 250);

}

}

Font font1 = new Font("Century Gothic", 1, 16);

g.setFont(font1);

g.setColor(new Color(81, 94, 255));

g.drawString("x", 550, 468);

g.drawString(life + "", 565, 469);

String s = Score + "";

g.drawString("Scores:", 515, 420);

g.drawString(s.substring(s.length() - 6, s.length()) + "", 525, 438);

g.setColor(new Color(224, 97, 199));

g.drawString("Enemy = " + (20 - Enemyindex), 515, 50);

if(gameover)

{

Font font2 = new Font("Century Gothic", 1, 24);

g.setFont(font2);

g.setColor(new Color(81, 94, 225));

g.drawString("G A M E", 212, 220);

g.drawString("O VER", 212, 250);

}

}

/**

* 按下键盘触发的事件

*/

public void keyPressed(KeyEvent keyevent)

{

if(!gameover && !drawVictoryPics)

{

if(keyevent.getKeyCode() == 38)

{

if(tank.getDirection() != 0)

{

tank.ChangeFace(0);

}

UP_TYPED = true;

}

if(keyevent.getKeyCode() == 37)

{

if(tank.getDirection() != 2)

{

tank.ChangeFace(2);

}

LEFT_TYPED = true;

}

if(keyevent.getKeyCode() == 40)

{

if(tank.getDirection() != 1)

{

tank.ChangeFace(1);

}

DOWN_TYPED = true;

}

if(keyevent.getKeyCode() == 39)

{

if(tank.getDirection() != 3)

{

tank.ChangeFace(3);

}

RIGHT_TYPED = true;

}

if((fire_TYPED || keyevent.getKeyChar() == 's') && tankBullet[indexOftankBullet - tankbulletNumber] == null && tankbulletinterval <= 0)

{

tankBullet[indexOftankBullet] = new bullet(tank.getxPos(), tank.getyPos(), tank.getDirection(), tankbulletspeed, bulletpower);

indexOftankBullet++;

fire_TYPED = true;

tankbulletinterval = TBI;

}

}

}

/**

* 释放键盘触发的事件

*/

public void keyReleased(KeyEvent keyevent)

{

if(keyevent.getKeyCode() == 38 && UP_TYPED)

{

UP_TYPED = false;

}

if(keyevent.getKeyCode() == 40 && DOWN_TYPED)

{

DOWN_TYPED = false;

}

if(keyevent.getKeyCode() == 39 && RIGHT_TYPED)

{

RIGHT_TYPED = false;

}

if(keyevent.getKeyCode() == 37 && LEFT_TYPED)

{

LEFT_TYPED = false;

}

if(keyevent.getKeyChar() == 's' && fire_TYPED)

{

fire_TYPED = false;

}

}

public void keyTyped(KeyEvent keyevent)

{

}

public void update(Graphics g)

{

if(offScreenImage == null)

{

offScreenImage = createImage(610, 520);

}

Graphics g1 = offScreenImage.getGraphics();

g1.setColor(Color.white);

g1.fillRect(0, 0, 610, 520);

paint(g1);

g.drawImage(offScreenImage, 0, 0, this);

}

}


版权所有©2000-2004   北京金海计算机培训学校
校址:北京市南苑西营房甲5号 (北京理工大学继续教育学院院内北京金海电脑培训学校)  邮编:100076    市场宣传部:86813881
入学咨询热线:(010) 51668841 67915904   传真:(010)67915904   本站网络实名: 游戏学院 (在地址栏可直接输入抵达本站)
E-Mail: j h @ b j j i n h a i . c o m (去除字母间的空格)来信主题需注明“金海教育”字样,以免被误认为垃圾邮件删除。