⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lookupscreen.java

📁 用java编写的魔塔小游戏,经过应用很实用,运行良好
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class LookupScreen extends GameCanvas
implements Runnable
{
	private Display display;
	private GameScreen gameScreen;
	private FightCalc fightCalc;
	private int[] orgeArray;
	private boolean isLookuping = false;
	//hold the pointer to page
	private int first = 0,last = 0;
	//hold the number of orges
	private int length;
	//hold the item number of a page
	private int itemNum = 6;
	//hold the position and size of item
	private int x,y,
				h = 20,
				split = 3;
	private boolean upPressed,downPressed;
	private Image orgeImage = GameScreen.getImage(GameScreen.IMAGE_MAP);
	private Image borderImage = GameScreen.getImage(GameScreen.IMAGE_BORDER3);
	
	public LookupScreen(Display display,GameScreen gameScreen,
		FightCalc fightCalc,int[] orgeArray)
	{
		super(false);
		this.display = display;
		this.gameScreen = gameScreen;
		this.fightCalc = fightCalc;
		this.orgeArray = orgeArray;
		length = orgeArray[GameMap.TILE_NUM - 1];
		last = length;
		if(length > itemNum)last = itemNum;
		this.setFullScreenMode(true);
	}
	
	private void nextPage()
	{
		if(last == length){
			return;
		}else if((length - last) > itemNum){
			first = last;
			last = first + itemNum;
		}else{
			first = last;
			last = length;
		}
	}
	
	private void prePage()
	{
		if(first == 0){
			return;
		}else{
			first = first - itemNum;
			last = first + itemNum;
		}
	}
	
	private int[] calcXY(int index)
	{
		int[] result = {0,0};
		int row = index / 11;
		int col = index - row * 11;
		//int col = index % 11;
		//int row = index - col * 12;
		result[0] = col * 16;
		result[1] = row * 16;
		return result;
	}
	
	private void drawItem(Graphics g)
	{
		int index;
		int[] orgeAttr;
		int damage;
		String damageStr;
		g.setFont(GameScreen.SMALL_FONT);
		for(int i = first;i < last;i ++)
		{
			index = i % itemNum;
			y = index * h + split * (index + 1) + gameScreen.borderY;
			x = gameScreen.borderX;
			orgeAttr = fightCalc.getOrgeAttr(orgeArray[i]);
			damage = fightCalc.getHeroDamage(orgeArray[i]);
			if(damage == -1){
				damageStr = " ?";
			}else{
				damageStr = Integer.toString(damage);
			}
			//draw orge pic
			int[] srcXY = calcXY(orgeArray[i]-1);
			//System.out.println("orge:"+orgeArray[i]);
			g.drawRegion(orgeImage,srcXY[0],srcXY[1],16,16,Sprite.TRANS_NONE,
					x+5,y+3,Graphics.TOP|Graphics.LEFT);
			g.setColor(255,200,100);//(0x985415);
			g.drawRect(x+5,y+3,15,15);
			g.setColor(GameScreen.TEXT_COLOR);
			/*g.drawString("名称:"+fightCalc.getOrgeName(orgeArray[i])+
						"血:"+orgeAttr[FightCalc.HP]+
						"攻击:"+orgeAttr[FightCalc.ATTACK],
						//"损耗:"+damage,
						x+22,y,Graphics.TOP|Graphics.LEFT);
			g.drawString("防御:"+orgeAttr[FightCalc.DEFEND]+
						"金钱:"+orgeAttr[FightCalc.MONEY]+
						"经验:"+orgeAttr[FightCalc.EXPERIENCE]+
						"损耗:"+damageStr,
						x+22,y+11,Graphics.TOP|Graphics.LEFT);*/
			
			g.drawString(
						"血"+orgeAttr[FightCalc.HP]+
						" 攻"+orgeAttr[FightCalc.ATTACK]+
						" 金"+orgeAttr[FightCalc.MONEY],
						
						x+22,y,Graphics.TOP|Graphics.LEFT);
			g.drawString("防"+orgeAttr[FightCalc.DEFEND]+
						" 经"+orgeAttr[FightCalc.EXPERIENCE]+
						" 损"+damageStr,
						
						x+22,y+11,Graphics.TOP|Graphics.LEFT);

		}
	}
	
	private void render(Graphics g)
	{
		g.setColor(0x000000);
		g.fillRect(0,0,getWidth(),getHeight());
		drawItem(g);
		g.drawImage(borderImage,
			gameScreen.borderX,gameScreen.borderY,Graphics.TOP | Graphics.LEFT);
		
		
		g.setColor(255,250,0);
		if(first != 0){
		/*	if(upPressed == true){
				g.setColor(255,0,0);
				upPressed = false;
			}*/	
			g.drawString("上一页",gameScreen.borderX + 22,gameScreen.borderY + 143,Graphics.TOP|Graphics.LEFT);
		}
		//g.setColor(0,255,0);
		if(last != length){
		/*	if(downPressed == true){
				g.setColor(255,0,0);
				downPressed = false;
			}*/
			g.drawString("下一页",gameScreen.borderX + 80,gameScreen.borderY + 143,Graphics.TOP|Graphics.LEFT);
		}
		
		flushGraphics();
	}
	
	
	private void tick()
	{
		int keyState = getKeyStates();
		if ((keyState & this.DOWN_PRESSED) != 0){
			nextPage();downPressed = true;
		}else if((keyState & UP_PRESSED) != 0){
			prePage();upPressed = true;
		}else if ((keyState & this.FIRE_PRESSED) != 0){
			stop();
		}
	}
	
	public void start()
	{
		isLookuping = true;
		Thread t = new Thread(this);
		t.start();
		//nextPage();
	}
	private void stop()
	{
		isLookuping = false;
		display.setCurrent(gameScreen);
	}
	
	public void run()
	{
		Graphics g = getGraphics();
		long startTime = 0;
	  	long timeTake = 0;
		while(isLookuping == true)
		{
			startTime = System.currentTimeMillis();
			tick();
			render(g);
			timeTake = System.currentTimeMillis() - startTime;
			if (timeTake < GameScreen.MILLIS_PER_TICK)
	  		{
	  	        try
	  			{
	  				
	  				Thread.sleep(GameScreen.MILLIS_PER_TICK - timeTake);
	  			} catch(InterruptedException e){System.out.println(e);} 
	  		}
		}
	}
	
	protected void keyPressed(int keyCode)
	{
		if(keyCode == GameCanvas.KEY_NUM3)stop();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -