基本信息
源码名称:java开发坦克大战 小游戏源码(TankWar2.9)
源码大小:0.58M
文件格式:.zip
开发语言:Java
更新时间:2018-11-30
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
java初学者训练
java初学者训练
package com.xiaosha.TankWar;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
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.util.ArrayList;
/**
* ����������Ϸ��������
* @author xiaosha
*
*/
public class TankClient extends Frame {
// int initTankCount = Integer.parseInt(PropertyMgr.getProperty("initTankCount"));
// int reTankCount = Integer.parseInt(PropertyMgr.getProperty("reTankCount"));
private static final long serialVersionUID = 1L;
/**
* ������Ϸ���ڴ�С�ij���
*/
public static final int GAME_WIDTH = 800;
public static final int GAME_HEIGHT = 600;
/**
* �����Լ���̹�˵�̹��
*/
Tank myTank = new Tank(650, 550 ,true,this);
/**
* ����ǽ
*/
Wall w1 = new Wall(200, 150, 40, 300, this);
Wall w2 = new Wall(500, 150, 40, 300, this);
/**
* ����Ѫ��
*/
Blood b = new Blood();
/**
* �������̹���ӵ��ͱ�ը��list������
*/
java.util.List<Tank> tanks = new ArrayList<Tank>();
java.util.List<Missile> missiles = new ArrayList<Missile>();
java.util.List<Explode> explodes = new ArrayList<Explode>();
/**
* ˫����--����һ�������ͼƬ
*/
Image offScreanImage = null;
/**
* ˫����--���������ͼƬ��
* repaint���ȵ���update �ٵ���paint
*/
public void update(Graphics g) {
/**
* ������ͼƬ�Ĵ�С
*/
if(offScreanImage == null){
offScreanImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);
}
/**
* �û���
*/
Graphics gOffScrean = offScreanImage.getGraphics();
/**
* ��
* �ػ�����
*/
Color c = gOffScrean.getColor();
gOffScrean.setColor(Color.black);
/**
* ��������
*/
gOffScrean.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
gOffScrean.setColor(c);
paint(gOffScrean);
/**
* ��ͼ
*/
g.drawImage(offScreanImage, 0, 0, null);
}
/**
* ������
*/
public void paint(Graphics g){
/**
* �����ͼ̹�˹��٣����Զ����̹��
*/
int reTankCount = 4;
if(tanks.size() < 6){
Tank.newTanks(reTankCount,false);
}
/**
* ���ӵ���ѭ���ж��ӵ������
*/
for(int i = 0;i<missiles.size();i ){
Missile m = missiles.get(i);
m.hitTanks(tanks);
m.hitTank(myTank);
m.hitWall(w1);
m.hitWall(w2);
m.draw(g);
}
/**
* �����Կ��Ƶ�̹�˲�ѭ���ж��������
*/
for(int i=0; i<tanks.size(); i ){
Tank tank = tanks.get(i);
tank.collidesWithWall(w1);
tank.collidesWithWall(w2);
tank.collidesWithTanks(tanks);
tank.draw( g);
}
/**
* ���Լ���̹���Լ��Լ���̹�˳�Ѫ�����ж�
*/
myTank.draw( g);
myTank.eat(b);
/**
* ��ǽ
*/
w1.draw(g);
w2.draw(g);
/**
* ��Ѫ��
*/
b.draw(g);
/**
* ����ըЧ��
*/
for(int i = 0; i<explodes.size(); i ){
Explode e = explodes.get(i);
e.draw(g);
}
/**
* ��ʾ��ǰ��Ļ�ϸ�����Ϣ
*/
Color c = g.getColor();
g.setColor(Color.WHITE);
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("myTank life:" myTank.getLife(), 10, 110);
g.drawString("F2 : 刷怪 ", 640, 50);
g.drawString("空格键 : 子弹", 640, 70);
g.drawString("PS 中间鬼畜的东西是血包", 640, 90);
g.setColor(c);
}
/**
* �趨����
*/
public void launchFrame(){
int initTankCount = 10;
Tank.newTanks(initTankCount,false);
/**
* �趨λ��
*/
this.setLocation(400,100);
/**
* �趨���ڴ�С
*/
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();
}
/**
*
* @param ������
*/
public static void main(String[] args) {
TankClient tc = new TankClient();
tc.launchFrame();
}
/**
* �滭�߳�
*/
private class PaintThread implements Runnable{
public void run(){
while(true){
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
/**
*
* �������� ���̼�������
* extend ���Բ�Ҫȫ��ʵ�����ж���
* ֻʵ����Ҫ�Ľӿ�
*/
private class KeyMonitor extends KeyAdapter{
/**
* ����̧�����
*/
public void keyReleased(KeyEvent e) {
myTank.keyReleased(e);
}
/**
* ���̰��¼���
*/
public void keyPressed(KeyEvent e) {
/**
* �������źŴ���Tank��keyPressed����
*/
myTank.keyPressed(e);
}
}
}