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

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

?? pinetree.java

?? 用java開發的一個實施策略游戲源碼 值得學習一下
?? JAVA
字號:
/*
	Netwar
	Copyright (C) 2002  Daniel Grund, Kyle Kakligian, Jason Komutrattananon, & Brian Hibler.
 
	This file is part of Netwar.
 
	Netwar is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.
 
	Netwar is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.
 
	You should have received a copy of the GNU General Public License
	along with Netwar; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package netwar.game.object;
import netwar.game.*;
import netwar.utils.*;
import netwar.utils.vectorgraphics.*;

/** Experimental Tree object. Destroyable obstacle.
 * @author Group N2 - Project Netwar
 * @author Daniel Grund
 */
public class PineTree extends netwar.game.GameObject {
	//Precalculated Point3D values for the tree. These can be done statically, because there is no
	//animation except during death sequence.
	//Note: after actually writing in all these semirandom constants.. I was thinking a little random engine usage could make the trees non-identical..
	//Maybe I will making these on a per-tree basis later. -Istaran
	private static SelfConvertingPoint drawVectorTop = new SelfConvertingPoint(0,0,20);
	private static SelfConvertingPoint drawVectorHigh1 = new SelfConvertingPoint(4.5 * Math.cos(Math.PI * 1f / 9f),4.5 * Math.sin(Math.PI * 1f / 9f),10);
	private static SelfConvertingPoint drawVectorHigh2 = new SelfConvertingPoint(4.6 * Math.cos(Math.PI * 4f / 9f),4.6 * Math.sin(Math.PI * 4f / 9f),10);
	private static SelfConvertingPoint drawVectorHigh3 = new SelfConvertingPoint(4.5 * Math.cos(Math.PI * 7f / 9f),4.5 * Math.sin(Math.PI * 7f / 9f),10.3);
	private static SelfConvertingPoint drawVectorHigh4 = new SelfConvertingPoint(4.5 * Math.cos(Math.PI * 12f / 9f),4.5 * Math.sin(Math.PI * 12f / 9f),10);
	private static SelfConvertingPoint drawVectorHigh5 = new SelfConvertingPoint(4.4 * Math.cos(Math.PI * 16f / 9f),4.4 * Math.sin(Math.PI * 16f / 9f),9.9);
	private static SelfConvertingPoint drawVectorLow1 = new SelfConvertingPoint(6.2 * Math.cos(Math.PI * 2f / 9f),6.2 * Math.sin(Math.PI * 2f / 9f),5.9);
	private static SelfConvertingPoint drawVectorLow2 = new SelfConvertingPoint(6.0 * Math.cos(Math.PI * 4f / 9f),6.0 * Math.sin(Math.PI * 4f / 9f),6);
	private static SelfConvertingPoint drawVectorLow3 = new SelfConvertingPoint(5.9 * Math.cos(Math.PI * 7f / 9f),5.9 * Math.sin(Math.PI * 7f / 9f),6.1);
	private static SelfConvertingPoint drawVectorLow4 = new SelfConvertingPoint(6.0 * Math.cos(Math.PI * 12f / 9f),6.0 * Math.sin(Math.PI * 12f / 9f),6);
	private static SelfConvertingPoint drawVectorLow5 = new SelfConvertingPoint(6.1 * Math.cos(Math.PI * 16f / 9f),6.1 * Math.sin(Math.PI * 16f / 9f),6.2);
	private static SelfConvertingPoint drawVectorGround1 = new SelfConvertingPoint(1.0 * Math.cos(Math.PI * 2f / 5f),1.0 * Math.sin(Math.PI * 2f / 5f),0);
	private static SelfConvertingPoint drawVectorGround2 = new SelfConvertingPoint(1.0 * Math.cos(Math.PI * 4f / 5f),1.0 * Math.sin(Math.PI * 4f / 5f),0);
	private static SelfConvertingPoint drawVectorGround3 = new SelfConvertingPoint(1.0 * Math.cos(Math.PI * 6f / 5f),1.0 * Math.sin(Math.PI * 6f / 5f),0);
	private static SelfConvertingPoint drawVectorGround4 = new SelfConvertingPoint(1.0 * Math.cos(Math.PI * 8f / 5f),1.0 * Math.sin(Math.PI * 8f / 5f),0);
	private static SelfConvertingPoint drawVectorGround5 = new SelfConvertingPoint(1.0 * Math.cos(Math.PI * 10f / 5f),1.0 * Math.sin(Math.PI * 10f / 5f),0);
	private static java.awt.Color trunkBrown = new java.awt.Color(94, 22, 4);
	private static java.awt.Color leafGreen = new java.awt.Color(3, 89, 5);
	
	private static CoherentPointSet points = new CoherentPointSet(16);
	private static GraphicThing appearance= null;
	private VirtualCoherentGraphicThing myAppearance;;
	
	/** Creates a new instance of PineTree */
	public PineTree() {
	}
	
	/** Initialize the Point3Ds used for this Base.
	 * These are the location of the ground-center of the Base in game-space, and
	 * the relative locations of the triangle/line vertices relative to that point.
	 */
	protected void createVectors() {
		vr = new Point3D[1];
		vr[0] = Hex.getMapPoint(x,y);
		
		if(appearance == null) {
			appearance = new OrderedGraphicSet(
			new GraphicTriangle( (drawVectorTop), (drawVectorGround1), (drawVectorGround2), trunkBrown), 15);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorGround2), (drawVectorGround3), trunkBrown), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorGround3), (drawVectorGround4), trunkBrown), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorGround4), (drawVectorGround5), trunkBrown), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorGround5), (drawVectorGround1), trunkBrown), false);
			
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorLow1), (drawVectorLow2), leafGreen), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorLow2), (drawVectorLow3), leafGreen), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorLow3), (drawVectorLow4), leafGreen), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorLow4), (drawVectorLow5), leafGreen), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorLow5), (drawVectorLow1), leafGreen), false);
			
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorHigh1), (drawVectorHigh2), leafGreen.brighter()), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorHigh2), (drawVectorHigh3), leafGreen.brighter()), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorHigh3), (drawVectorHigh4), leafGreen.brighter()), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorHigh4), (drawVectorHigh5), leafGreen.brighter()), false);
			((OrderedGraphicSet)appearance).add(new GraphicTriangle( (drawVectorTop), (drawVectorHigh5), (drawVectorHigh1), leafGreen.brighter()), false);
			
			points.add(drawVectorTop);
			
			points.add(drawVectorHigh1);
			points.add(drawVectorHigh2);
			points.add(drawVectorHigh3);
			points.add(drawVectorHigh4);
			points.add(drawVectorHigh5);
			
			points.add(drawVectorLow1);
			points.add(drawVectorLow2);
			points.add(drawVectorLow3);
			points.add(drawVectorLow4);
			points.add(drawVectorLow5);
			
			points.add(drawVectorGround1);
			points.add(drawVectorGround2);
			points.add(drawVectorGround3);
			points.add(drawVectorGround4);
			points.add(drawVectorGround5);
			
		}
		if(netwar.Mapper.theApp != null) myAppearance = new VirtualCoherentGraphicThing(appearance, points, vr[0], (new java.util.Random()).nextInt(360));
                else myAppearance = new VirtualCoherentGraphicThing(appearance, points, vr[0], netwar.Netwar.netwar.random.nextInt(360));
		
	}
	
	/** Returns false, because the tree has no weapon.
	 * @return false
	 */
	protected boolean aim() {
		return false;
	}
	
	/** Perform the data changes for one frame of animation while dying. */
	protected void animateDie() {
		if(frame == framesToDie()) {
			Hex.getHex(x,y).unreserve();
			Hex.getHex(x,y).leave(this);
			myAppearance.explode(vr[0]);
		}
		frame--;
		if(frame == 0)
			remove();
	}
	
	/** Perform the data changes for one frame of animation while being made.
	 * Pine trees pre-exist: there is no formation animation.
	 */
	protected void animateMake() {
	}
	
	/** Draw this GameObject onto GameViewer v, by using v's drawing methods.
	 * @param v The GameViewer which will display this GameObject.
	 * @see netwar.gui.HexViewer
	 */
	public void draw(GameViewer v) {
		myAppearance.draw(v);
	}
	/** Requests that the GraphicThing(s) used by this object be added to GameViewer v.
	 * @param v The GameViewer which will be displaying the object.
	 */
	public void addTo(GameViewer v) {
		v.add(myAppearance);
	}
	public void killGraphics() {
		myAppearance.kill();
	}
	/** Returns the number of frames of animation for the death sequence.
	 * @return 5
	 */
	protected int framesToDie() {
		return 10;
	}
	
	/** Returns the number of frames of animation for the creation sequence.
	 * @return 0
	 */
	protected int framesToMake() {
		return 0;
	}
	
	/** Return the height of this GameObject for selection box and explosion hit calculations.
	 * @return 20
	 */
	public float getHeight() {
		return 20f;
	}
	
	/** Return the width of this GameObject for selection box and explosion hit calculations.
	 * @return 5
	 */
	public float getWidth() {
		return 6.2f;
	}
	
	/** Clear the current long-term goal. */
	public void setGoal() {
	}
	
	/** Set the current long-term goal to a GameObject.
	 * This is a tree. It does not use the goal system.
	 * @param u The GameObject which is the goal.
	 */
	public void setGoal(GameObject u) {
	}
	
	/** Set the current long-term goal to a location, at hex coordinate (gx, gy).
	 * This is a tree. It does not use the goal system.
	 * @param gx The x coordinate of the goal, in hex coords.
	 * @param gy The y coordinate of the goal, in hex coords.
	 */
	public void setGoal(int gx, int gy) {
	}
	
	/** Perform operations for this time step.
	 * Specifically, perform the Point3D transforms for any/all animations,
	 * fire at an enemy if possible, and do any required decision making.
	 * This is a tree. It is only animated if it is dying.
	 */
	protected void update() {
		if(action == 5)
			animateDie();
	}
	
	/** Return the number of frames to wait between firing shots.
	 * @return 0
	 */
	public int weaponDelay() {
		return 0;
	}
	
	/** Return the square of the maximum weapon range of this GameObject.
	 * @return 0
	 */
	public float weaponRangeSquared() {
		return 0f;
	}
	
	public boolean isDead() {
		return (action == 5);
	}
	public boolean damageable() {
		return (action != 5);
	}
	/** The tree uses the 'threshold damage system'.
	 * If sufficient damage (15 or more) is dealt in one blow,
	 * the tree is destroyed.
	 */
	public void recieveDamage(int dam) {
		if(dam >= 15) {
			action = 5;
			frame = framesToDie();
		}
	}
	
	static final String[] PROPERTIES = {};
	protected String[] PROPERTIES() {
		return PROPERTIES;
	}
	protected String getProperty(int p) {
		switch(p) {
			default:
				Assert.notFalse(false, "getProperty(int) error.");
		}
		return null;
	}
	
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品gif动图一区| 中文字幕一区二区三中文字幕| 欧美三区免费完整视频在线观看| 日韩欧美色综合网站| 日韩专区欧美专区| 欧美一卡二卡三卡| 寂寞少妇一区二区三区| 久久久精品国产免大香伊 | 成人综合婷婷国产精品久久 | 国产女同性恋一区二区| 国产91在线观看丝袜| 亚洲品质自拍视频网站| 欧美三级日韩三级国产三级| 日韩av电影免费观看高清完整版 | av中文一区二区三区| 亚洲欧美综合网| 欧美日韩国产电影| 麻豆国产精品一区二区三区 | 波多野洁衣一区| 精品国产一区二区亚洲人成毛片| 一区二区免费看| 波多野洁衣一区| 亚洲444eee在线观看| 精品乱人伦小说| 免费高清不卡av| 中文一区二区完整视频在线观看| 精品一区二区三区蜜桃| 337p亚洲精品色噜噜狠狠| 日韩欧美黄色影院| 午夜精品在线视频一区| 日韩精品一区二区三区四区视频 | 国产精品日韩成人| 欧美日韩在线一区二区| 国产精品中文字幕欧美| 亚洲成人久久影院| 国产日韩精品一区| 欧美电影在哪看比较好| 成人免费高清视频在线观看| 制服丝袜激情欧洲亚洲| 怡红院av一区二区三区| 91性感美女视频| 久久人人97超碰com| 欧美日韩精品欧美日韩精品| 国产精品综合一区二区三区| 日本不卡高清视频| 欧美午夜理伦三级在线观看| 日韩欧美国产三级| 亚洲在线中文字幕| 制服丝袜激情欧洲亚洲| 日本欧美一区二区三区| 中国av一区二区三区| 欧美精品久久一区二区三区| 99riav久久精品riav| 国产日韩欧美综合一区| 欧美日韩精品综合在线| av在线播放不卡| 国产乱子伦一区二区三区国色天香 | 国产成人无遮挡在线视频| 亚洲一区免费观看| 国产精品福利电影一区二区三区四区| 91在线精品一区二区三区| 国精品**一区二区三区在线蜜桃| 久久女同精品一区二区| av男人天堂一区| 国产成人a级片| 久久99深爱久久99精品| 蜜臀久久99精品久久久久久9| 精品免费一区二区三区| 91精品国产综合久久久久久| 韩国女主播成人在线| 青青草成人在线观看| 天天操天天综合网| 午夜久久福利影院| 午夜精品一区二区三区三上悠亚| 精品国产91久久久久久久妲己 | 欧美性色黄大片| 色综合久久九月婷婷色综合| 精品理论电影在线| 日韩网站在线看片你懂的| 欧美精品高清视频| 国产成人亚洲综合a∨猫咪| 国产一区二区在线影院| 亚洲精品成人少妇| 亚洲三级小视频| 日韩欧美电影在线| 欧美变态凌虐bdsm| 在线一区二区三区| 精品视频1区2区| 在线91免费看| 91美女在线看| 91久久免费观看| 欧美日韩三级一区| 日韩欧美aaaaaa| 2020国产精品| 在线播放视频一区| 成人国产一区二区三区精品| 99精品久久只有精品| 精品一区二区影视| 丁香婷婷综合色啪| 91麻豆福利精品推荐| 国产一区二区看久久| 调教+趴+乳夹+国产+精品| 奇米四色…亚洲| 亚洲国产综合91精品麻豆 | 欧美日韩精品专区| 欧美丰满少妇xxxxx高潮对白| 91麻豆国产在线观看| 在线观看网站黄不卡| 制服丝袜亚洲播放| 久久久激情视频| 伊人夜夜躁av伊人久久| 欧美天堂亚洲电影院在线播放| 狠狠色2019综合网| 91网上在线视频| 91精品国产色综合久久ai换脸| 99精品视频在线观看免费| 欧美日韩在线播放三区四区| 色婷婷亚洲婷婷| 日韩欧美高清一区| 亚洲桃色在线一区| 日本不卡视频一二三区| 成人91在线观看| 9191成人精品久久| 国产精品久久久久天堂| 三级在线观看一区二区| 丁香亚洲综合激情啪啪综合| 国产在线国偷精品产拍免费yy| 美女在线视频一区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美网站大全在线观看| 精品国产乱码久久久久久久久| 日韩欧美中文字幕一区| 69堂亚洲精品首页| 国产精品不卡视频| 麻豆一区二区三| 91黄色免费版| 久久久精品日韩欧美| 国产精品欧美久久久久无广告 | 日韩av在线免费观看不卡| 成人亚洲一区二区一| 成人app在线观看| 精品理论电影在线观看 | 日本高清成人免费播放| 精品国产乱码久久久久久免费| 久久久久久久av麻豆果冻| 亚洲国产精品影院| bt7086福利一区国产| 精品福利一二区| 亚洲国产精品国自产拍av| 91国偷自产一区二区三区成为亚洲经典 | 欧美视频精品在线观看| 国产精品免费视频网站| 国产精品综合一区二区| 欧美一区二区三区的| 亚洲一级二级三级| 色婷婷av一区二区三区大白胸| 8x8x8国产精品| 精品成人私密视频| 青青草精品视频| 在线播放中文一区| 五月激情综合网| 欧美曰成人黄网| 亚洲综合一二区| 91久久精品午夜一区二区| 自拍视频在线观看一区二区| 成人精品一区二区三区四区| 久久一区二区三区国产精品| 奇米影视在线99精品| 日韩一级完整毛片| 美日韩一区二区| 日韩女优毛片在线| 精彩视频一区二区三区| 色伊人久久综合中文字幕| 国产精品第13页| 99久久99久久精品国产片果冻 | 99视频精品在线| 国产欧美日韩视频在线观看| 国产精品资源在线| 国产精品久久久久婷婷| 日韩av一级片| 日韩欧美三级在线| 国产一区二区0| 亚洲国产成人午夜在线一区| 高清beeg欧美| 亚洲欧美日韩国产综合| 国产精品一区一区三区| 日本一区二区免费在线| 成人精品在线视频观看| 欧美精品一区二区三区蜜臀| 亚洲一区中文日韩| 337p亚洲精品色噜噜| 看电视剧不卡顿的网站| 欧美三级电影在线观看| 青青草成人在线观看| 色综合中文字幕国产| 1区2区3区国产精品| 欧美日韩精品综合在线| 国内成人精品2018免费看| 国产精品欧美久久久久一区二区| 国产乱理伦片在线观看夜一区|