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

📄 shopscreen.java

📁 这是一个魔塔游戏的源代码
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class ShopScreen extends GameCanvas
implements Runnable
{
	//the number after the SHOP_ is the floor num that shop on
	public static final int SHOP_3 = 0,
							SHOP_5_1 = 1,
							SHOP_5_2 = 2,
							SHOP_11 = 3,
							SHOP_12 = 4,
							SHOP_13 = 5;
							
							
	private Display display;
	private GameScreen gameScreen;
	private HeroSprite hero;
	private boolean isShopping = false;
	//for showing different font color when select a item and this trade is success
	private boolean tradeSuccess = false;
	//hold number of menu items
	private int itemNum = 4;
	private int curItem;
	//private Graphics g;
	//hold the space of each item
	private int split = 20;
	//hold the position and size of item
	private int x,// = gameScreen.borderX,
				y,// = gameScreen.borderY,
				w,h;
	private Image borderImage = GameScreen.getImage(GameScreen.IMAGE_BORDER2);
	private static final String[][] menuList =
		{
			{"加800滴血","加攻4","加防4","离开商店"},//SHOP_3
			{"提升一级(需要100点)","增加攻击5(需要30点)","增加防御5(需要30点)","离开商店"},//SHOP_5_1
			{"购买一把黄钥匙($ 10)","购买一把蓝钥匙($ 50)","购买一把红钥匙($ 100)","离开商店"},//SHOP_5_2
			{"加4000滴血","加攻20","加防20","离开商店"},//SHOP_11
			{"卖出一把黄钥匙($ 7)","卖出一把蓝钥匙($ 35)","卖出一把红钥匙($ 70)","离开商店"},//SHOP_12
			{"提升三级(需要270点)","增加攻击17(需要95点)","增加防御17(需要95点)","离开商店"}//SHOP_13
			
		};
	private static final String[] titleList = 
		{
			"欢迎来到怪物商店,你仅需花25个金币,就可增加能力!",//SHOP_3
			"你好,英雄的人类,只要你有足够的经验,我就可以让你变得更强大!",//SHOP_5_1
			"相信你一定有特殊的需求,只要你有钱,我就可以满足你。",//SHOP_5_2
			"欢迎来到怪物商店,你仅需花100个金币,就可增加能力!",//SHOP_11
			"哦,欢迎你的到来,如果你手里缺少金币,我可以帮助你!",//SHOP_12
			"你好,英雄的人类,只要你有足够的经验,我就可以让你变得更强大!"//SHOP_13
		};
	/*private static final int[] cost = 
		{25,};*/
	private String[] menu;
	private int curShop;
	
	public ShopScreen(Display display,GameScreen gameScreen,
		HeroSprite hero,int shop)
	{
		super(true);
		this.display = display;
		this.gameScreen = gameScreen;
		this.hero = hero;
		curShop = shop;
		menu = menuList[curShop];
		itemNum = menu.length;
		//g = getGraphics();
		this.setFullScreenMode(true);
		//System.out.println("shop:"+curShop);
	}
	
	private void next()
	{
		if((curItem+1)<itemNum)curItem ++;
		else curItem = 0;
	}
	
	private void pre()
	{
		if((curItem - 1) >= 0) curItem --;
		else curItem = itemNum - 1;
	}
	
	private void render(Graphics g)
	{
		g.setColor(0,0,0);
		g.fillRect(0,0,getWidth(),getHeight());
		g.drawImage(borderImage,gameScreen.borderX,gameScreen.borderY,
				Graphics.TOP | Graphics.LEFT);
		drawTile(g);
		drawItem(g);
		y = curItem * h + split * (curItem + 1)+gameScreen.borderY + 45;
		//g.drawRect(x,y,w,h);
		if(tradeSuccess == true){
			g.setColor(255,0,0);
			tradeSuccess = false;
		}else {
			g.setColor(255,200,0);
		}
		
		g.drawString(menu[curItem],gameScreen.borderX + 15,y,
				Graphics.TOP | Graphics.LEFT);
		//g.drawString("$:"+hero.getMoney()+" hp:"+hero.getHp()+" d:"+hero.getDefend()+"a:"+hero.getAttack(),
		//0,130,Graphics.TOP | Graphics.LEFT);
		flushGraphics();
	}
	
	private void drawItem(Graphics g)
	{
		g.setColor(0x985415);
		for(int i = 0;i < itemNum; i ++)
		{
			y = i * h + split * (i + 1) + gameScreen.borderY + 45;
			
			g.drawString(menu[i],gameScreen.borderX + 15,y,Graphics.TOP | Graphics.LEFT);
		}
	}
	private void drawTile(Graphics g)
	{
		int end,start;
		int sectLength = 10;
		int length = titleList[curShop].length();
		int n = length / sectLength;
		start = 0;
		end = sectLength;
		g.setColor(GameScreen.TEXT_COLOR);		
		for(int j = 0;j <= n;j ++){
			//if(end + sectLength > length)end = length;
			if(j == n)end = length;
			
			g.drawString(titleList[curShop].substring(start,end),
			    gameScreen.borderX+8,gameScreen.borderY + 12*j + 8,Graphics.TOP|Graphics.LEFT);
			if(end < length){
				start += sectLength;
				end += sectLength;
			}  				
		}
	}

	private void tick()
	{
		int keyState = getKeyStates();
		if ((keyState & this.DOWN_PRESSED) != 0){
			next();
		}else if((keyState & UP_PRESSED) != 0){
			pre();
		}else if ((keyState & this.FIRE_PRESSED) != 0){
			dealItem();
		}
		
	}
	
	private void dealItem()
	{
		
		switch(curShop){
			case SHOP_3:  shop_0();break;
			case SHOP_5_1:shop_5_1();break;
			case SHOP_5_2:shop_5_2();break;
			case SHOP_11: shop_11();break;
			case SHOP_12: shop_12();break;
			case SHOP_13: shop_13();break;
		}
	}
	private void shop_0()
	{
		if(curItem == 3){stop();return;}
		else if(hero.getMoney() >= 25){
		
			switch(curItem)
			{
				case 0: hero.addHp(800);break;
				case 1: hero.addAttack(4);break;
				case 2: hero.addDefend(4);break;
				//case 3: stop();break;
			}
			hero.cutMoney(25);
			tradeSuccess = true;
		}
	}
	private void shop_5_1()
	{
		if(curItem == 3){stop();return;}
		
			switch(curItem)
			{
				case 0: if(hero.getExperience() >= 100){
							hero.levelUp(1);
							hero.cutExperience(100);
							tradeSuccess = true;
						}
						break;
				case 1: if(hero.getExperience() >= 30){
							hero.addAttack(5);
							hero.cutExperience(30);
							tradeSuccess = true;
						}
						break;
				case 2: if(hero.getExperience() >= 30){
							hero.addDefend(5);
							hero.cutExperience(30);
							tradeSuccess = true;
						}
						break;
			}

	}
	private void shop_5_2()
	{
		if(curItem == 3){stop();return;}
		
			switch(curItem)
			{
				case 0: if(hero.getMoney() >= 10){
							hero.addYellowKey();
							hero.cutMoney(10);
							tradeSuccess = true;
						}
						break;
				case 1: if(hero.getMoney() >= 50){
							hero.addBlueKey();
							hero.cutMoney(50);
							tradeSuccess = true;
						}
						break;
				case 2: if(hero.getMoney() >= 100){
							hero.addRedKey();
							hero.cutMoney(100);
							tradeSuccess = true;
						}
						break;
			}
			
	}
	private void shop_11()
	{
		if(curItem == 3){stop();return;}
		else if(hero.getMoney() >= 100){
		
			switch(curItem)
			{
				case 0: hero.addHp(4000);break;
				case 1: hero.addAttack(20);break;
				case 2: hero.addDefend(20);break;
				//case 3: stop();break;
			}
			hero.cutMoney(100);
			tradeSuccess = true;
		}
	}
	private void shop_12()
	{
		if(curItem == 3){stop();return;}
		
			switch(curItem)
			{
				case 0: if(hero.getYellowKey() >= 1){
							hero.cutYellowKey();
							hero.addMoney(7);
							tradeSuccess = true;
						}
						break;
				case 1: if(hero.getBlueKey() >= 1){
							hero.cutBlueKey();
							hero.addMoney(35);
							tradeSuccess = true;
						}
						break;
				case 2: if(hero.getRedKey() >= 1){
							hero.cutRedKey();
							hero.addMoney(70);
							tradeSuccess = true;
						}
						break;
			}
			
	}
	private void shop_13()
	{
		if(curItem == 3){stop();return;}
		
			switch(curItem)
			{
				case 0: if(hero.getExperience() >= 270){
							hero.levelUp(3);
							hero.cutExperience(270);
							tradeSuccess = true;
						}
						break;
				case 1: if(hero.getExperience() >= 95){
							hero.addAttack(17);
							hero.cutExperience(95);
							tradeSuccess = true;
						}
						break;
				case 2: if(hero.getExperience() >= 95){
							hero.addDefend(17);
							hero.cutExperience(95);
							tradeSuccess = true;
						}
						break;
			}

	}
	public void start()
	{
		isShopping = true;
		Thread t = new Thread(this);
		t.start();
	}
	private void stop()
	{
		isShopping = false;
		display.setCurrent(gameScreen);
	}
	
	public void run()
	{
		Graphics g = getGraphics();
		long startTime = 0;
	  	long timeTake = 0;
		while(isShopping == 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);} 
	  		}
		}
	}
}

⌨️ 快捷键说明

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