实例介绍
【实例简介】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);
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论