实例介绍
【实例简介】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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论