📄 dogcanvas.java
字号:
{
g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_LARGE));
g.setColor(0xffffff);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x0000ff);
if (attackCount >= 98)
{
g.setColor(0xff0000);
g.drawString("击中次数:" + attackCount + "大满贯啊,牛啦你!",
(getWidth() >> 1) - 100, 5, Graphics.LEFT | Graphics.TOP);
} else
{
g.drawString("击中次数:" + attackCount, (getWidth() >> 1) - 100, 5,
Graphics.LEFT | Graphics.TOP);
}
g.drawString("按任意键返回", (getWidth() >> 1) - 100, 50, Graphics.LEFT
| Graphics.TOP);
}
// 不同界面按键转换
public void keyPressed(int keyCode)
{
// int gameAction = getGameAction(keyCode);
if (isPause)
{
switch (state) {
case STATE_START:
startInput(keyCode);
startSoftInput(keyCode);
break;
case STATE_SETTINGS:
SettingInput(keyCode);
break;
case STATE_HELP:
helpInput(keyCode);
break;
case STATE_INSTRUCTIONS:
helpInput(keyCode);
break;
case STATE_PAUSE:
pauseInput(keyCode);
break;
case STATE_OVER:
overInput(keyCode);
break;
}
}
}
/*
* 支持重复按键事件
*/
public void keyPreated(int keyCode)
{
keyPressed(keyCode);
}
/*
* 1.0中的事件处理 游戏开始输入
*/
public void startInput(int keyCode)
{
if (isPause)
{
switch (keyCode) {
case KEY_NUM2:
if (curMoveY == 55)
{
curMoveY = 165;
} else
{
curMoveY -= 55;
}
break;
case KEY_NUM4:
if (curMoveX == 15)
{
curMoveX = 125;
} else
{
curMoveX -= 55;
}
break;
case KEY_NUM8:
if (curMoveY == 165)
{
curMoveY = 55;
} else
{
curMoveY += 55;
}
break;
case KEY_NUM6:
if (curMoveX == 125)
{
curMoveX = 15;
} else
{
curMoveX += 55;
}
break;
case KEY_NUM5:
isChanged = false;
showNumber();
Collision();
// randPosition();
break;
case KEY_NUM0:
state = STATE_PAUSE;
break;
case KEY_NUM3:
state = STATE_OVER;
isCount = false;
}
}
}
/*
* 2.0中的事件处理.游戏开始输入
*/
public void startSoftInput(int keyCode)
{
int gameAction = getGameAction(keyCode);
if (isPause)
{
switch (gameAction) {
case UP:
if (curMoveY == 55)
{
curMoveY = 165;
} else
{
curMoveY -= 55;
}
break;
case DOWN:
if (curMoveY == 165)
{
curMoveY = 55;
} else
{
curMoveY += 55;
}
break;
case LEFT:
if (curMoveX == 15)
{
curMoveX = 125;
} else
{
curMoveX -= 55;
}
break;
case RIGHT:
if (curMoveX == 125)
{
curMoveX = 15;
} else
{
curMoveX += 55;
}
break;
case FIRE:
isChanged = false;
showNumber();
Collision();
// randPosition();
break;
case GAME_A:
state = STATE_PAUSE;
break;
}
}
}
/*
* 设置界面的输入
*/
public void SettingInput(int keyCode)
{
switch (keyCode) {
case KEY_STAR:
if (isVoice)
{
isVoice = false;
midlet.stopPlayer(player);
} else
{
isVoice = true;
midlet.startPlayer(player, -1);
}
break;
case KEY_POUND:
state = STATE_SPLASH;
break;
case KEY_NUM7:
difficult += 1;
if (difficult >= 3)
{
difficult = 3;
}
break;
case KEY_NUM9:
difficult -= 1;
if (difficult <= 0)
{
difficult = 0;
}
break;
case KEY_NUM1:
isPointer = true;
break;
case KEY_NUM2:
isPointer = false;
break;
}
switch (difficult) {
case 0:
curSpeed = 10;
break;
case 1:
curSpeed = 8;
break;
case 2:
curSpeed = 6;
break;
case 3:
curSpeed = 4;
break;
}
}
/*
* 帮助界面的输入
*/
public void helpInput(int keyCode)
{
if (keyCode == KEY_POUND)
{
state = STATE_SPLASH;
}
}
/*
* 暂停游戏的输入
*/
public void pauseInput(int keyCode)
{
switch (keyCode) {
case KEY_NUM0:
start();
midlet.startPlayer(player, -1);
state = STATE_START;
break;
case KEY_NUM1:
start();
midlet.startPlayer(player, -1);
state = STATE_START;
break;
}
}
/*
* 结束游戏的输入
*/
public void overInput(int keyCode)
{
switch (keyCode) {
default:
state = STATE_SPLASH;
break;
}
}
/*
* 此处实现触摸屏式.
*
* 用hasPointerEvents()来判断是否支持屏幕事件.
*/
protected void pointerPressed(int x, int y)
{
if (isPointer)
{
curPointerX = x;
curPointerY = y;
if ((x >= curPigX && x <= curPigX + 55)
&& (y >= curPigY && y <= curPigY + 55))
{
// System.out.println("hello");
isChanged = false;
showNumber();
Collision();
}
}
// System.out.println(curPigX+","+curPigY);
//
}
/*
* 高事菜单事件处理.
*/
public void commandAction(Command c, Displayable dis)
{
if (c.getLabel().equals("start Game"))
{
state = STATE_START;
isCount = true;
isPause = true;
delMenu();
} else if (c.getLabel().equals("Settings"))
{
state = STATE_SETTINGS;
} else if (c.getLabel().equals("Help"))
{
state = STATE_HELP;
} else if (c.getLabel().equals("Instructions"))
{
state = STATE_INSTRUCTIONS;
} else if (c.getLabel().equals("Exit Game"))
{
midlet.exitGame();
} else if (c.getLabel().equals("Continue"))
{
state = STATE_START;
isCount = true;
isPause = true;
}
}
/*
*
* 游戏线程
*/
public void run()
{
while (isRunning)
{
long beginTime = System.currentTimeMillis();
if (isCount)
{
changedIndex++;
randPosition();
}
repaint();
serviceRepaints();
long endTime = System.currentTimeMillis();
if (endTime - beginTime < FRAME_TIME)
{
try
{
Thread.sleep(FRAME_TIME - (endTime - beginTime));
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// TODO Auto-generated method stub
}
}
/*
* 用图片的方法去显示数字.
*/
public void showNumber()
{
if (attackCount <= 9)
{
sprNumber.setFrame(attackCount);
} else
{
int Integer = attackCount / 10;
int Single = attackCount % 10;
sprIntegerNumber.setVisible(true);
sprIntegerNumber.setFrame(Integer);
sprNumber.setFrame(Single);
}
}
/*
* Pig精灵的随机位置.
*/
public void randPosition()
{
if (changedIndex == curSpeed)
{
isCollision = true;
curPigX = coordinateX[(rand.nextInt() >>> 1) % 3];
curPigY = coordinateY[(rand.nextInt() >>> 1) % 3];
changedIndex = 0;
}
}
/*
* 游戏的碰撞检测
*/
public void Collision()
{
if (sprHammer.collidesWith(sprRole, true) && isCollision
|| (curPointerX >= curPigX && curPointerX <= curPigX + 55)
&& (curPointerY >= curPigY && curPointerY <= curPigY + 55))
{
isDraw = false;
isCollision = false;
attackCount += 1;
if (attackCount >= 98)
{
attackCount = 98;
state = STATE_OVER;
isPause = false;
isCount = false;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -