📄 ghostcanvas.java
字号:
switch(p_status){
case 1://显示画面
g.setColor(255,255,255);
g.fillRect(0,0,176,208);
if (congImg!=null){
g.drawImage(congImg, 0,0, 20);
}
break;
}
break;
}
break;
case 3://重新开始
break;
case 4://分数排行
switch(g_status){
case 1://显示列表
g.setColor(176,221,255);
g.fillRect(0,0,176,208);
g.setColor(250,0,0);
g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
if (!svp.isExistRs("point")) {
g.drawString("目前没有排行记录!",176/2,100,Graphics.TOP|Graphics.HCENTER);
} else{
g.drawString("姓名",40,20,20);
g.drawString("得分",100,20,20);
for (i=0;i<svp.plays.length;i++){
g.drawString(svp.plays[i],40,40+i*18,20);
g.drawString(""+svp.points[i],100,40+i*18,20);
}
}
break;
}
break;
case 5://游戏帮助
switch(g_status){
case 1:
g.setColor(176,221,255);
g.fillRect(0,0,176,208);
g.setColor(0,0,0);
g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
for (i=0;i<helpMe.length;i++){
g.drawString(helpMe[i],0,p_status+i*17,Graphics.TOP|Graphics.LEFT);
}
break;
}
break;
}
repaint(0,0,176,208);
serviceRepaints();
}
//按键时执行
int v_GameCode;
int v_keyCode;
protected synchronized void keyPressed(int keyCode) {
v_GameCode = getGameAction(keyCode);
v_keyCode=keyCode;
keyPre=true;
}
/**************************************************
*
*主画布相关函数
*
*************************************************/
void init(){
svp=new svPoint();
}
void exit(){
svp=null;
conti=false;
}
void unInit(){
GhostMIDlet.mainMIDlet.notifyDestroyed();
}
void rmsPointListInit(){
svp.getPointList();
}
/**************************************************
*
* 主菜单相关函数
*
**************************************************/
void menuInit(){
if (menuImg==null){
try{
menuImg=Image.createImage("/res/menu.png");
} catch(Exception e){}
}
for(i=0;i<menuSelPng.length;i++){
try{
menuSelImg[i]=Image.createImage(menuSelPng[i]);
} catch(Exception e){}
}
}
void unMenu(){
menuImg=null;
for(i=0;i<menuSelPng.length;i++){
try{
menuSelImg[i]=null;
} catch(Exception e){}
}
}
/**************************************************
*
* 游戏相关函数
*
**************************************************/
void gameInit(int gate){
TollGate.gameInit(gate);
man=new Man();
man.gameInit();
Monster.gameInit();
prop=new Prop();
}
void unGame(){
TollGate.unGame();
man.unGame();
man=null;
Monster.unGame();
prop=null;
}
void startGate(){
switch(i_status){
case 0:
TollGate.gateInit();
i_status++;
break;
case 1:
man.gateInit();
i_status++;
break;
case 2:
if(panelImg==null){
try{
panelImg=Image.createImage("/res/panel.png");
}catch(Exception e){}
}
i_status++;
break;
case 3:
prop.gateInit();
i_status++;
break;
case 4:
gateTime=TollGate.gateTimes[TollGate.curTollGate]*1000;
i_status++;
break;
case 5:
Monster.gateInit();
i_status++;
break;
case 6:
Ghost.gateInit();
i_status++;
break;
case 7:
svp.saveTollGate(TollGate.curTollGate,Man.point);//保存关卡
i_status++;
break;
case 8:
i_status++;
break;
case 9:
i_status++;
break;
case 10:
System.gc();
i_status++;
break;
}
}
void endGate(){
panelImg=null;
man.gateEnd();
Monster.gateEnd();
TollGate.gateEnd();
Ghost.gateEnd();
prop.gateEnd();
man.catchGhosts=0;
System.gc();
}
private int isEndGate(){
//返回值 0-正常 1-捉到全部鬼 2-被怪物碰到 3-关卡时间到
int r=0;
if (man.catchGhosts==TollGate.ghostNum[TollGate.curTollGate]){
r=1;
} else if(manDead()){
r=2;
} else if(gateTime<0){
r=3;
}
return r;
}
private boolean manDead(){
boolean b=false;
if (man.isCanViolate){
for (i=0;i<mons.size();i++){
Monster ms=(Monster)mons.elementAt(i);
if (ms.monster.collidesWith(man.man,true) && ms.curX==man.curX && ms.curY==man.curY){
b=true;
break;
}
}
}
return b;
}
void drawPanel(Graphics g){
if (Ghost.imgs[man.curGhost]==null){
try{
Ghost.imgs[man.curGhost]=Image.createImage(Ghost.imgPng[man.curGhost]);
}catch(Exception e){}
}
for (i=0;i<Ghost.imgPng.length;i++){
if (i!=man.curGhost){
Ghost.imgs[i]=null;
}
}
g.drawImage(Ghost.imgs[man.curGhost],0,0,20);
g.drawImage(panelImg,30,0,20);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.setColor(255,0,0);
g.drawLine(67, 4, 67, 28);
g.drawLine(145, 4, 145, 28);
g.setColor(255,222,0);
g.drawString(""+Man.point,75,7,20);
g.drawString(""+gateTime/1000,174,7,Graphics.TOP|Graphics.RIGHT);
int t=-1;//显示哪种道具
int n=0;//数量
if(man.isStop){
t=0;
n=man.p_stop;
} else if(man.isReduRate){
t=1;
n=man.p_reduRate;
} else if(man.isSight){
t=2;
n=man.p_sight;
} else if(!man.isCanViolate){
t=3;
n=man.p_violate;
} else if(man.isAddRate){
t=4;
n=man.p_addRate;
} else if(man.isCandle){
t=5;
n=man.p_candle;
}
if (t!=-1){
//g.drawString("道具:",36,9,20);
g.drawImage(Prop.imgs[t],36,1,20);
//g.drawString(n+"次 ",62,9,20);
} else{
//g.drawString("道具:",36,9,20);
//g.drawString("次数: ",93,9,20);
}
}
public void gateImgInit(int gate){
int n1=gate/10;
int n2=gate%10;
if (gateImg==null){
try{
gateImg=Image.createImage("/res/gate.png");
}catch(Exception e){}
}
if (n1>0 && gateNumImg[n1]==null){
try{
gateNumImg[n1]=Image.createImage(gateNumPng[n1]);
}catch(Exception e){}
}
if (gateNumImg[n2]==null){
try{
gateNumImg[n2]=Image.createImage(gateNumPng[n2]);
}catch(Exception e){}
}
}
public void UnGateImg(){
gateImg=null;
for (i=0;i<10;i++){
gateNumImg[i]=null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -