maincanvas.java

来自「用J2ME实现的战棋类小游戏DEMO,寻路用A星算法,因为时间关系物品使用功能请」· Java 代码 · 共 1,739 行 · 第 1/4 页

JAVA
1,739
字号
				g.setColor(0xff0000);
				g.drawString("这里是关于界面", 60, 40, 0);
				break;

			case GAMEOPTION:
				g.fillRect(60 + (musicIndex % 2) * 100, 80, 20, 60);
				g.drawImage(gm.pic[3], 40, 60, 0);
				g.drawImage(gm.pic[4], 140, 60, 0);
				g.drawString("返回", GameTools.SCREEN_WIDTH - 30,
						GameTools.SCREEN_HEIGHT - 30, 0);
				break;
				
			case WIN:
				g.setClip(0, 0, 176, 208);
				g.drawImage(mapTalk, 0, 0, 0);
				g.setColor(0x2d2d40);
				g.fillRoundRect(0,165-41,176-1,40,8,8);		
				g.setColor(0x1e2d64);
				g.drawRoundRect(0,165-41,176-1,40,8,8);
				g.setColor(0xffffff);
				g.drawString(message[messageIndex], 5, 165-27, 0);
				break;
				
				
			case GAMINGHUA1:
				switch(inGameingTalkIndex){
				case 0:
					g.setClip(0, 0, 176, 208);
					g.setColor(0);
					g.fillRect(0, 0, GameTools.SCREEN_WIDTH, GameTools.SCREEN_HEIGHT);
					g.setColor(0x2d2d40);
					g.fillRoundRect(0,165-41,176-1,40,8,8);		
					g.setColor(0x1e2d64);
					g.drawRoundRect(0,165-41,176-1,40,8,8);
					g.setColor(0xffffff);
					g.drawString(message[messageIndex], 5, 165-27, 0);
					break;
				case 1:
					g.setClip(0, 0, 176, 208);
					g.drawImage(mapTalk, 0, 0, 0);
					g.setColor(0x2d2d40);
					g.fillRoundRect(0,165-41,176-1,40,8,8);		
					g.setColor(0x1e2d64);
					g.drawRoundRect(0,165-41,176-1,40,8,8);
					g.setColor(0xffffff);
					g.drawString(message[messageIndex], 5, 165-27, 0);
					break;
				}

			case GAMING:

				switch (inGameingIndex) {
				case 0://普通状态
                
					tl.paint(g);   
                 
					
					if(enemyB.alive==true){enemyB.paint(g);}else{}
					if(enemyA.alive==true){enemyA.paint(g);}else{}
					player.paint(g);
			
					break;
				case 1://普通状态+TL2
					tl.paint(g);

					tl2.painttl2(g);

					fangPlayer.paint(g);
					if(enemyB.alive==true){enemyB.paint(g);}else{}
					if(enemyA.alive==true){enemyA.paint(g);}else{}
					player.paint(g);
					
					break;
				case 2://物理攻击菜单+选择物理攻击方格
					tl.paint(g);
					if(enemyB.alive==true){enemyB.paint(g);}else{}
					if(enemyA.alive==true){enemyA.paint(g);}else{}
					player.paint(g);
					tl3.setPosition(player.getX() - 28, player.getY() + 16);
					tl3.painttl3(g);
					LFangPlayer.paintLFang(g);
					break;
				case 3://主角攻击动画片
					tl.paint(g);
					if(enemyB.alive==true){enemyB.paint(g);}else{}
					if(enemyA.alive==true){enemyA.paint(g);}else{}
				
					playerWLAttacker.paintPWLA(g);
					break;
				case 4://敌人攻击动画片
					tl.paint(g);
					if(enemyB.alive==true){enemyB.paint(g);}else{}
					player.paint(g);
				
					enemyAWLAttacker.paintPWLA(g);
					
					break;
				case 5://敌人攻击动画片
					tl.paint(g);
					if(enemyA.alive==true){enemyA.paint(g);}else{}
					player.paint(g);
				
					enemyBWLAttacker.paintPWLA(g);
					
					break;
					
				case 16:
                    tl.paint(g);   
                    tl2.painttl2(g);
                    fangPlayer.paint(g);
                	if(enemyB.alive==true){enemyB.paint(g);}else{}
            		if(enemyA.alive==true){enemyA.paint(g);}else{}
					player.paint(g);
					zhuangtai(g);
					break;
				case 17:
					   tl.paint(g);   
					   tl2.painttl2(g);

						fangPlayer.paint(g);
						if(enemyB.alive==true){enemyB.paint(g);}else{}
						if(enemyA.alive==true){enemyA.paint(g);}else{}
						player.paint(g);
						
						g.setClip(150, 170, 20, 60);
						g.setColor(0x0055ff);
						g.fillRoundRect(150, 170, 20, 20, 10, 10);
						g.setColor(0xffffff);
						g.drawString("待机", 150, 170, 0);
					break;
				case 18:
					 tl.paint(g);  
					if(enemyB.alive==true){enemyB.paint(g);}else{}
					if(enemyA.alive==true){enemyA.paint(g);}else{}
					player.paint(g);
					enemyDier.paint(g);
					break;
				}

			}

		}

	}
public void zhuangtai(Graphics g){
	
	g.setClip(0, 130, 176, 50);
	g.setColor(0x0000ff);
	g.fillRoundRect(0, 130, 176, 26, 20,10);
	g.setColor(0x0000aa);
	g.drawRoundRect(0, 130, 176, 26, 20,10);
	g.setColor(0xffffff);
	g.drawString(currentjuese.name, 10, 135, 0);
	g.drawString("HP", 70, 135, 0);
	g.drawString(currentHMAD[0], 90, 135, 0);
	g.drawString("MP", 110, 135, 0);
	g.drawString(currentHMAD[1], 140, 135, 0);
}
	public void keyPressed(int k) {

		keycode = k;

	}

	public void keyReleased(int k) {

		rekeycode = k;

		if (gameUserFace == GAMING) {

			player.setCurrentFrame(0);
		}
		keycode = 0;

	}
	
	public void backrekey(){
		rekeycode=0;
	}

	public void run() {

		while (isRunning) {
			long start = System.currentTimeMillis();

			gameLogic();
			repaint();
			long costTime = System.currentTimeMillis() - start;
			if (costTime < 1000 / FPS) {
				try {
					Thread.sleep(1000 / FPS - costTime);
				} catch (InterruptedException e) {
				}
			}
		}
	}

	public void gameLogic() {
		switch (gameUserFace) {
		case GAMELOGO:
			if (System.currentTimeMillis() - startTime > 3000) {
				startTime = System.currentTimeMillis();
				if (gl.nextLogo() >= 2) {
					gameUserFace = GAMEMENU;
				}
			}

			break;
		case GAMEMENU:
			if (keycode == LEFT)
				gm.menuLeft();
			if (keycode == RIGHT)
				gm.menuRight();
			if (rekeycode == FIRE) {
				switch (gm.getMenuIndex()) {
				case GameMenu.GAMESTART:
					rekeycode = 0;
					gameUserFace = GAMINGHUA1;

					break;
				case GameMenu.GAMECONTINUE:
					break;
				case GameMenu.GAMEOPTION:
					rekeycode = 0;
					gameUserFace = GAMEOPTION;

					break;
				case GameMenu.GAMEHELP:
					break;
				case GameMenu.GAMEABOUT:
					rekeycode = 0;
					gameUserFace = GAMEABOUT;

					break;
				case GameMenu.GAMEEXIT:
					rekeycode = 0;
					mm.GameExit();
				}
				keycode = 0;
			}
			break;

		case GAMEABOUT:
			if (keycode == SOFT_RIGHT) {
				gameUserFace = GAMEMENU;
			}

			break;

		case GAMEOPTION:
			if (keycode == RIGHT) {
				musicIndex = 1;
			}
			if (keycode == LEFT) {
				musicIndex = 0;
			}
			if (keycode == SOFT_LEFT || keycode == FIRE) {
				if (musicIndex == 0) {
					Music = true;
				} else {
					Music = false;
				}

				if (Music)
					System.out.println("声音打开了");
				else
					System.out.println("声音关闭了");
			}
			if (keycode == SOFT_RIGHT) {
				gameUserFace = GAMEMENU;
			}
			keycode = 0;
			break;
		case WIN:
			if(rekeycode==-5){messageIndex++;rekeycode=0;}
			if(messageIndex==29){rekeycode=0;inGameingTalkIndex=0;messageIndex=0;mm.GameExit();}
			break;
		case GAMINGHUA1:
			switch(GameTools.currentTalk){
			case 0:
//				gameUserFace=GAMING;
//				inGameingIndex=0;
				if(rekeycode==-5){messageIndex++;rekeycode=0;}
				if(messageIndex==14){rekeycode=0;inGameingTalkIndex=1;}
				if(messageIndex==23){rekeycode=0;inGameingIndex=0;	gameUserFace=GAMING;}
			
		
			break;
			
			}
			break;
		case GAMING:

			switch (GameTools.currentAction) {
			case 0:
			
				inGameingIndex = 0;
				//敌人B的setcurrentframe()重置一次
				directP=0;
				// 方格移动到PLAYER那里
				fangPlayer.fangMoveToPlayer(player.getX(), player.getY());
				backX=player.getX();
                backY=player.getY();
				GameTools.currentAction++;
				break;
			case 1:
				// 移动方格+释放按键==>出现可移动范围
				rekeycode = -5;
				if (rekeycode == -5) {
					inGameingIndex = 16;
					fangPlayer.FireFanWei(rekeycode, fangPlayer, player,
							map_tl2);
				}
				rekeycode = 0;
				fangPlayer.moveSprite(keycode);
				TiledLayer.setWindowPosition(fangPlayer.getX()
						+ fangPlayer.getWidth() / 2 - GameTools.SCREEN_WIDTH
						/ 2, fangPlayer.getY() + fangPlayer.getHeight() / 2
						- GameTools.SCREEN_HEIGHT / 2);

				break;
			case 2:
				// 点ji移动范围==>移动方法
			//	System.out.println(map_tl2[enemyA.getY() / 24][enemyA.getX() / 24]+" "+map_tl2[enemyB.getY() / 24][enemyB.getX() / 24]);
				if (rekeycode == -5
						&& map_tl2[fangPlayer.getY() / 24][fangPlayer.getX() / 24] != 2) {
					if (rekeycode == -5
							&& map_tl2[fangPlayer.getY() / 24][fangPlayer
									.getX() / 24] == 1) {
					
						inGameingIndex = 0;
						setAllMapZero();
						movingPlayer();
						rekeycode = 0;
					
						GameTools.currentAction++;
					}
				}
				showZhuangTai();
				fangPlayer.moveSprite(keycode);
				TiledLayer.setWindowPosition(fangPlayer.getX()
						+ fangPlayer.getWidth() / 2 - GameTools.SCREEN_WIDTH
						/ 2, fangPlayer.getY() + fangPlayer.getHeight() / 2
						- GameTools.SCREEN_HEIGHT / 2);

				break;

			case 3:
				LFangPlayer.setPosition(player.getX() - 28, player.getY() + 16);
				inGameingIndex = 2;
				
				GameTools.currentAction++;
				break;
			case 4:
				 //按INDEX=2"攻"
				if (rekeycode == -5&&LFangPlayer.lFangIndex==0) {
					
					setUDLR();
					LFangPlayer.lFangIndex=0;
					inGameingIndex = 17;
					rekeycode = 0;
					GameTools.currentAction=20;
				}else
				 //按INDEX=2"技"
				if (rekeycode == -5&&LFangPlayer.lFangIndex==1) {
				//	LFangPlayer.lFangIndex=0;
			//		inGameingIndex = 0;
				//	rekeycode = 0;
			//		GameTools.currentAction++;
					setUDLR();
					LFangPlayer.lFangIndex=0;
					inGameingIndex = 17;
					rekeycode = 0;
					GameTools.currentAction=20;
				}else
				   //按INDEX=2"悔"
				if (rekeycode == -5&&LFangPlayer.lFangIndex==2) {
					LFangPlayer.lFangIndex=0;
					inGameingIndex = 0;
					player.setPosition(backX, backY);
					rekeycode=0;
					GameTools.currentAction=0;
				}else
				// 按INDEX=3"待"==>下一步
				if (rekeycode == -5&&LFangPlayer.lFangIndex==3) {
					LFangPlayer.lFangIndex=0;
						inGameingIndex = 0;
						rekeycode = 0;
						GameTools.currentAction++;
				}
             
			
                LFangPlayer.LFangMoveSprite(keycode);
                  
				break;
				
			case 20:
				if(keycode==-5&&map_tl2[fangPlayer.getY()/24][fangPlayer.getX()/24]==2){GameTools.currentAction=21;}
					fangPlayer.moveSpriteLow(keycode,player.getX(),player.getY());
					TiledLayer.setWindowPosition(fangPlayer.getX()
							+ fangPlayer.getWidth() / 2 - GameTools.SCREEN_WIDTH
							/ 2, fangPlayer.getY() + fangPlayer.getHeight() / 2
							- GameTools.SCREEN_HEIGHT / 2);
				if(keycode==-7){inGameingIndex=0;GameTools.currentAction=5;}
				//	showZhuangTai();
					break;
			case 21:
				
				

				//"zhujue物理攻击"
			
					if(fangPlayer.getX()==player.getX()&&fangPlayer.getY()==player.getY()){inGameingIndex=17;GameTools.currentAction=20;}
				
							
								if (enemyA.getY()==fangPlayer.getY()&&enemyA.getX()==fangPlayer.getX()){
								   if((enemyA.getY()==player.getY()-24)&&(enemyA.getX()==player.getX())){
								
								
								indexPWLA++;
								if(directP!=1){
									playerWLAttacker.setCurrentFrames(playerWLAttacker.up);
								playerWLAttacker.setCurrentFrame(0);
								directP++;
								}
								playerWLAttacker.setPosition(player.getX(),player.getY());
								inGameingIndex = 3;	
								playerWLAttacker.moveSpritePWLA();
								if(indexPWLA==6){zhujueAttack(enemyA);
								if(enemyX.HMAD[0]<=0){
									enemyX.HMAD[0]=0;
									GameTools.currentAction=13;
									indexPWLA=0;
								
									break;

⌨️ 快捷键说明

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