java坦克大战源代码 怎么导入

java坦克大战源代码 怎么导入,第1张

坦克大战源代码应该是个完整的项目吧。

对于完整的带项目配置掘中胡文判拦件的java源码,按步骤 *** 作即可培数:

File ->Import -> General

选择Existing Projects into Workspace,选择要导入的文件,点击“finish",OK。

java.lang.NoClassDefFoundError: Hstank2 (wrong name:HsTank2)

找不到类Hstank2,确定你的包路径历粗跟实际放置的文件夹路径相同,类名与引用处相同。

这肢告镇应该是个极低级的错友埋误。

package com.bjsxt.tank

import java.awt.Color

import java.awt.Frame

import java.awt.Graphics

import java.awt.Image

import java.awt.event.KeyAdapter

import java.awt.event.KeyEvent

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import java.io.IOException

import java.util.ArrayList

import java.util.List

import java.util.Properties

/**

* 这个类的作用是坦仔链克游戏的主窗口

* @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, Direction.STOP, this)

Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this)

List<Explode>explodes = new ArrayList<Explode>()

List<晌饥Missile>念谨孙 missiles = new ArrayList<Missile>()

List<Tank>tanks = new ArrayList<Tank>()

Image offScreenImage = null

Blood b = new Blood()

public void paint(Graphics g) {

/*

* 指明子d-爆炸-坦克的数量

* 以及坦克的生命值

*/

g.drawString("missiles count:" + missiles.size(), 10, 50)

g.drawString("explodes count:" + explodes.size(), 10, 70)

g.drawString("tankscount:" + tanks.size(), 10, 90)

g.drawString("tanks life:" + myTank.getLife(), 10, 110)

if(tanks.size() <= 0) {

for(int i=0i<Integer.parseInt(PropertyMgr.getProperty("reProduceTankCount"))i++) {

tanks.add(new Tank(50 + 40*(i+1), 50, false, Direction.D, this))

}

}

for(int i=0i<missiles.size()i++) {

Missile m = missiles.get(i)

m.hitTanks(tanks)

m.hitTank(myTank)

m.hitWall(w1)

m.hitWall(w2)

m.draw(g)

//if(!m.isLive()) missiles.remove(m)

//else m.draw(g)

}

for(int i=0i<explodes.size()i++) {

Explode e = explodes.get(i)

e.draw(g)

}

for(int i=0i<tanks.size()i++) {

Tank t = tanks.get(i)

t.collidesWithWall(w1)

t.collidesWithWall(w2)

t.collidesWithTanks(tanks)

t.draw(g)

}

myTank.draw(g)

myTank.eat(b)

w1.draw(g)

w2.draw(g)

b.draw(g)

}

public void update(Graphics g) {

if(offScreenImage == null) {

offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT)

}

Graphics gOffScreen = offScreenImage.getGraphics()

Color c = gOffScreen.getColor()

gOffScreen.setColor(Color.BLACK)

gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT)

gOffScreen.setColor(c)

paint(gOffScreen)

g.drawImage(offScreenImage, 0, 0, null)

}

/**

* 本方法显示坦克主窗口

*

*/

public void lauchFrame() {

int initTankCount = Integer.parseInt(PropertyMgr.getProperty("initTankCount"))

for(int i=0i<initTankCounti++) {

tanks.add(new Tank(50 + 40*(i+1), 50, false, Direction.D, this))

}

//this.setLocation(400, 300)

this.setSize(GAME_WIDTH, GAME_HEIGHT)

this.setTitle("TankWar")

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0)

}

})

this.setResizable(false)

this.setBackground(Color.GREEN)

this.addKeyListener(new KeyMonitor())

setVisible(true)

new Thread(new PaintThread()).start()

}

public static void main(String[] args) {

TankClient tc = new TankClient()

tc.lauchFrame()

}

private class PaintThread implements Runnable {

public void run() {

while(true) {

repaint()

try {

Thread.sleep(50)

} catch (InterruptedException e) {

e.printStackTrace()

}

}

}

}

private class KeyMonitor extends KeyAdapter {

public void keyReleased(KeyEvent e) {

myTank.keyReleased(e)

}

public void keyPressed(KeyEvent e) {

myTank.keyPressed(e)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12543816.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存