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

📄 gamescreen.java

📁 这是一个魔塔游戏的源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		g.drawImage(borderImage,borderX,borderY,Graphics.TOP|Graphics.LEFT);
		flushGraphics();
	}
	
	private void drawAttr(Graphics g)
	{
		g.setColor(TEXT_COLOR);
    	//Font f = Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL);
    	
    	g.setFont(SMALL_FONT);
    	//g.drawString("hp:"+hero.getHp(),10,getHeight()-20,Graphics.TOP|Graphics.LEFT);
		g.drawString(
					"级"+hero.getLevel()+
					" 血"+hero.getHp()+
					
					
					" 金"+hero.getMoney(),
					
					borderX+8,borderY+134,Graphics.TOP|Graphics.LEFT);
		g.drawString("攻"+hero.getAttack()+
					" 防"+hero.getDefend()+
					" 经"+hero.getExperience(),
					borderX+8,borderY+145,Graphics.TOP|Graphics.LEFT);
		g.setColor(0xFECCA9);			
		g.drawString(Integer.toString(hero.getYellowKey()),borderX+109,borderY+132,
				Graphics.TOP|Graphics.LEFT);
		g.setColor(0xCCCCFE);
		g.drawString(Integer.toString(hero.getBlueKey()),borderX+109,borderY+140,
				Graphics.TOP|Graphics.LEFT);
		g.setColor(0xFE8888);
		g.drawString(Integer.toString(hero.getRedKey()),borderX+109,borderY+148,
				Graphics.TOP|Graphics.LEFT);
		g.setFont(NORMAL_FONT);
	}
	private void scrollWin()
	{
		scrollX = hero.getRefPixelX()  - winWidth / 2;
		scrollY = hero.getRefPixelY() - winHeight / 2;
		if(scrollX < 0){
			scrollX = 0;
		}else if((scrollX + winWidth) > GameMap.MAP_WIDTH){
			scrollX = GameMap.MAP_WIDTH - winWidth;
		}
		if(scrollY < 0){
			scrollY = 0;
		}else if((scrollY + winHeight) > GameMap.MAP_HEIGHT){
			scrollY = GameMap.MAP_HEIGHT - winHeight;
		}
	//	System.out.println("hero.getRefPixelX():"+hero.getRefPixelX()+"  hero.getRefPixelY():"+hero.getRefPixelY());
	//	System.out.println("scrollx:"+scrollX+"  scrollY:"+scrollY);
	}
	public void commandAction(Command c,Displayable d)
	{
		int x = borderX;
		int y = borderY+32;
		int w = 128;
		int h = 64;
		isSaving = true;
		g.setColor(BACK_COLOR);
		g.fillRect(x,y,w,h);
		g.drawImage(messageBoxImage,x,y,Graphics.TOP|Graphics.LEFT);
		g.setColor(TEXT_COLOR);
		g.drawString("正在存储游戏... ...",x+10,y+20,Graphics.TOP|Graphics.LEFT);
		flushGraphics();
		
		save();
		//System.out.println("saving...");
		stop();
		display.setCurrent(menu);
		
	}
	public static Image getImage(int type)
	{
		String name = "";
		Image result = null;
		switch (type)
		{
			case IMAGE_BORDER: name = "/border.png";break;
			case IMAGE_HERO:name = "/hero"+step+".png";break;
			case IMAGE_MAP: name = "/map"+step+".png";break;
			case IMAGE_DIALOG_HERO: name = "/dialog_hero.png";break;
			case IMAGE_DIALOG_ANGLE: name = "/dialog_angle.png";break;
			case IMAGE_DIALOG_THIEF: name = "/dialog_thief.png";break;
			case IMAGE_DIALOGBOX: name = "/dialogbox.png";break;
			case IMAGE_MESSAGEBOX: name = "/messagebox.png";break;
			case IMAGE_BORDER2: name = "/border2.png";break;
			case IMAGE_BORDER3: name = "/border3.png";break;
			case IMAGE_BORDER4: name = "/border4.png";break;
			case IMAGE_DIALOG_PRINCESS: name = "/dialog_princess.png";break;
			case IMAGE_DIALOG_BOSS: name = "/dialog_boss.png";break;
			case IMAGE_BLUE_GEEZER: name = "/dialog_bluegeezer.png";break;
			case IMAGE_RED_GEEZER: name = "/dialog_redgeezer.png";break;
			case IMAGE_SPLASH: name = "/splash.png";break;
			case IMAGE_GAMEOVER: name = "/gameover.png";break;
		}
		try
		{
			result = Image.createImage(name);
		}catch(Exception e){System.out.println("can't create image!");}
		return result;
	}
	
	public boolean fight(int type)
	{
		//result = false;
		if(fightCalc.canAttack(type) == false)return false;
		//System.out.println("canattck!(271)");
		FightScreen f = new FightScreen(display,this,fightCalc,hero,type);
		f.start();
		display.setCurrent(f);
		gameMap.remove();
		return true;
	}
	private void shop(int type)
	{
		ShopScreen s = new ShopScreen(display,this,hero,type);
		s.start();
		display.setCurrent(s);
	}
	private void jump()
	{
		if(hero.canJump == false)return;
		JumpScreen j = new JumpScreen(display,this,gameMap);
		j.start();
		display.setCurrent(j);
		hero.setFrame(0);
	}
	private void lookup()
	{
		if(hero.canLookup == false)return;
		LookupScreen l = new LookupScreen(display,this,fightCalc,gameMap.getOrgeArray());
		l.start();
		display.setCurrent(l);
	}
	private void dealTask(int type)
	{
		int curTask = -1;
		switch(type){
			case GameMap.MAP_ANGLE: curTask = Task.FIND_CROSS;
					 				curDialogImg = IMAGE_DIALOG_ANGLE;
								    break;
			case GameMap.MAP_THIEF: curTask = Task.FIND_AX;
					 				curDialogImg = IMAGE_DIALOG_THIEF;
					 				break;
			case GameMap.MAP_PRINCESS:curTask = Task.RESCUE_PRINCESS;
									  curDialogImg = IMAGE_DIALOG_PRINCESS;
									  break;
			case GameMap.MAP_BLUE_GEEZER:switch(gameMap.curFloorNum){
											case 2:curTask = Task.GET_QINGFEND_JIAN;
											       curDialogImg = IMAGE_BLUE_GEEZER;
											       //showMessage(this,g,hero.takeGem(GameMap.MAP_SWORD3));
												   break;
											case 5: shop(ShopScreen.SHOP_5_1);break;
											case 13:shop(ShopScreen.SHOP_13);break;
											case 15:curTask = Task.GET_SHENGGUANG_JIAN;
											        curDialogImg = IMAGE_BLUE_GEEZER;
												    break;
										}
										break;
			case GameMap.MAP_RED_GEEZER: switch(gameMap.curFloorNum){
											case 2:curTask = Task.GET_HUANGJIN_DUN;
											       curDialogImg = IMAGE_RED_GEEZER;
											       //showMessage(this,g,hero.takeGem(GameMap.MAP_SHIELD3));
												   break;
											case 5: shop(ShopScreen.SHOP_5_2);break;
											case 12:shop(ShopScreen.SHOP_12);break;
											case 15:curTask = Task.GET_XINGGUANG_DUN;
											        curDialogImg = IMAGE_RED_GEEZER;
												    break;
										}
										break;
			case GameMap.MAP_ORGE31: curTask = Task.FIGHT_BOSS;
					 				 curDialogImg = IMAGE_DIALOG_BOSS;
								     break;
		}
		if (curTask == -1) return;
		task.execTask(curTask);
	}
	public void dialog(String[] talk /*,int imgtype*/)
	{
		int x,y,w,h,
		    hsplit = 10,vsplit = 10;
		int n,start,end,length;
		int sectLength = 10;
		w = 128;
		h = 64;
		x = borderX;
		y = borderY+64;
		
		//isDialog = true;
		//talk circle
		for(int i = 0;i < talk.length;i ++){
			//for update background
			g.setColor(BACK_COLOR);
			g.fillRect(0,0,getWidth(),getHeight());
			drawAttr(g);
			layerManager.paint(g,borderX,borderY);
			g.drawImage(borderImage,borderX,borderY,Graphics.TOP|Graphics.LEFT);
			
			if(i % 2 == 0){
				drawDialogBox(IMAGE_DIALOG_HERO,
					Graphics.TOP|Graphics.LEFT,x,y,w,h);
			}else{
				drawDialogBox(curDialogImg,
					Graphics.TOP|Graphics.LEFT,x,y,w,h);
			}
							
			length = talk[i].length();
			n = length / sectLength;
			start = 0;
			end = sectLength;
			//split the long string to show
			for(int j = 0;j <= n;j += 2){
				//if(end + sectLength > length)end = length;
				if(j == n)end = length;
				g.setColor(BACK_COLOR);
				g.fillRect(x + hsplit,y + vsplit,w - 2*hsplit+5,h - 2*vsplit);
				g.setColor(TEXT_COLOR);
				g.drawString(talk[i].substring(start,end),
				    x + hsplit,y + vsplit,Graphics.TOP|Graphics.LEFT);
				if(end < length){
				
					start += sectLength;
					end += sectLength;
					if(end >= length)end = length;
					g.drawString(talk[i].substring(start,end),
					    x + hsplit,y + 3*vsplit-5,Graphics.TOP|Graphics.LEFT);
					start += sectLength;
					end += sectLength;
				}  
				flushGraphics();
				waitKeyDown(x,y);				
			}
			//g.drawString(talk[i],0,19,Graphics.TOP|Graphics.LEFT);
			//flushGraphics();
			//waitKeyDown();
		}
		//isDialog = false;
	}
	private void drawDialogBox(int imgType,int anchor,int x,int y,int w,int h)
	{
		g.setColor(BACK_COLOR);
		Image img = getImage(imgType);
		g.fillRect(x,y,w,h);
		g.drawImage(dialogBoxImage,x,y,Graphics.TOP | Graphics.LEFT);
		if(img != null){
			if(imgType == IMAGE_DIALOG_HERO){
				g.drawImage(img,x,y-64,anchor);
			}else{
				g.drawImage(img,x+85,y-64,anchor);
			}
		}
		g.setColor(255,255,0);
	}
	private void waitKeyDown(int x,int y)
	{
		boolean isflash = true;
		int keystate = getKeyStates();
	    long startTime = 0;
	    long timeTake = 0;
		while((keystate & this.DOWN_PRESSED) == 0)
		{
			startTime = System.currentTimeMillis();
			if(isflash == true){
				g.setColor(TEXT_COLOR);
			}else{
				g.setColor(BACK_COLOR);
			}
			g.drawString("▼",x+100,y+45,Graphics.TOP | Graphics.LEFT);
			flushGraphics();
			isflash = !isflash;
			keystate = getKeyStates();
			
			timeTake = System.currentTimeMillis() - startTime;
	  		if (timeTake < MILLIS_PER_TICK){
	  			try{
					Thread.sleep(MILLIS_PER_TICK - timeTake);
				}catch(Exception e){}
	  		}
			
			
		}
		/*while(downPressed == false)
		{
			try{
				Thread.yield();//.sleep(500);
			}catch(Exception e){}
		}
		downPressed = false;*/
	}
	protected void keyPressed(int keyCode)
	{
		//int action = getGameAction(keyCode);
		switch(keyCode){
			case GameCanvas.KEY_NUM1: jump();break;
			case GameCanvas.KEY_NUM3:  lookup();break;
			//case GameCanvas.DOWN: if(isDialog == true)downPressed = true;break;
		}
	}
	private void save()
	{
		try{
		
			RecordStore recordStore = rms.open();
			if(recordStore == null){
				System.out.println("save() error!");
				return;
			}
			int col = hero.getRefPixelX() / GameMap.TILE_WIDTH ;
			int row = hero.getRefPixelY() / GameMap.TILE_HEIGHT ;
			byte[] r1 = hero.encode();
			byte[] r2 = {(byte)gameMap.curFloorNum,(byte)gameMap.reachedHighest,
				(byte)row ,(byte)col,(byte)hero.getFrame()};
			byte[] r3 = task.getTask();
			if(recordStore.getNumRecords() <= 0){
				
				recordStore.addRecord(r1,0,r1.length);
				recordStore.addRecord(r2,0,r2.length);
				recordStore.addRecord(r3,0,r3.length);
				for(int i = 0;i < GameMap.FLOOR_NUM;i ++){
					recordStore.addRecord(gameMap.getFloorArray(i),0,GameMap.TILE_NUM);
				}
			}else{
				recordStore.setRecord(1,r1,0,r1.length);
				recordStore.setRecord(2,r2,0,r2.length);
				recordStore.setRecord(3,r3,0,r3.length);
				for(int i = 0 ;i < GameMap.FLOOR_NUM ;i ++){
					recordStore.setRecord(i+4,gameMap.getFloorArray(i),0,
						GameMap.TILE_NUM);
				}
			}
		}catch(Exception e){
			System.out.println("save() error::"+e);
		}
		rms.close();	
	}
	
	private void load()
	{
		try{
			RecordStore recordStore = rms.open();
			if(recordStore == null){
				System.out.println("save() error!");
				return;
			}
			byte[] r1 = recordStore.getRecord(1);
			byte[] r2 = recordStore.getRecord(2);
			byte[] r3 = recordStore.getRecord(3);
			hero.decode(r1);
			gameMap.curFloorNum = r2[0];
			gameMap.reachedHighest = r2[1];
			//gameMap.curRow = r2[2];
			//gameMap.curCol = r2[3];
			hero.setFrame(r2[4]);
			task.setTask(r3);
			for(int i = 0;i < GameMap.FLOOR_NUM; i ++)
			{
				gameMap.setFloorArray(i,recordStore.getRecord(i + 4));
			}
			//update 
			gameMap.setMap(gameMap.curFloorNum);
			
			hero.setRefPixelPosition(r2[3] * GameMap.TILE_WIDTH + GameMap.TILE_WIDTH / 2,
				r2[2] * GameMap.TILE_HEIGHT + GameMap.TILE_HEIGHT / 2);
			
		}catch(Exception e){
			System.out.println("load() error::"+e);
		}
		rms.close();
	}
	public void end()
	{
		stop();
		EndScreen end = new EndScreen(display,menu);
		display.setCurrent(end);
		end.start();
	}
}

⌨️ 快捷键说明

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