📄 fwmaincanvas.java
字号:
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 + -