📄 castlecanvas.java
字号:
g.setClip(0,170,140,50);
g.drawString("请选择要删除的存档。",10,179,imgLT);
}
}
private void drawNewStart(Graphics g)
{
g.setClip(0,0,screenWidth,screenHeight);
g.drawImage(newGame,0,0,imgLT);
drawFire(g,(short)18,(short)8,(byte)127);
}
private void drawGameMain(Graphics g)
{
map.paint(g);
}
private void drawEnemy(Graphics g)
{
Enumeration v = enemy.elements();
while(v.hasMoreElements())
{
Enemy em = (Enemy)(v.nextElement());
em.paint(g);
}
}
private void drawRole(Graphics g)
{
soma.paint(g);
}
private void drawAlphaBlack(Graphics g,Image img)//当主角死亡使屏幕渐渐变黑
{
if(soma.isDead())
{
int w = img.getWidth();
int h = img.getHeight();
int[] color = new int[w*h];
img.getRGB(color,0,w,0,0,w,h);
for(int i=0;i<color.length;i++)
{
int r = color[i] >> 16 & 255;//0x0000rr
int gg = color[i] >> 8 & 255; //0x00rrgg
int b = color[i] & 255; //0xrrggbb
color[i] = alpha<<24 | r<<16 | gg<<8 | b;
}
alpha += 5;
if(alpha>=248)
{
alpha = 255;
gameState = GAME_OVER;
}
g.setClip(0,0,w,h);
g.drawRGB(color,0,w,0,0,w,h,true);
}
}
private void drawGameOver(Graphics g)
{
g.setClip(0,0,dead.getWidth(),dead.getHeight());
g.drawImage(dead,0,0,imgLT);
}
/***************paint();绘制屏幕图像*************/
public void paint(Graphics g)
{
drawClearScreen(g,0xFFffffff);
switch(gameState)
{
case GAME_OVER:
drawGameOver(g);
break;
case GAME_COM_LOGO:
loadImg = null;
drawAlphaLogo(g,gameLogo,GAME_LOGO);
break;
case GAME_LOGO:
gameLogo = null;
drawAlphaLogo(g,konamiLogo,GAME_MENU);//GAME_MENU_EFFECT TODO
break;
case GAME_MENU_EFFECT:
drawMenuEffect(g);
break;
case GAME_MENU:
konamiLogo = null;
drawMenu(g);
break;
case GAME_ANIMATION:
break;
case GAME_MENU_SELECT:
drawMenuSelect(g);
break;
case GAME_SELECT_DATA:
drawMenuSelectData(g);
break;
case GAME_COPY_DATA:
drawMenuCopyData(g);
break;
case GAME_DELETE_DATA:
drawMenuDeleteData(g);
break;
case GAME_WAIT_OTHER:
break;
case GAME_NEW_START:
drawNewStart(g);
break;
case GAME_SAVE_LOAD:
break;
case GAME_MAIN:
drawGameMain(g);
drawEnemy(g);
drawRole(g);
drawAlphaBlack(g,dead);
break;
case GAME_MAP:
break;
case GAME_ROLE_STATE:
sFace.paint(g);
break;
case GAME_GAIN_FETCH:
break;
case GUT_ONE:
break;
case GAME_SCENE_ONE:
break;
case GAME_LOADING:
if(drawLoading(g))
gameState = GAME_COM_LOGO; //切换到第一个LOGO
break;
case GAME_CONECT:
drawMenuSelectData(g);
break;
}
}
/*用1.0键缓冲处理菜单****************/
public void keyPressed(int key_code)
{
int key = getGameAction(key_code);
switch(gameState)
{
case GAME_COM_LOGO:
if(key!=0)
{
alphaLogo = false;
gameState = GAME_LOGO;
gameLogo = null;
}
break;
case GAME_LOGO:
if(key!=0)
{
gameState = GAME_MENU;//GAME_MENU_EFFECT TODO
konamiLogo = null;
}
break;
case GAME_MENU_EFFECT:
if(key!=0)
{
gameState = GAME_MENU;
}
break;
case GAME_MENU:
if(key==UP)
{
menuIndex--;
if(menuIndex<0)
menuIndex=2;
}
else if(key==DOWN)
{
menuIndex++;
if(menuIndex>2)
menuIndex=0;
}
else if(key==FIRE)
{
switch(menuIndex)
{
case 0:
gameSelect = 0;
gameState = GAME_MENU_SELECT;
break;
case 1:
gameSelect = 0;
gameState = GAME_CONECT;
break;
case 2:
CastlevaniaMIDlet.quitApp();
break;
}
}
break;
case GAME_ANIMATION:
break;
case GAME_MENU_SELECT: //选择、复制、删除界面
if(key==UP)
{
gameSelect--;
if(gameSelect<0)
{
gameSelect = 2;
}
}
else if(key==DOWN)
{
gameSelect++;
if(gameSelect>2)
{
gameSelect = 0;
}
}
else if(key==FIRE || key_code == -6)
{
if(gameSelect == 0)
{
gameSelect = 0;
gameState = GAME_SELECT_DATA;
}
else if(gameSelect == 1)
{
gameSelect = 0;
selectRight();
gameState = GAME_COPY_DATA;
}
else if(gameSelect == 2)
{
gameSelect = 0;
gameState = GAME_DELETE_DATA;
}
}
else if(key_code == -7)
{
gameState = GAME_MENU_EFFECT;
}
break;
case GAME_SELECT_DATA: /**选择游戏存档界面***/
if(key==LEFT)
{
gameSelect--;
if(gameSelect<0)
{
gameSelect = 2;
}
}
else if(key==RIGHT)
{
gameSelect++;
if(gameSelect>2)
{
gameSelect = 0;
}
}
else if(key==FIRE)
{
if(rmsExist[gameSelect])
{
/**
* 从存档继续游戏
* */
menuCastle = null;
menuTitle = null;
menuSelect = null;
menuCastle = null;
menuMoon = null;
menuMoonBack = null;
selectData = null;
selectFont = null;
selectGameData = null;
copyData = null;
deleteData = null;
newGame = null;
menuBack = null;
handFlag = null;
System.gc();
gameState = GAME_MAIN;
}
else
{
/**
* 重新开始游戏
* */
gameState = GAME_NEW_START;
}
}
else if(key_code == -7)
{
gameSelect = 0;
gameState = GAME_MENU_SELECT;
}
break;
case GAME_COPY_DATA: //存单复制界面
if(key==LEFT)
{
if(isCopySure)
{
isNot--;
if(isNot<0)
{
isNot = 0;
}
}
else
{
gameSelect--;
if(gameSelect<0)
{
gameSelect = 2;
}
selectLeft();//控制下标不能移动到没有存档的上面
}
}
else if(key==RIGHT)
{
if(isCopySure)
{
isNot++;
if(isNot>1)
{
isNot = 1;
}
}
else
{
gameSelect++;
if(gameSelect>2)
{
gameSelect = 0;
}
selectRight();//控制下标不能移动到没有存档的上面
}
}
else if(key==FIRE)
{
if(!isCopySure)
{
if(isCopy)
{
rmsExist = getRms();
isCopySure = true;
isNot = 1;
}
else
{
copyIndex = gameSelect;
switch(copyIndex)
{
case 0:
rmsExist[0] = false;
rmsExist[1] = true;
rmsExist[2] = true;
break;
case 1:
rmsExist[0] = true;
rmsExist[1] = false;
rmsExist[2] = true;
break;
case 2:
rmsExist[0] = true;
rmsExist[1] = true;
rmsExist[2] = false;
break;
}
isCopy = true;
selectRight();
}
}
else
{//从copyIndex 拷贝到 gameSelect
if(isNot==0) //如果isNot==0,即下标指向YES,开始执行拷贝
{
}
else
{
}
copyIndex = -1;
isCopySure = false;
isCopy = false;
}
}
else if(key_code == -7)
{
if(!isCopySure)
{
if(isCopy)
{
rmsExist = getRms();
gameSelect = copyIndex;
copyIndex = -1;
isNot = 1;
isCopy = false;
}
else
gameState = GAME_MENU_SELECT;
}
gameSelect = 0;
}
break;
case GAME_DELETE_DATA: //删除存档界面
if(key==LEFT)
{
if(!isDelete)
{
gameSelect--;
if(gameSelect<0)
{
gameSelect = maxSelect;
}
}
else
{
isNot--;
if(isNot<0)
isNot = 0;
}
}
else if(key==RIGHT)
{
if(!isDelete)
{
gameSelect++;
if(gameSelect>maxSelect)
{
gameSelect = 0;
}
}
else
{
isNot++;
if(isNot>1)
{
isNot = 1;
}
}
}
else if(key==FIRE || key_code == -6)
{
deleIndex = gameSelect;
if(!isDelete && rmsExist[gameSelect])
{
isDelete = true;
isNot = 1;
maxSelect = 2;
}
else
{
if(isNot == 0)//开始删除
{
rmsExist = getRms();
}
isDelete = false;
}
}
else if(key_code == -7)
{
if(!isDelete)
{
gameState = GAME_MENU_SELECT;
}
else
{
}
gameSelect = 0;
}
break;
case GAME_WAIT_OTHER:
break;
case GAME_NEW_START:
/*
* 按键 游戏 起名界面
* */
if(key==UP)
{
}
else if(key==DOWN)
{
}
else if(key==LEFT)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -