基本信息
源码名称: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); } } }