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

📄 fwmaincanvas.java

📁 J2ME 蓝牙对战游戏 大海战简化版 索爱w810
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				break;

			case 1:
				g.drawImage(imgFlightB, fwLog.flightPoint[0].x, fwLog.flightPoint[0].y, fwLog.fPos[0]);	
				break;

			case 2:
				g.drawImage(imgFlightC, fwLog.flightPoint[0].x, fwLog.flightPoint[0].y, fwLog.fPos[0]);	
				break;

			case 3:
				g.drawImage(imgFlightD, fwLog.flightPoint[0].x, fwLog.flightPoint[0].y, fwLog.fPos[0]);	
				break;

			default:
				break;
			}
		}
			break;
			
		case 0:
			return;
			
		default:
			return;
			//System.out.println("there is no flight");
			//break;
		}
	}
	
	public void drawGame(Graphics g)
	{
		mapInit(g);
		drawTarget(g, fm.dot.x, fm.dot.y);
		drawShell(g);
		//g.drawImage(imgShutDown, mapbaseX, mapbaseY, Graphics.TOP|Graphics.LEFT);
		//g.drawImage(imgShutBody, mapbaseX+deltaX, mapbaseY+deltaY, Graphics.TOP|Graphics.LEFT);
	}
	
	public void drawTarget(Graphics g, int x, int y)
	{
		g.setColor(0xaa3300);
		x *= deltaX;
		y = 8 - y;
		y *= deltaY;
		x += mapbaseX;
		y += mapbaseY;
		g.drawArc(x, y, deltaX-1, deltaY-1, 0, 360);
		g.drawArc(x+1, y+1, deltaX-2, deltaY-2, 0, 360);
		g.drawArc(x+deltaX/2-3, y+deltaX/2-3, 6, 6, 0, 360);
		g.drawArc(x+deltaX/2-3, y+deltaX/2-3, 5, 5, 0, 360);
		g.drawLine(x-deltaX/2+3, y+deltaY/2, x+deltaX+deltaX/2-3, y+deltaY/2);
		g.drawLine(x+deltaX/2, y-deltaY/2+3, x+deltaX/2, y+deltaY+deltaY/2-3);
	}
	public void drawShell(Graphics g)
	{
		for( int i = 0; i < 9; i++ )
		{
			for (int j = 0; j < 9; j++)
			{
				int x = i*deltaX+mapbaseX;
				int y = (8-j)*deltaY+mapbaseY;
				switch (fm.intOpMap[i][j])
				{
				case FlightManager.MAP_SHOT_HEAD:
					g.drawImage(imgShutDown, x, y, Graphics.TOP|Graphics.LEFT);
					break;
					
				case FlightManager.MAP_SHOT_BODY:
					g.drawImage(imgShutBody, x, y, Graphics.TOP|Graphics.LEFT);
					break;
					
				case FlightManager.MAP_SHOT_EMPTY:
					g.drawRect(x+3, y+3, deltaX-6, deltaY-6);
					break;

				default:
					break;
				}
			}
		}
	}
	
	public void run()
	{
		Thread currentThread = Thread.currentThread();
		while (currentThread == mainThread)
		{
			startTime = System.currentTimeMillis();
			switch (fm.gameState)
			{
			case FlightManager.GAMESTATE_MENU:
				action();
				break;
				
			case FlightManager.GAMESTATE_CHOISEFIRST:
				fm.ChoiseFirst();
				break;
				
			case FlightManager.GAMESTATE_INIT:
				fm.gameInit();
				break;
				
			case FlightManager.GAMESTATE_INIT_DONE:
				fm.gameInitDone();
				break;
				
			case FlightManager.GAMESTATE_GAMELOOP:
				fm.action();
				break;
				
			case FlightManager.GAMESTATE_REINIT:
				break;
				
			case FlightManager.GAMESTATE_SHOWINFO:
				break;

			default:
				System.out.println("gameState error!");
				break;
			}
			//不要再一个线程的循环里边调用repaint,这会造成不断的刷屏,除非是动画
			//repaint最好在完成一个需要显示的动作之后执行
			//repaint(0,0,width,height);
			//serviceRepaints();
			endTime = System.currentTimeMillis();
			if (endTime - startTime < FRAME_TIME)
			{
				try
				{
					Thread.sleep(FRAME_TIME - endTime+startTime);
				}
				catch (InterruptedException e)
				{
					// TODO 自动生成 catch 块
					e.printStackTrace();
				}
			}
		}
	}
	

	public void stop()
	{
		mainThread=null;
	}
	
	public void start()
	{
		mainThread = new Thread(this);
		mainThread.start();
	}
	
	public void keyPressed(int keyCode)
	{
		//System.out.println("键值为"+keyCode+"GameKeycode是"+getGameAction(keyCode));
		judgeKeyCode(keyCode, getGameAction(keyCode));
	}
	
	public void keyReleased(int keyCode)
	{
		freeKey(keyCode, getGameAction(keyCode));
	}
	
	public void judgeKeyCode(int keyCode, int GameKeyCode)
	{
		switch (GameKeyCode)
		{
		//确定键
		case Canvas.FIRE:
			//System.out.println("OK!");
			if(( (allAction&LPKeyMask.MASK_KEY_OK) == 0 )
					&& ((allAction&LPKeyMask.MASK_KEY_OK_FLAG) == 0 ))
			{
				allAction = LPKeyMask.MASK_KEY_OK | LPKeyMask.MASK_KEY_OK_FLAG;
			}
			break;
			
		case Canvas.UP:
			//System.out.println("UP!");
			if(( (allAction&LPKeyMask.MASK_KEY_UP) == 0 )
					&& ((allAction&LPKeyMask.MASK_KEY_UP_FLAG) == 0 ))
			{
				allAction = LPKeyMask.MASK_KEY_UP | LPKeyMask.MASK_KEY_UP_FLAG;
			}
			break;

		case Canvas.DOWN:
			//System.out.println("DOWN!");
			if(( (allAction & LPKeyMask.MASK_KEY_DOWN) == 0 )
					&& ((allAction & LPKeyMask.MASK_KEY_DOWN_FLAG) == 0 ))
			{
				allAction = LPKeyMask.MASK_KEY_DOWN | LPKeyMask.MASK_KEY_DOWN_FLAG;
			}
			break;

		case Canvas.LEFT:
			//System.out.println("LEFT!");
			if(( (allAction & LPKeyMask.MASK_KEY_LEFT) == 0 )
					&& ((allAction & LPKeyMask.MASK_KEY_LEFT_FLAG) == 0 ))
			{
				allAction = LPKeyMask.MASK_KEY_LEFT | LPKeyMask.MASK_KEY_LEFT_FLAG;
			}
			break;

		case Canvas.RIGHT:
			//System.out.println("RIGHT!");
			if(( (allAction & LPKeyMask.MASK_KEY_RIGHT) == 0 )
					&& ((allAction & LPKeyMask.MASK_KEY_RIGHT_FLAG) == 0 ))
			{
				allAction = LPKeyMask.MASK_KEY_RIGHT | LPKeyMask.MASK_KEY_RIGHT_FLAG;
			}
			break;
			
			
		case Canvas.GAME_C:
			if( ((allAction & LPKeyMask.MASK_KEY_STAR) == 0)
				&& ((allAction & LPKeyMask.MASK_KEY_STAR_FLAG) == 0) )
			{
				allAction = LPKeyMask.MASK_KEY_STAR | LPKeyMask.MASK_KEY_STAR_FLAG;
			}
			break;
			
		case Canvas.GAME_D:
			System.out.println("#");
			if( ((allAction & LPKeyMask.MASK_KEY_POUND) == 0 )
				&& ((allAction & LPKeyMask.MASK_KEY_POUND_FLAG) == 0) )
			{
				allAction = LPKeyMask.MASK_KEY_POUND | LPKeyMask.MASK_KEY_POUND_FLAG;
			}
			break;
			
		default:
			System.out.println("无关按钮!~");
			break;
		}
	}
	
	public void freeKey(int keyCode, int GameKeyCode)
	{
		switch (GameKeyCode)
		{
		case Canvas.FIRE:
			allAction &= ~LPKeyMask.MASK_KEY_OK;
			//System.out.println("here is OK free!"+allAction);
			break;
			
		case Canvas.UP:
			allAction &= ~LPKeyMask.MASK_KEY_UP;
			//System.out.println("here is UP free!"+allAction);
			break;
			
		case Canvas.DOWN:
			allAction &= ~LPKeyMask.MASK_KEY_DOWN;
			//System.out.println("here is DOWN free!"+allAction);
			break;

		case Canvas.LEFT:
			allAction &= ~LPKeyMask.MASK_KEY_LEFT;
			//System.out.println("here is LEFT free!"+allAction);
			break;

		case Canvas.RIGHT:
			allAction &= ~LPKeyMask.MASK_KEY_RIGHT;
			//System.out.println("here is RIGHT free!"+allAction);
			break;
			
		case Canvas.GAME_C://*键
			allAction &= ~LPKeyMask.MASK_KEY_STAR;
			System.out.println("释放*号键");
			break;
			
		case Canvas.GAME_D://#键
			allAction &= ~LPKeyMask.MASK_KEY_POUND;
			System.out.println("释放#号键");
			break;

		default:
			System.out.println("无关按键!~~");
			break;
		}
	}
	public void action()
	{
		if ((allAction & LPKeyMask.MASK_KEY_UP_FLAG) != 0)	//响应上键
		{
			//System.out.println("响应上键");
			allAction &= ~LPKeyMask.MASK_KEY_UP_FLAG;	//清楚响应标志
			if (whichActive != 0)						//处理循环滚动活动选项标志
			{
				--whichActive;
			}
			else
			{
				whichActive = 2;
			}
			drawMenuScreen(bg);
			repaint();
			serviceRepaints();
		}
		else if ((allAction & LPKeyMask.MASK_KEY_DOWN_FLAG) != 0)	//响应下键
		{
			//System.out.println("响应下键");
			allAction &= ~LPKeyMask.MASK_KEY_DOWN_FLAG;	//清楚响应标志
			if (whichActive != 2)						//处理循环滚动活动选项标志
			{
				++whichActive;
			}
			else
			{
				whichActive = 0;
			}
			drawMenuScreen(bg);
			repaint();
			serviceRepaints();
		}
		else if ((allAction & LPKeyMask.MASK_KEY_OK_FLAG) != 0)	//响应确定键
		{
			//System.out.println("响应OK键");
			allAction &= ~LPKeyMask.MASK_KEY_OK_FLAG;	//清楚响应标志
			switch (whichActive)
			{
			case 0:
				//playFWgame();
				System.out.println("这里开始进入游戏——游戏入口");
				this.fm.gameState = FlightManager.GAMESTATE_CHOISEFIRST;
				repaint();
				//fm.beginNewGame();		//主要完成蓝牙连接的建立,以及先后手的决定,gameState进入GAMESTATE_INIT状态
				drawGameInit(bg);			//包括完成地图绘制,以及战斗机的位置显示
				repaint();
				serviceRepaints();
				break;
				
			case 1:
				isShkOn = !isShkOn;			//震动开关
				repaint();
				serviceRepaints();
				break;
				
			case 2:
				isVolOn = !isVolOn;			//声音开关
				repaint();
				serviceRepaints();
				break;

			default:
				System.out.println("关于");
				break;
			}//switch
			repaint();
			serviceRepaints();
		}//else
	}//action()
	
	
	
}


class LPKeyMask
{
	public static final int MASK_KEY_LEFT=0x0001;
	public static final int MASK_KEY_LEFT_FLAG=0x0100;
	public static final int MASK_KEY_RIGHT=0x0002;
	public static final int MASK_KEY_RIGHT_FLAG=0x0200;
	public static final int MASK_KEY_UP=0x0004;
	public static final int MASK_KEY_UP_FLAG=0x0400;
	public static final int MASK_KEY_DOWN=0x0008;
	public static final int MASK_KEY_DOWN_FLAG=0x0800;
	public static final int MASK_KEY_OK=0x0010;
	public static final int MASK_KEY_OK_FLAG=0x1000;
	public static final int MASK_KEY_STAR=0x0020;
	public static final int MASK_KEY_STAR_FLAG=0x2000;
	public static final int MASK_KEY_POUND=0x0040;
	public static final int MASK_KEY_POUND_FLAG=0x4000;
}

⌨️ 快捷键说明

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