📄 gamecanvas.java
字号:
offG.drawImage(this.pStopim[playerStop[nowFrame]], px, py, 0);
}
break;
case 1: // 跑动
// System.out.println("now Frame" + nowFrame);
offG.setClip(px, py, imgDataPlayer[this.RunMotion[nowFrame]][2],
imgDataPlayer[RunMotion[nowFrame]][3]);
if (!mirro) {
offG.drawImage(person, px
- imgDataPlayer[this.RunMotion[nowFrame]][0], py
- imgDataPlayer[this.RunMotion[nowFrame]][1], 0);
} else {
int tmp = nowFrame;
if (nowFrame == 3)
tmp = 1;
offG.drawImage(this.pRunim[tmp], px, py, 0);
}
break;
case 2: // 死亡
if (menuBK == null) {
try {
this.level_Image = null;
this.imgEnemy = null;
System.gc();
menuBK = Image.createImage("/menuBG.png");
} catch (Exception e) {
}
}
offG.setClip(px, py, imgDataPlayer[playerDead[nowFrame]][2],
imgDataPlayer[playerDead[nowFrame]][3]);
offG.drawImage(person, px - imgDataPlayer[playerDead[nowFrame]][0],
py - imgDataPlayer[playerDead[nowFrame]][1], 0);
// System.out.println("now Frame" + nowFrame);
if (nowFrame > playerDead.length - 2) {
this.gameState = MENU;
dir2 = DIR_DOWN;
index = 0;
this.repaint();
return;
}
break;
case 4: // jump
offG.setClip(px, py, imgDataPlayer[5][2], imgDataPlayer[5][3]);
if (!mirro) {
offG.drawImage(person, px - imgDataPlayer[5][0], py
- imgDataPlayer[5][1], 0);
} else {
offG.drawImage(this.pRunim[3], px, py, 0);
}
break;
case 5: // down
offG.setClip(px, py, imgDataPlayer[6][2], imgDataPlayer[6][3]);
if (!mirro) {
offG.drawImage(person, px - imgDataPlayer[6][0], py
- imgDataPlayer[6][1], 0);
} else {
offG.drawImage(this.pRunim[4], px, py, 0);
}
break;
}
}
public int score;
public void chechScore() {
/*
* for(int i=0;i<mon.size();i++ ) { int tm[]=(int [])mon.elementAt(i);
* tm[0]-=map_CurX; tm[1]-=map_CurY; if((Math.abs (px - tm[0]) <
* 40)&&(Math.abs (py - tm[1]) < 56)) { score+=1; mon.removeElementAt(i ); } }
*/
}
/***************************************************************************
* 初始化每关所有变量
**************************************************************************/
public void initLevel(int n) {
System.out.println("load level " + n);
// if (imgEnemy == null) {
// imgEnemy = new Image[5];
// }
// else {
// for (int i = 0; i < imgEnemy.length; i++) {
// imgEnemy[i] = null;
// }
// }
try {
menuBK = null;
System.gc();
imgEnemy = Image.createImage("/enemy6.png");
} catch (Exception e) {
System.out.println("enemy pic err");
}
short carnum = 0;
//
// switch (n) {
// case 1: // 初始化第一关
// System.gc(); // 释放所有空间提高效率
// map_CurX = 0;
map_CurX = 0;
map_CurY = 0;
initMap(n);
index = 0;
px = 0;
py = 100;
nowFrame = 0;
// frameFlag = nowFrame + 1;
direction = 0;
drawPersonFlag = true;
dir2_Flag = true;
back_X = 0;
back_Y = 0;
lifeState = 1;
life = 9;
//
System.out.println(" row" + enemyData.length);
//
enemy = null;
enemy = new short[enemyData.length][6];
// short carnum=0;
for (int i = 0; i < enemyData.length; i++) {
enemy[i][0] = enemyData[i][0];
enemy[i][1] = enemyData[i][1];
enemy[i][2] = 1;// 1left 2right
enemy[i][3] = 1;// 1 visible 2noVisible
if (enemyData[i][2] == 1) {
enemy[i][4] = carnum++;// nowFrame
} else {
enemy[i][4] = 0;// nowFrame
}
if (i == 0)
enemy[i][5] = 1;
else
enemy[i][5] = 1;// LIFE
}
// initMon(1);
// break;
// case 2: // 初始化第二关
// System.gc(); // 释放所有空间提高效率
// // map_CurX = 0;
// map_CurX = 0;
// map_CurY = 32;
// initMap(2);
// index = 0;
// px = 0;
// k = 100;
// nowFrame = 0;
// dir2=DIR_DOWN;
// // frameFlag = nowFrame + 1;
// direction = 0;
// // drawPersonFlag = true;
// // dir2_Flag = true;
// back_X = 0;
// back_Y = 0;
// lifeState = 1;
// life = 9;
// try{
// imgEnemy[0] = Image.createImage("/enemy2.png");//BOSS \
// imgEnemy[1] = Image.createImage("/enemy5.png");//蝎子 |----------敌人种类
// imgEnemy[2] = Image.createImage("/enemy2.png");//短刀 /
// imgEnemy[3] = Image.createImage("/enemy3.png");
// imgEnemy[4] = Image.createImage("/enemy6.png");
// }catch(Exception e){}
// enemyData = new short[][] {
// //{X坐标,Y坐标,种类,移动长度}
// {500 ,216, 4, 100},
// {1086 ,216, 2, 80 },
// {846 ,216, 2, 80 },
// {658 ,216, 2, 60 },
// {1269 ,216, 2, 140},
// {200 ,216, 3, 100},
// // {400 ,125, 1, 2000},
// // {560 ,125, 1, 2000},
// // {1000 ,125, 1, 2000},
//
// };
//
// // System.out.println(" row"+enemyData.length);
//
// enemy = new short[enemyData.length][6];
//
// for (int i = 0; i < enemyData.length; i++) {
// enemy[i][0] =enemyData[i][0];
// enemy[i][1] =enemyData[i][1];
// enemy[i][2] =1;//1left 2right
// enemy[i][3] =1;//1 visible 2noVisible
//
// if(enemyData[i][2]==1)
// {enemy[i][4] =carnum++;//nowFrame
// }
// else
// {enemy[i][4] =0;//nowFrame
// }
// if(i==0)enemy[i][5] =1;
// else enemy[i][5] =1;//LIFE
//
// }
// break;
// case 3: // 初始化第三关
// System.gc(); // 释放所有空间提高效率
// // map_CurX = 0;
// map_CurX = 0;
// map_CurY = 32;
// initMap(3);
// index = 0;
// px = 0;
// py = 100;
// nowFrame = 0;
// // frameFlag = nowFrame + 1;
// direction = 0;
// // drawPersonFlag = true;
// // dir2_Flag = true;
// dir2=DIR_DOWN;
// back_X = 0;
// back_Y = 0;
// lifeState = 1;
// life = 9;
// try{
// imgEnemy[0] = Image.createImage("/enemy2.png");//BOSS \
// imgEnemy[1] = Image.createImage("/enemy5.png");//蝎子 |----------敌人种类
// imgEnemy[2] = Image.createImage("/enemy2.png");//短刀 /
// imgEnemy[3] = Image.createImage("/enemy3.png");
// imgEnemy[4] = Image.createImage("/enemy6.png");
// }catch(Exception e){}
// enemyData = new short[][] {
// //{X坐标,Y坐标,种类,移动长度}
// {500 ,216, 4, 100},
// {1086 ,216, 2, 80 },
// {846 ,216, 2, 80 },
// {658 ,216, 2, 60 },
// {1269 ,216, 2, 140},
// {200 ,216, 3, 100},
// // {400 ,125, 1, 2000},
// // {560 ,125, 1, 2000},
// // {1000 ,125, 1, 2000},
//
// };
//
// //System.out.println(" row"+enemyData.length);
//
// enemy = new short[enemyData.length][6];
//
// for (int i = 0; i < enemyData.length; i++) {
// enemy[i][0] =enemyData[i][0];
// enemy[i][1] =enemyData[i][1];
// enemy[i][2] =1;//1left 2right
// enemy[i][3] =1;//1 visible 2noVisible
//
// if(enemyData[i][2]==1)
// {enemy[i][4] =carnum++;//nowFrame
// }
// else
// {enemy[i][4] =0;//nowFrame
// }
// if(i==0)enemy[i][5] =1;
// else enemy[i][5] =1;//LIFE
//
// }
// break;
// case 4: // 初始化第四关
// System.gc(); // 释放所有空间提高效率
// // map_CurX = 0;
// map_CurX = 0;
// map_CurY = 32;
// initMap(4);
// index = 0;
// px = 0;
// py = 100;
// nowFrame = 0;
// // frameFlag = nowFrame + 1;
// direction = 0;
// // drawPersonFlag = true;
// // dir2_Flag = true;
// dir2=DIR_DOWN;
// back_X = 0;
// back_Y = 0;
// lifeState = 1;
// life = 9;
// try{
// imgEnemy[0] = Image.createImage("/enemy2.png");//BOSS \
// imgEnemy[1] = Image.createImage("/enemy5.png");//蝎子 |----------敌人种类
// imgEnemy[2] = Image.createImage("/enemy2.png");//短刀 /
// imgEnemy[3] = Image.createImage("/enemy3.png");
// imgEnemy[4] = Image.createImage("/enemy6.png");
// }catch(Exception e){}
// enemyData = new short[][] {
// //{X坐标,Y坐标,种类,移动长度}
// {500 ,216, 4, 100},
// {1086 ,216, 2, 80 },
// {846 ,216, 2, 80 },
// {658 ,216, 2, 60 },
// {1269 ,216, 2, 140},
// {200 ,216, 3, 100},
// // {400 ,125, 1, 2000},
// // {560 ,125, 1, 2000},
// // {1000 ,125, 1, 2000},
//
// };
//
// // System.out.println(" row"+enemyData.length);
//
// enemy = new short[enemyData.length][6];
//
// for (int i = 0; i < enemyData.length; i++) {
// enemy[i][0] =enemyData[i][0];
// enemy[i][1] =enemyData[i][1];
// enemy[i][2] =1;//1left 2right
// enemy[i][3] =1;//1 visible 2noVisible
//
// if(enemyData[i][2]==1)
// {enemy[i][4] =carnum++;//nowFrame
// }
// else
// {enemy[i][4] =0;//nowFrame
// }
// if(i==0)enemy[i][5] =1;
// else enemy[i][5] =1;//LIFE
//
// }
// break;
// }
}
/***************************************************************************
* 处理按键
**************************************************************************/
public void keyPressed(int n) {
System.out.println("nkey" + n);
if (gameState == 5) {
if (n == -22 || n == 22) {
gameState = 1;
}
this.repaint();
return;
}
if (gameState == MENU || gameState == PAUSE) {
if (menuState == 4) {
if (n == 2 || n == -2) {
if (HelpIndex > 0)
HelpIndex--;
this.repaint();
return;
}
if (n == 5 || n == -5) {
if (HelpIndex < 4)
HelpIndex++;
this.repaint();
return;
}
if (n == Canvas.KEY_NUM2 || n == -1 || n == Canvas.KEY_NUM8
|| n == -6)
return;
}
if (menuState == 6
&& (n == Canvas.KEY_NUM2 || n == -1 || n == Canvas.KEY_NUM8 || n == -6)) {
if (aboutIndex == 0)
aboutIndex = 6;
else
aboutIndex = 0;
// System.out.println("index set"+aboutIndex);
this.repaint();
return;
}
if (menuState >= 3) {
if (n == Canvas.KEY_NUM2 || n == -1 || n == 1
&& (menuState != 4 && menuState != 6)) {
nowFramemenu--;
if (nowFramemenu <= 0) {
nowFramemenu = 0;
}
}
if (n == Canvas.KEY_NUM8 || n == -6 || n == 6
&& (menuState != 4 && menuState != 6)) {
nowFramemenu++;
if (nowFramemenu >= 3) {
nowFramemenu = 3;
}
}
if ((n == -21 || n == 21) && (this.menuState != 3)) {
this.menuState = 3;
this.repaint();
return;
}
boolean b1 = (gameState == MENU) && (n == 22 || n == -22)
&& (this.menuState == 3);
boolean b2 = (gameState == PAUSE) && (n == 22 || n == -22)
&& (this.menuState == 3);
if (menuState == 3 && n == Canvas.KEY_NUM5 || (n == -20)
|| (n == 20) || (b1) || (b2)) {
if (nowFramemenu == 0) {
// if(gameStart.midlet.gc==null){
//
// d_logo=null;
// System.gc();
// GameCanvas.ISRUN=true;
// gameStart.midlet.gc=new GameCanvas(gameStart.midlet);
// gameStart.midlet.gc.gameState=GameCanvas.LOAD;
//
// }else
// {
if (gameState == MENU) {
System.gc();
gameState = LOAD;
proess = 0;
} else if (gameState == PAUSE) {
gameState = GAMEING;
}
// }
// gameStart.midlet.d.setCurrent(gameStart.midlet.gc);
}
if (nowFramemenu == 1) {
this.menuState = 4;
}
if (nowFramemenu == 2) {
this.menuState = 6;
}
// if(nowFramemenu==3)
// {
// this.menuState =5;
// }
if (nowFramemenu == 3) {
// if(gameStart.midlet.gc!=null)
// {
// GameCanvas.ISRUN=false;
// gameStart.midlet.gc=null;
// gameStart.midlet.d.setCurrent(gameStart.midlet.mm);
// }
// else
// {
ISRUN = false;
gameStart.midlet.notifyDestroyed();
// }
}
}
this.repaint();
}
return;
}
// if(n==FullCanvas.KEY_SOFTKEY2)
// {
// gs.d.setCurrent(new menuCanvas(1,gs));
// }
else if (n == -21 || n == 21) {
gameState = PAUSE;
this.repaint();
return;
// this.gs.d.setCurrent(gs.mm);
} else if (n == -22 || n == 22) {
gameState = 5;
this.repaint();
return;
} else if (index == 0) {
if (
// (n == Canvas.KEY_NUM4) || (n == -2)||
this.getGameAction(n) == LEFT) { // 按下左键或是4键
drawPersonFlag = false;
direction = DIR_LEFT;
mirro = true;
index = 1;
}
if (
// (n == Canvas.KEY_NUM6) || (n == -5)||
this.getGameAction(n) == RIGHT) { // 按下右键或是6键
index = 1;
mirro = false;
drawPersonFlag = true;
direction = DIR_RIGHT;
}
if ((n == Canvas.KEY_NUM1)) { // 按下1键
index = 1;
mirro = false;
drawPersonFlag = true;
dir3 = 18;
dir2 = DIR_UP;
index = 4;
mirro = true;
}
if ((n == Canvas.KEY_NUM3)) { // 按下3键
nowFrame = 2;
index = 4;
mirro = false;
drawPersonFlag = true;
dir3 = 20;
dir2 = DIR_UP;
}
}
if (index == 0) {
if (
// (n == Canvas.KEY_NUM5) || (n == -20)
this.getGameAction(n) == 8) { // 当按下fire键时
nowFrame = 4;
index = 5;
}
if (
// (n == Canvas.KEY_NUM2) || (n == -1)
this.getGameAction(n) == 1) { // 当按下上键或2键时
upFlag = 14;
dir2 = DIR_UP;
nowFrame = 6;
index = 4;
}
}
}
public void keyReleased(int n) { // 释放按键时都成为站立状态
// if ( (n == Canvas.KEY_NUM4) || (n == -2)) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -