亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tank.java

?? 本壓縮軟件是坦克游戲的JAVA源文件。有興趣的可以下載玩玩
?? JAVA
字號:
package com.bjsxt.tank;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Tank {
	public static final int XSPEED = 5;
	public static final int YSPEED = 5;
	
	private boolean live = true;
	private BloodBar bb = new BloodBar();
	
	private int life = 100;
	
	TankClient tc;
	
	private boolean good;
	
	private int x, y;
	private int oldX, oldY;
	
	private static Random r = new Random();
	
	private boolean bL=false, bU=false, bR=false, bD = false;
		
	private Direction dir = Direction.STOP;
	private Direction ptDir = Direction.D;
	
	private int step = r.nextInt(12) + 3;
	
	private static Toolkit tk = Toolkit.getDefaultToolkit();
	private static Image[] tankImages = null;
	private static Map<String, Image> imgs = new HashMap<String, Image>();
	static {
		tankImages = new Image[] {
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankL.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankLU.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankU.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankRU.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankR.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankRD.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankD.gif")),
				tk.getImage(Tank.class.getClassLoader().getResource("images/tankLD.gif"))
		};
		
		imgs.put("L", tankImages[0]);
		imgs.put("LU", tankImages[1]);
		imgs.put("U", tankImages[2]);
		imgs.put("RU", tankImages[3]);
		imgs.put("R", tankImages[4]);
		imgs.put("RD", tankImages[5]);
		imgs.put("D", tankImages[6]);
		imgs.put("LD", tankImages[7]);
		
	}
	
	public static final int WIDTH = 30;
	public static final int HEIGHT = 30;
	
	public Tank(int x, int y, boolean good) {
		this.x = x;
		this.y = y;
		this.oldX = x;
		this.oldY = y;
		this.good = good;
	}
	
	public Tank(int x, int y, boolean good, Direction dir,  TankClient tc) {
		this(x, y, good);
		this.dir = dir;
		this.tc = tc;
	}
	
	public void draw(Graphics g) {
		if(!live) {
			if(!good) {
				tc.tanks.remove(this);
			}
			return;
		}
		
		if(good) bb.draw(g);
		
		switch(ptDir) {
		case L:
			g.drawImage(imgs.get("L"), x, y, null);
			break;
		case LU:
			g.drawImage(imgs.get("LU"), x, y, null);
			break;
		case U:
			g.drawImage(imgs.get("U"), x, y, null);
			break;
		case RU:
			g.drawImage(imgs.get("RU"), x, y, null);
			break;
		case R:
			g.drawImage(imgs.get("R"), x, y, null);
			break;
		case RD:
			g.drawImage(imgs.get("RD"), x, y, null);
			break;
		case D:
			g.drawImage(imgs.get("D"), x, y, null);
			break;
		case LD:
			g.drawImage(imgs.get("LD"), x, y, null);
			break;
		}
		
		move();
	}
	
	void move() {
		
		this.oldX = x;
		this.oldY = y;
		
		switch(dir) {
		case L:
			x -= XSPEED;
			break;
		case LU:
			x -= XSPEED;
			y -= YSPEED;
			break;
		case U:
			y -= YSPEED;
			break;
		case RU:
			x += XSPEED;
			y -= YSPEED;
			break;
		case R:
			x += XSPEED;
			break;
		case RD:
			x += XSPEED;
			y += YSPEED;
			break;
		case D:
			y += YSPEED;
			break;
		case LD:
			x -= XSPEED;
			y += YSPEED;
			break;
		case STOP:
			break;
		}
		
		if(this.dir != Direction.STOP) {
			this.ptDir = this.dir;
		}
		
		if(x < 0) x = 0;
		if(y < 30) y = 30;
		if(x + Tank.WIDTH > TankClient.GAME_WIDTH) x = TankClient.GAME_WIDTH - Tank.WIDTH;
		if(y + Tank.HEIGHT > TankClient.GAME_HEIGHT) y = TankClient.GAME_HEIGHT - Tank.HEIGHT;
		
		if(!good) {
			Direction[] dirs = Direction.values();
			if(step == 0) {
				step = r.nextInt(12) + 3;
				int rn = r.nextInt(dirs.length);
				dir = dirs[rn];
			}			
			step --;
			
			//if(r.nextInt(40) > 38) this.fire();
		}		
	}
	
	private void stay() {
		x = oldX;
		y = oldY;
	}
	
	public void keyPressed(KeyEvent e) {
		int key = e.getKeyCode();
		switch(key) {
		case KeyEvent.VK_F2 :
			if(!this.live) {
				this.live = true;
				this.life = 100;
			}
			break;
		case KeyEvent.VK_LEFT :
			bL = true;
			break;
		case KeyEvent.VK_UP :
			bU = true;
			break;
		case KeyEvent.VK_RIGHT :
			bR = true;
			break;
		case KeyEvent.VK_DOWN :
			bD = true;
			break;
		}
		locateDirection();
	}
	
	void locateDirection() {
		if(bL && !bU && !bR && !bD) dir = Direction.L;
		else if(bL && bU && !bR && !bD) dir = Direction.LU;
		else if(!bL && bU && !bR && !bD) dir = Direction.U;
		else if(!bL && bU && bR && !bD) dir = Direction.RU;
		else if(!bL && !bU && bR && !bD) dir = Direction.R;
		else if(!bL && !bU && bR && bD) dir = Direction.RD;
		else if(!bL && !bU && !bR && bD) dir = Direction.D;
		else if(bL && !bU && !bR && bD) dir = Direction.LD;
		else if(!bL && !bU && !bR && !bD) dir = Direction.STOP;
	}

	public void keyReleased(KeyEvent e) {
		int key = e.getKeyCode();
		switch(key) {
		case KeyEvent.VK_CONTROL:
			fire();
			break;
		case KeyEvent.VK_LEFT :
			bL = false;
			break;
		case KeyEvent.VK_UP :
			bU = false;
			break;
		case KeyEvent.VK_RIGHT :
			bR = false;
			break;
		case KeyEvent.VK_DOWN :
			bD = false;
			break;
		case KeyEvent.VK_A :
			superFire();
			break;
		}
		locateDirection();		
	}
	
	public Missile fire() {
		if(!live) return null;
		int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;
		int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;
		Missile m = new Missile(x, y, good, ptDir, this.tc);
		tc.missiles.add(m);
		return m;
	}
	
	public Missile fire(Direction dir) {
		if(!live) return null;
		int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;
		int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;
		Missile m = new Missile(x, y, good, dir, this.tc);
		tc.missiles.add(m);
		return m;
	}
	
	public Rectangle getRect() {
		return new Rectangle(x, y, WIDTH, HEIGHT);
	}

	public boolean isLive() {
		return live;
	}

	public void setLive(boolean live) {
		this.live = live;
	}

	public boolean isGood() {
		return good;
	}
	
	/**
	 * 撞墻
	 * @param w 被撞的墻
	 * @return 撞上了返回true,否則false
	 */
	public boolean collidesWithWall(Wall w) {
		if(this.live && this.getRect().intersects(w.getRect())) {
			this.stay();
			return true;
		}
		return false;
	}
	
	public boolean collidesWithTanks(java.util.List<Tank> tanks) {
		for(int i=0; i<tanks.size(); i++) {
			Tank t = tanks.get(i);
			if(this != t) {
				if(this.live && t.isLive() && this.getRect().intersects(t.getRect())) {
					this.stay();
					t.stay();
					return true;
				}
			}
		}
		return false;
	}
	
	private void superFire() {
		Direction[] dirs = Direction.values();
		for(int i=0; i<8; i++) {
			fire(dirs[i]);
		}
	}

	public int getLife() {
		return life;
	}

	public void setLife(int life) {
		this.life = life;
	}
	
	private class BloodBar {
		public void draw(Graphics g) {
			Color c = g.getColor();
			g.setColor(Color.RED);
			g.drawRect(x, y-10, WIDTH, 10);
			int w = WIDTH * life/100 ;
			g.fillRect(x, y-10, w, 10);
			g.setColor(c);
		}
	}
	
	public boolean eat(Blood b) {
		if(this.live && b.isLive() && this.getRect().intersects(b.getRect())) {
			this.life = 100;
			b.setLive(false);
			return true;
		}
		return false;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品综合久久久久久| 日本一不卡视频| 欧美精品一区二区久久婷婷| 欧美日韩精品一区视频| 91成人免费在线| 色婷婷激情一区二区三区| 成人精品视频一区二区三区 | 成人精品在线视频观看| 精品中文字幕一区二区| 久久99精品视频| 国产乱色国产精品免费视频| 国产成人在线免费| av电影一区二区| 欧美亚洲综合在线| 9191久久久久久久久久久| 欧美xxxxx牲另类人与| 国产日韩欧美精品在线| 国产精品午夜在线观看| 亚洲小少妇裸体bbw| 日本道色综合久久| 色乱码一区二区三区88| 97久久超碰国产精品| 91在线视频播放地址| 欧美日韩一区二区三区在线看| 欧美一区二区三区免费大片 | 亚洲人吸女人奶水| 亚洲一区二区三区四区在线免费观看 | 成人av网站在线观看| 成人禁用看黄a在线| 欧美性高清videossexo| 日韩免费观看高清完整版| 国产日韩欧美一区二区三区综合 | 一区二区三区免费观看| 日韩专区欧美专区| 国产大片一区二区| 91精品福利视频| 精品国产一区二区三区久久影院| 欧美激情一区二区三区在线| 亚洲国产一区二区视频| 国产乱码精品1区2区3区| 色欧美88888久久久久久影院| 日韩视频在线一区二区| 18成人在线视频| 麻豆成人久久精品二区三区小说| 不卡av免费在线观看| 欧美一级高清片| 亚洲精品日产精品乱码不卡| 国内外成人在线视频| 在线看日本不卡| 欧美激情中文不卡| 麻豆精品一区二区三区| 在线一区二区三区四区五区| 中文字幕成人网| 国产在线国偷精品免费看| 欧美精品自拍偷拍| 亚洲视频一二三| 夫妻av一区二区| 精品日韩一区二区三区免费视频| 亚洲国产wwwccc36天堂| 94-欧美-setu| 国产精品高潮久久久久无| 久久国产麻豆精品| 7799精品视频| 国产精品996| 欧美一级在线视频| 亚洲第一会所有码转帖| 日本韩国欧美国产| 日韩毛片精品高清免费| 9色porny自拍视频一区二区| 国产午夜精品一区二区三区视频| 国内久久精品视频| 日韩精品中文字幕一区二区三区| 日韩电影在线免费观看| 欧美精品久久久久久久多人混战| 一区二区高清免费观看影视大全 | 欧美日韩黄视频| 婷婷中文字幕一区三区| 欧美日韩一区二区在线观看视频 | 91麻豆国产香蕉久久精品| 国产精品免费视频一区| 成人高清av在线| 中文字幕佐山爱一区二区免费| 99久久国产综合精品麻豆| 国产精品毛片久久久久久| 成人ar影院免费观看视频| 亚洲天堂精品在线观看| 在线观看欧美日本| 亚洲大型综合色站| 日韩一级片在线观看| 精品无人区卡一卡二卡三乱码免费卡| 欧美一级欧美三级在线观看| 久久99精品久久久久久久久久久久| 日韩美女主播在线视频一区二区三区| 黄色小说综合网站| 一区在线播放视频| 欧美日韩一区二区三区在线| 蜜臀99久久精品久久久久久软件| 精品精品国产高清a毛片牛牛| 国产a久久麻豆| 亚洲一二三四在线观看| 精品日韩一区二区三区免费视频| 国产999精品久久久久久绿帽| 日韩理论片中文av| 欧美一区二区三区性视频| 国产一区二区三区观看| 伊人夜夜躁av伊人久久| 日韩欧美国产高清| 成人av电影在线网| 日本麻豆一区二区三区视频| 国产精品毛片大码女人| 88在线观看91蜜桃国自产| 成人黄页毛片网站| 日韩激情一区二区| 欧美极品美女视频| 欧美精品色一区二区三区| 成人精品小蝌蚪| 蜜桃在线一区二区三区| 亚洲美女一区二区三区| 久久久久久久久99精品| 欧美日韩午夜在线| 成人app网站| 国产一区二区三区在线看麻豆| 洋洋成人永久网站入口| 欧美激情一区二区三区四区| 欧美一卡2卡三卡4卡5免费| 色婷婷亚洲精品| 国产成人av电影在线| 日韩和的一区二区| 亚洲美女偷拍久久| 国产精品网曝门| 精品久久人人做人人爰| 欧美日韩精品综合在线| 91在线丨porny丨国产| 国产一区二区伦理片| 午夜精品久久久久久不卡8050| 国产精品久久久久久久久久久免费看| 日韩欧美一级特黄在线播放| 欧美性色欧美a在线播放| 91香蕉国产在线观看软件| 国产成人无遮挡在线视频| 久久国产视频网| 日韩av午夜在线观看| 亚洲福利国产精品| 亚洲无人区一区| 一区二区三区高清在线| 亚洲色图另类专区| 自拍偷在线精品自拍偷无码专区| 国产欧美一区二区精品仙草咪 | 国产剧情一区在线| 美国毛片一区二区三区| 全国精品久久少妇| 日本成人在线看| 蜜桃av一区二区三区电影| 日本亚洲免费观看| 美女看a上一区| 极品销魂美女一区二区三区| 成人精品视频一区二区三区| 国产精品资源在线观看| 国产高清不卡一区| 成人动漫一区二区在线| 91亚洲精品乱码久久久久久蜜桃| 91麻豆高清视频| 色久优优欧美色久优优| 欧美羞羞免费网站| 777午夜精品免费视频| 欧美一区二区三区视频在线| 精品日本一线二线三线不卡| 久久人人97超碰com| 国产日本亚洲高清| 自拍偷拍亚洲激情| 亚洲福中文字幕伊人影院| 青青草精品视频| 国产精品亚洲人在线观看| av高清久久久| 欧美日韩精品是欧美日韩精品| 日韩精品最新网址| 国产视频911| 一区二区免费视频| 久久机这里只有精品| 国产精品系列在线播放| 91尤物视频在线观看| 欧美一区日韩一区| 国产三级三级三级精品8ⅰ区| 亚洲麻豆国产自偷在线| 日韩精品91亚洲二区在线观看| 国产一区二区h| 日本高清不卡一区| 亚洲精品在线免费播放| 成人免费在线观看入口| 免费不卡在线视频| 91亚洲精品乱码久久久久久蜜桃| 精品视频在线视频| 亚洲国产高清aⅴ视频| 亚洲成人动漫在线观看| 成人久久18免费网站麻豆| 日韩一区二区三区电影在线观看| 国产精品免费网站在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 91在线观看美女| 久久女同性恋中文字幕|