📄 gamecanvas.java
字号:
break;
}
break;
case Configration.BUYKEY:
switch(b_Stage)
{
case 2:
case 15:
if(!is_DialogedForBuyKey && Message != null)
{
b_DialogIndexForBuyKey++;
DialogForBuyKey();
}
else
{
Message = null;
is_DialogedForBuyKey = false;
CurrentState = Configration.NORMAL;
}
break;
case 5:
switch(keyCode)
{
case Configration.KEY_UP:
case KEY_NUM2:
b_Selected--;
if(b_Selected < 0)
{
b_Selected = 3;
}
break;
case Configration.KEY_DOWN:
case KEY_NUM8:
b_Selected++;
if(b_Selected > 3)
{
b_Selected = 0;
}
break;
case Configration.KEY_OK:
case KEY_NUM5:
switch(b_Selected)
{
case 0:
if(HeroMoney >= 30)
{
HeroMoney -= 30;
YellowKey += 1;
}
break;
case 1:
if(HeroMoney >= 50)
{
HeroMoney -= 50;
BlueKey += 1;
}
break;
case 2:
if(HeroMoney >= 100)
{
HeroMoney -= 100;
RedKey += 1;
}
break;
case 3:
CurrentState = Configration.NORMAL;
b_Selected = 0;
break;
}
break;
}
break;
case 12:
switch(keyCode)
{
case Configration.KEY_UP:
case KEY_NUM2:
b_Selected--;
if(b_Selected < 0)
{
b_Selected = 3;
}
break;
case Configration.KEY_DOWN:
case KEY_NUM8:
b_Selected++;
if(b_Selected > 3)
{
b_Selected = 0;
}
break;
case Configration.KEY_OK:
case KEY_NUM5:
switch(b_Selected)
{
case 0:
if(YellowKey >= 1)
{
YellowKey -= 1;
HeroMoney += 10;
}
break;
case 1:
if(BlueKey >= 1)
{
BlueKey -= 1;
HeroMoney += 30;
}
break;
case 2:
if(RedKey >= 1)
{
RedKey -= 1;
HeroMoney += 70;
}
break;
case 3:
CurrentState = Configration.NORMAL;
b_Selected = 0;
break;
}
break;
}
break;
}
break;
case Configration.BEELZEBUB:
switch(b_Stage)
{
case 16:
if(!is_DialogedForBeelzeBub && Message != null)
{
b_DialogIndexForBeelzeBub++;
DialogForBeelzeBub();
}
else
{
Message = null;
is_DialogedForBeelzeBub = false;
b_DialogIndexForBeelzeBub = 0;
CurrentState = Configration.NORMAL;
}
break;
case 19:
if(!is_DialogedForBeelzeBub && Message != null)
{
b_DialogIndexForBeelzeBub++;
DialogForBeelzeBub();
}
else
{
Message = null;
if(Fight(Configration.Mn[29]) && !BeelzeBubIsDead)
{
setValue();
BeelzeBubIsDead = true;
is_DialogedForBeelzeBub = false;
b_DialogIndexForBeelzeBub = 0;
DialogForBeelzeBub();
}
else
{
CurrentState = Configration.NORMAL;
BeelzeBubIsDead = false;
}
}
break;
}
break;
case Configration.PRINCESS:
if(!is_DialogedForPrincess && Message != null)
{
b_DialogIndexForPrincess++;
DialogForPrincess();
}
else
{
Message = null;
CurrentState = Configration.NORMAL;
}
break;
case Configration.JACK:
if(!is_DialogedForJack && Message != null)
{
b_DialogIndexForJack++;
DialogForJack();
}
else
{
Message = null;
CurrentState = Configration.NORMAL;
}
break;
case Configration.ANGEL:
if(!is_DialogedForAngle && Message != null)
{
b_DialogIndexForAngle++;
DialogForAngle();
}
else
{
Message = null;
CurrentState = Configration.NORMAL;
}
break;
case Configration.ABOUT:
CurrentState = Configration.NORMAL;
break;
case Configration.LUOPAN:
switch(keyCode)
{
case KEY_NUM1:
b_Selected = 0;
CurrentState = Configration.NORMAL;
break;
case Configration.KEY_UP:
case KEY_NUM2:
b_Selected -= 4;
if(b_Selected <= 0)
{
b_Selected += 20;
}
break;
case Configration.KEY_DOWN:
case KEY_NUM8:
b_Selected += 4;
if(b_Selected > 20)
{
b_Selected -= 20;
}
break;
case Configration.KEY_LEFT:
case KEY_NUM4:
b_Selected--;
if(b_Selected <= 0)
{
b_Selected = 20;
}
break;
case Configration.KEY_RIGHT:
case KEY_NUM6:
b_Selected++;
if(b_Selected > 20)
{
b_Selected = 1;
}
break;
case Configration.KEY_OK:
case KEY_NUM5:
if(b_Selected <= maxStage && b_Selected != b_Stage)
{
SaveMap();
if(b_Stage > b_Selected)
{
b_x = b_end[b_Selected * 2];
b_y = b_end[b_Selected * 2 + 1];
}
else
{
b_x = b_star[b_Selected * 2];
b_y = b_star[b_Selected * 2 + 1];
}
b_Stage = b_Selected;
initStage();
CurrentState = Configration.STAGECHANGED;
i_num = 1;
b_Selected = 0;
}
break;
}
break;
}
break;
case Configration.SS_END:
FreeImage();
SS_NOW = Configration.SS_MENU;
LoadImage();
break;
case Configration.SS_ABOUT:
FreeImage();
SS_NOW = Configration.SS_MENU;
LoadImage();
break;
}
}
public void paint(Graphics g)
{
switch(SS_NOW)
{
case Configration.SS_LOGO:
drawLogo(g);
break;
case Configration.SS_TITLE:
drawTitle(g);
break;
case Configration.SS_MENU:
drawMenu(g);
break;
case Configration.SS_INTRO:
drawIntro(g);
break;
case Configration.SS_GAMING:
drawGaming(g);
break;
case Configration.SS_END:
drawEnd(g);
break;
case Configration.SS_ABOUT:
drawAbout(g);
break;
}
}
private void drawMenu(Graphics g)
{
g.setColor(0x000000);
g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
g.drawImage(img_Title, i_lcdCenterX, i_lcdCenterY, Configration.G_BH);
for(byte i = 0; i < Configration.menu.length; i++)
{
if(i == b_Selected)
{
g.drawImage(img_jtr, i_lcdCenterX - 40, i_lcdCenterY + (i + 1) * 20 - 5,
Configration.G_BH);
g.drawImage(img_jtl, i_lcdCenterX + 40, i_lcdCenterY + (i + 1) * 20 - 5,
Configration.G_BH);
g.setColor(0xD733E6);
g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
}
else
{
g.setColor(0xFFFFFF);
g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
}
g.drawString(Configration.menu[i], i_lcdCenterX, i_lcdCenterY + (i + 1) * 20,
Configration.G_BH);
}
}
private void drawTitle(Graphics g)
{
g.setColor(0x000000);
g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
g.drawImage(img_Title, i_lcdCenterX, i_lcdCenterY, Configration.G_BH);
if(i_num % 6 < 3)
{
g.drawImage(img_AnyKey, i_lcdCenterX, i_lcdCenterY + 30, Configration.G_BH);
}
}
private void ExitGame()//结束游戏
{
is_Run = false;
GM.destroyApp(true);
}
// =====================战斗处理=========================
private boolean Fight(Monster m)
{
if(m.MonsterDc >= HeroAc)
{
return false;
}
else
{
if(m.MonsterAc <= HeroDc)
{
HeroExp += m.MonsterExp;
HeroMoney += m.MonsterMoney;
Msg = "战斗胜利!获得经验" + m.MonsterExp + "点,获得" + m.MonsterMoney + "个金币";
i_num = 1;
is_Move = false;
return true;
}
else
{
int j = HeroLp / (m.MonsterAc - HeroDc);
int n = m.MonsterLp / (HeroAc - m.MonsterDc);
if(n >= j)
{
return false;
}
else
{
if(m.MonsterAc - HeroDc > 0)
{
HeroLp -= n * (m.MonsterAc - HeroDc);
}
HeroExp += m.MonsterExp;
HeroMoney += m.MonsterMoney;
Msg = "战斗胜利!获得经验" + m.MonsterExp + "点,获得" + m.MonsterMoney + "个金币";
i_num = 1;
is_Move = false;
return true;
}
}
}
}
private void showInfo(String info, Graphics g)
{
g.setColor(0x000000);
g.fillRect(0, 0, i_lcdWidth, i_lcdHeight);
g.setClip(0, 30, i_lcdWidth, i_lcdHeight - 60);
Font f = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
byte w = (byte)f.charWidth('汉');
byte width = (byte)(i_lcdWidth / w );
byte height = (byte)(info.length() / width);
if(info.length() % width != 0)
{
height++;
}
int index = -1;
byte h = 20;
IntroHeight = height * h;
g.setColor(0xFFFFFF);
for(byte i = 0; i < height; i++)
{
for(byte j = 0; j < width; j++)
{
index++;
if(index < info.length())
g.drawString(info.substring(index, index +1),
3 + j * w, i * h + offestY, Configration.G_TL);
}
}
if(i_num % 6 > 3)
{
g.setClip(i_lcdWidth - 100, i_lcdHeight - 30, 100, 30);
g.drawImage(img_AnyKey, i_lcdWidth - 100, i_lcdHeight - 25, Configration.G_TL);
}
}
private void showMonInfo(Graphics g)
{
g.setColor(0xFF0000);
g.setStrokeStyle(Graphics.DOTTED);
g.drawRect(i_lcdCenterX - 16, i_lcdCenterY -16, 32, 32);
int UserLp = 0;
byte f = mapArray[b_Dy * 11 + b_Dx];
if(f >= -35 && f <= -5)
{
byte index = (byte)(-f - 5);
if(f == -15)
{
UserLp += HeroLp / 4;
}
else if(f == -21)
{
UserLp += HeroLp / 3;
if(b_Stage == 21)
{
index = 31;
}
}
else if(f == -34 && b_Stage == 21)
{
index = 35;
}
else if(f == -22 && b_Stage == 17)
{
index = 32;
}
else if(f == -25 && b_Stage == 20)
{
index = 33;
}
else if(f == -35 && b_Stage == 19)
{
index = 34;
}
Monster m = Configration.Mn[index];
if(m.MonsterDc >= HeroAc)
{
UserLp = -1;
}
else
{
if(m.MonsterAc <= HeroDc)
{
UserLp += 0;
}
else
{
int n = m.MonsterLp / (HeroAc - m.MonsterDc);
UserLp += n * (m.MonsterAc - HeroDc);
}
}
int x = i_lcdCenterX - 52;
int y = i_lcdCenterY - 72;
g.setClip(x, y, 104, 144);
g.setStrokeStyle(Graphics.SOLID);
g.setColor(0x00FFFF);
g.drawRect(x, y, 103, 143);
g.drawString(m.Name, i_lcdCenterX, y + 2, Configration.G_TH);
y += 20;
g.drawLine(x, y, x + 103, y);
y += 2;
x += 3;
g.drawString("生命值:" + m.MonsterLp, x, y, Configration.G_TL);
y += 20;
g.drawString("攻击力:" + m.MonsterAc, x, y, Configration.G_TL);
y += 20;
g.drawString("防御力:" + m.MonsterDc, x, y, Configration.G_TL);
y += 20;
g.drawString("经验值:" + m.MonsterExp, x, y, Configration.G_TL);
y += 20;
g.drawString("金钱:" + m.MonsterMoney, x, y, Configration.G_TL);
y += 20;
if(UserLp < 0)
{
g.drawString("耗血:??????", x, y, Configration.G_TL);
}
else
{
g.drawString("耗血:" + UserLp, x, y, Configration.G_TL);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -