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 + -
显示快捷键?