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

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

?? tank.java

?? 基于尚學堂坦克大戰的基礎上開發,支持多人對戰,在線聊天,坦克大戰網絡版.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class Tank {
	public static final int XSPEED = 5;

	public static final int YSPEED = 5;

	public static final int WIDTH = 30;

	public static final int HEIGHT = 30;

	private int tankId;

	public int totalBlood = 100;

	public int blood = 100;

	private boolean ready=false;
	
	TankClient tc;

	private String user;

	private int controlMissileSpeed = 5;

	private boolean auto = false;

	public int x, y;

	private int oldX, oldY;

	public boolean bL = false, bU = false, bR = false, bD = false;

	Direction dir = Direction.STOP;

	private Direction ptDir = Direction.D;

	public boolean good;

	public boolean isAirplane;

	private boolean live = true;
	
	private String level="--坦克新兵--";

	private static Random r = new Random();

	private int step = r.nextInt(12) + 3;

	private int missileId = 1; // 記錄missile的ID

	private String color;

	String tankColor = "blue";

	String badTankColor = "white";

	String playerTankColor = "red";

	String airplane = "airplane";

	private static Map<String, Image> tankImgs = new HashMap<String, Image>();

	private static Map<String, Image> badTankImgs = new HashMap<String, Image>();

	private static Map<String, Image> playerTankImgs = new HashMap<String, Image>();

	private static Map<String, Image> badAirplaneImgs = new HashMap<String, Image>();

	private static Toolkit tk = Toolkit.getDefaultToolkit();

	{
		tankImgs = setTankColor(tankColor);
		badTankImgs = setTankColor(badTankColor);
		badAirplaneImgs = setTankColor(airplane);
		playerTankImgs = setTankColor(playerTankColor);
	}

	public Map<String, Image> setTankColor(String tankColor) {
		Map<String, Image> temp = new HashMap<String, Image>();
		Image[] tankimgs = new Image[] {
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankL.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankLU.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankR.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankRU.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankU.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankLD.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankD.png")),
				tk.getImage(Tank.class.getClassLoader().getResource(
						"images/" + tankColor + "TankRD.png")) };
		temp.put("L", tankimgs[0]);
		temp.put("LU", tankimgs[1]);
		temp.put("R", tankimgs[2]);
		temp.put("RU", tankimgs[3]);
		temp.put("U", tankimgs[4]);
		temp.put("LD", tankimgs[5]);
		temp.put("D", tankimgs[6]);
		temp.put("RD", tankimgs[7]);
		return temp;
	}

	public Tank(int x, int y, boolean good) {
		this.x = x;
		this.y = y;
		this.good = good;
	}

	public Tank(int x, int y, int tankId, boolean good, boolean auto,
			Direction dir, TankClient tc) {
		this(x, y, good);
		this.auto = auto;
		this.dir = dir;
		this.tc = tc;
		this.tankId = tankId;
	}

	public void drawTank(Graphics g) {

		if (controlMissileSpeed > 0) {
			controlMissileSpeed--;
		}

		if (good && auto == false) {
			color = tankColor;
		} else if (!good && auto == false) {
			color = playerTankColor;
		} else if (!good && auto == true) {
			if (isAirplane) {
				color = airplane;
			} else {
				color = badTankColor;
			}
		}

	/*	if (!live) {
			tc.badTanks.remove(this);
			tc.playerTanks.remove(this);
			return;
		}*/
		
		
		//顯示玩家昵稱
		if (!this.auto) {
			for(int i=0; i<tc.playerTanks.size(); i++){
				Tank pt = tc.playerTanks.get(i);
				if(pt.tankId==this.tankId){
					g.drawString(pt.getUser(), x, y - 20);
				}
			}
		if(this.tankId==tc.tank.getTankId()) 
		g.drawString(tc.tank.getUser(), x, y - 20);
		}

		g.setColor(Color.YELLOW);
		g.drawRect(x, y - 10, totalBlood, 4);
		g.fillRect(x + 1, y - 8, blood, 2);

		if (good && !auto) {
			dirDraw(g, tankImgs);
		} else if (!good && !auto) {
			dirDraw(g, playerTankImgs);
		} else if (!good && auto) {
			if (!isAirplane) {
				dirDraw(g, badTankImgs);
			} else {
				dirDraw(g, badAirplaneImgs);
			}
		}

		move();
	}

	// 跟據坦克的類型畫出坦克
	public void dirDraw(Graphics g, Map<String, Image> imgs) {
		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;
		}
	}

	void move() {
		try {
			if (tc.playerTanks.size() > 0) {
				for (int i = 0; i < tc.badTanks.size(); i++) {
					Tank tank = tc.badTanks.get(i);
					tank.setLive(false);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		/*
		 * if(tc.badTanks.size()>0){ Msg autoTankMsg = new
		 * AutoTankNewMsg(this,tc,tc.badTanks.size());
		 * tc.client.send(autoTankMsg); }
		 */

		oldX = x;
		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 (!good && auto) {

			if (step == 0) {
				dir = getRandomDirection();
				step = r.nextInt(12) + 3;
			}
			step--;

			if (r.nextInt(20) > 18) {
				this.fire();
			}

		}

		if (x < 0)
			x = 0;
		if (y < 30)
			y = 30;
		if (x + Tank.WIDTH > TankClient.DEFAULT_WIDTH)
			x = TankClient.DEFAULT_WIDTH - Tank.WIDTH;
		if (y + Tank.HEIGHT > TankClient.DEFAULT_HEIGHT)
			y = TankClient.DEFAULT_HEIGHT - Tank.HEIGHT;
	}

	public Direction getRandomDirection() {
		Direction[] dirs = Direction.values();
		int rn = r.nextInt(dirs.length);
		dir = dirs[rn];
		return dir;
	}

	public void pressEvent(KeyEvent e) {
		int key = e.getKeyCode();
		switch (key) {
		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() {
		Direction olddir = dir;

		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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区在线观看视频播放| 亚洲午夜在线视频| 色婷婷av久久久久久久| 久久99精品网久久| 亚洲欧美日韩小说| 精品国产乱码久久久久久免费| 91国偷自产一区二区三区观看| 国产精品资源在线| 秋霞av亚洲一区二区三| 一区二区三区日韩欧美精品| 欧美精品一区男女天堂| 制服.丝袜.亚洲.中文.综合| 91浏览器打开| 春色校园综合激情亚洲| 久久国产乱子精品免费女| 亚洲一区视频在线观看视频| 亚洲国产岛国毛片在线| 日韩欧美国产不卡| 欧美理论片在线| 91成人在线观看喷潮| 成人av电影在线观看| 大陆成人av片| 国产麻豆9l精品三级站| 久久精品国产亚洲aⅴ| 日日夜夜免费精品| 亚洲高清视频在线| 亚洲国产成人精品视频| 一个色妞综合视频在线观看| 中文字幕色av一区二区三区| 国产精品久久久久久久久动漫| 久久久久久久久久久久久女国产乱| 日韩免费高清电影| 日韩精品最新网址| 精品裸体舞一区二区三区| 欧美一区二区日韩| 日韩欧美综合一区| 欧美一区二区久久久| 欧美裸体一区二区三区| 欧美一卡二卡三卡| 日韩一区二区三区免费看| 91精品欧美综合在线观看最新| 欧美日韩精品一区二区三区 | 国产精品88av| 国产精品123| 福利电影一区二区三区| 成人综合婷婷国产精品久久蜜臀| 国产不卡一区视频| 91色综合久久久久婷婷| 91国产福利在线| 欧美老年两性高潮| 日韩欧美一区二区视频| 337p日本欧洲亚洲大胆色噜噜| 精品日韩一区二区| 亚洲国产精品激情在线观看 | 男女性色大片免费观看一区二区| 午夜久久电影网| 五月婷婷色综合| 麻豆91免费观看| 国产99久久久国产精品| 91美女精品福利| 欧美卡1卡2卡| 久久久久久免费毛片精品| 国产精品美女久久久久久2018| 成人欧美一区二区三区黑人麻豆 | 久久免费视频色| 国产精品国产精品国产专区不片| 亚洲情趣在线观看| 喷白浆一区二区| 成人一区在线看| 91国偷自产一区二区使用方法| 91精品国产色综合久久ai换脸 | 国产一区二区在线观看免费| 成人听书哪个软件好| 欧美综合视频在线观看| 日韩欧美成人一区| 国产精品国产自产拍高清av王其| 一区二区国产视频| 久久99热这里只有精品| 99久久精品费精品国产一区二区| 欧美军同video69gay| 久久精品亚洲精品国产欧美 | 777色狠狠一区二区三区| 日韩久久精品一区| 亚洲欧美日韩国产综合在线| 蜜臀av性久久久久av蜜臀妖精 | 欧美一区二区黄| 中文字幕在线不卡一区| 日本视频一区二区| 91亚洲大成网污www| 欧美大片一区二区| 伊人性伊人情综合网| 久久成人免费电影| 欧美日韩视频第一区| 日本一区二区视频在线观看| 亚瑟在线精品视频| k8久久久一区二区三区| 日韩欧美激情一区| 亚洲图片有声小说| 99国产精品一区| 欧美xingq一区二区| 亚洲精品视频一区| 成人国产精品视频| 26uuu久久天堂性欧美| 香蕉久久夜色精品国产使用方法 | 精品在线播放午夜| 欧美麻豆精品久久久久久| 18欧美亚洲精品| 国产乱码一区二区三区| 在线成人av网站| 亚洲一区二三区| 91亚洲男人天堂| 国产精品污网站| 国产精一区二区三区| 日韩午夜小视频| 日本欧美一区二区| 欧美精品色一区二区三区| 亚洲激情在线播放| 91日韩精品一区| 亚洲欧洲精品一区二区三区| 国产激情一区二区三区| 精品福利在线导航| 精品一区二区免费| 欧美成人精精品一区二区频| 日韩二区在线观看| 欧美精品一卡两卡| 天天色 色综合| 欧美久久高跟鞋激| 五月天激情综合网| 欧美喷潮久久久xxxxx| 亚洲国产综合在线| 欧美日韩视频一区二区| 亚洲超丰满肉感bbw| 欧美三区在线观看| 亚洲图片欧美视频| 777亚洲妇女| 麻豆91免费观看| 欧美撒尿777hd撒尿| 欧美电视剧在线看免费| 久久9热精品视频| 久久久久久久久久看片| 国产成人精品三级| 日本一区二区三区高清不卡| 国模套图日韩精品一区二区 | 91精品国产免费| 日韩av在线发布| 精品三级在线看| 国产毛片精品视频| 国产欧美va欧美不卡在线| 成人蜜臀av电影| 亚洲精品美国一| 欧美日韩美少妇| 久久99久久久久| 日本一区二区在线不卡| 91女厕偷拍女厕偷拍高清| 亚洲福利电影网| 欧美一区二区成人| 国产精品一区二区果冻传媒| 国产精品欧美一级免费| 欧日韩精品视频| 久久精品国产一区二区三区免费看| 久久免费视频一区| 色天天综合久久久久综合片| 亚洲v日本v欧美v久久精品| 日韩欧美专区在线| 国产99精品视频| 亚洲自拍与偷拍| 精品99999| 色噜噜夜夜夜综合网| 日韩福利电影在线观看| 国产亚洲综合av| 在线观看国产一区二区| 捆绑调教一区二区三区| 国产精品美女一区二区三区| 欧洲一区二区三区在线| 亚洲成精国产精品女| 91免费小视频| 老司机精品视频导航| 欧美国产日本视频| 在线观看91av| eeuss鲁一区二区三区| 天堂在线一区二区| 中文在线一区二区| 欧美精品自拍偷拍动漫精品| 粉嫩aⅴ一区二区三区四区五区| 亚洲午夜视频在线| 国产日韩欧美高清在线| 777午夜精品视频在线播放| 成人国产精品免费观看视频| 奇米色777欧美一区二区| 亚洲私人影院在线观看| 久久综合九色综合97_久久久 | 日韩欧美黄色影院| 色88888久久久久久影院野外| 激情综合网av| 亚洲国产精品久久人人爱蜜臀| 亚洲国产经典视频| 精品久久99ma| 欧美日韩精品综合在线| 91丨国产丨九色丨pron| 狠狠色丁香久久婷婷综|