📄 j2me的rpg游戏核心代码.txt
字号:
{
}
}
//读取进度
void rr()
{
ld=null;
ld=new Loading(0);
loading=new Thread(ld);
loading.start();
MG.show(ld);//显示Loading界面。
gmenu=null;
}
public void keyPressed(int keyCode)
{
int act=getGameAction(keyCode);
switch(act)
{
case UP:
if(i>0)
{
i--;
if(!showS&&i==1)
i=0;
}
else
i=5;
repaint();
break;
case DOWN:
if(i<5)
{
i++;
if(!showS&&i==1)
i=2;
}
else
i=0;
repaint();
break;
default:
break;
}
}
public void paint(Graphics g)
{
g.setColor(0,0,0);
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(gmenu,0,0,0);
g.setColor(0x0000ff);
g.fillRect(getWidth()/2-55,25,75,120);
g.setColor(0xffffff);
g.drawRect(getWidth()/2-55,25,75,120);
if(i==0)
g.setColor(0xffffff);
else
g.setColor(0);
g.drawString("开始游戏",getWidth()/2-50,30,0);
if(showS)
{
if(i==1)
g.setColor(0xffffff);
else
g.setColor(0);
g.drawString("读取存档",getWidth()/2-50,48,0);
}
else
{
g.setColor(134,134,134);
g.drawString("读取存档",getWidth()/2-50,48,0);
}
if(i==2)
g.setColor(0xffffff);
else
g.setColor(0);
g.drawString("帮助信息",getWidth()/2-50,66,0);
if(i==3)
g.setColor(0xffffff);
else
g.setColor(0);
g.drawString("关于游戏",getWidth()/2-50,84,0);
if(i==4)
g.setColor(0xffffff);
else
g.setColor(0);
if(playOn)
g.drawString("关闭音效",getWidth()/2-50,102,0);
else
g.drawString("打开音效",getWidth()/2-50,102,0);
if(i==5)
g.setColor(0xffffff);
else
g.setColor(0);
g.drawString("退出游戏",getWidth()/2-50,120,0);
}
public void commandAction(Command c,Displayable dis)
{
if(c==start)
{
switch(i)
{
case 0:
load();//开始新游戏
break;
case 1:
SA s=new SA();
if(s.tO())
rr();//读取进度
break;
case 2:
if(mg.t==null)
{
mg.back2=new Command("",Command.BACK,0);
mg.back1=new Command("返回",Command.SCREEN,0);
mg.t=new Form("帮助");
mg.t.append("游戏背景:");
mg.t.append("为完成父亲的遗愿,李景鸿决定前往蓬莱仙岛寻找徐敬业与骆宾王的遗孀,辅助完成复国大业。但一路上困难重重,李景鸿能否顺利到达蓬莱仙岛呢?又能否完成父亲的遗愿呢?");
mg.t.append(" ");
mg.t.append("操作方法:");
mg.t.append("游戏中用方向键和2、4、6、8键控制主角移动以及进行菜单选择,5键或OK键选定, 3键调出/关闭属性菜单,左软键调出操作菜单,可查看帮助信息,保存游戏或回到主菜单。");
mg.t.append(" ");
mg.t.append("关键提示:");
mg.t.append("玩家每次升级将得到一点技能属性用来学习技能,每项技能所能修炼的最高等级受主角等级限制,技能等级越高,效果越显著。使用“召狼”等技能时,召唤出的宠物将被优先攻击。使用技能会消耗主角的“气力”,“回气”技能将耗费一定数量的金钱。主角战死会损失一定比例的经验及金钱。");
mg.t.append("在战斗过程中菜单选项将不会响应。");
mg.t.append(" ");
mg.t.append("招式详解:");
mg.t.append("火球:用内力聚成一个火球,对单个敌人造成极大伤害");
mg.t.append("落星:在天空中形成流星般的巨石,砸向全部敌人");
mg.t.append("风残:耗费自身的血和气来形成一股飓风,对全部敌人造成较大伤害");
mg.t.append("召狼:召唤精灵狼来辅助战斗,生命力较弱但攻击力很强");
mg.t.append("召熊:召唤精灵熊来辅助战斗,攻击力很弱但生命力较强,可以用作战斗中的护盾");
mg.t.append("召龙:召唤神龙来辅助战斗,可以反弹敌人部分攻击并反伤敌人");
mg.t.append("隐身:在数回合内主角将不受攻击,但使用附身或攻击敌人则会失效");
mg.t.append("遁走:从战斗中直接逃走,技能等级高则逃走成功率大");
mg.t.append("附身:召唤影子与主角并肩作战,使主角生命力和攻击力按比例上升");
mg.t.append("回血:恢复主角一定比例的生命力");
mg.t.append("回气:恢复主角一定比例的气力,但要耗费一定量的金钱");
mg.t.append("攻击:使用普通攻击对敌单体造成伤害");
mg.t.addCommand(mg.back2);
mg.t.addCommand(mg.back1);
mg.t.setCommandListener(mg);
mg.show(mg.t);
MG.showHelp=true;
}
break;
case 3://关于游戏
if(mg.t==null)
{
mg.back2=new Command("",Command.BACK,0);
mg.back1=new Command("返回",Command.SCREEN,0);
mg.t=new Form("关于游戏");
mg.t.addCommand(mg.back2);
mg.t.addCommand(mg.back1);
mg.t.setCommandListener(mg);
mg.show(mg.t);
MG.showHelp=true;
}
case 4://音效设置
playOn=!playOn;
repaint();
break;
case 5:
mg.exit();//退出游戏
break;
default:
break;
}
}
}
}
--------------------------------------------------------------------------------
回复:
/*五键或左软键的功能*/
public void FIRE()
{
if(gameMenu)
{
if(i==4)
{
gameMenu=!gameMenu;
repaint();
}
else
if(i==3)//返回主菜单
{
if(GM.playOn)
bgThread.go();
//playsound.cancel();
//myplayer.close();
//myplayer=null;
gameMenu=false;
screen=null;
MG.showGame=false;
GM.cI();
MG.show(MG.gm);
}
else
if(i==0)//帮助
{
if(GM.mg.t==null)
{
GM.mg.back1=new Command("",Command.BACK,0);
GM.mg.back2=new Command("返回",Command.SCREEN,0);
GM.mg.t=new Form("帮助");
GM.mg.t.append("游戏背景:");
GM.mg.t.append("为完成父亲的遗愿,李景鸿决定前往蓬莱仙岛寻找徐敬业与骆宾王的遗孀,辅助完成复国大业。但一路上困难重重,李景鸿能否顺利到达蓬莱仙岛呢?又能否完成父亲的遗愿呢?");
GM.mg.t.append(" ");
GM.mg.t.append("操作方法:");
GM.mg.t.append("游戏中用方向键和2、4、6、8键控制主角移动以及进行菜单选择,5键或OK键选定, 3键调出/关闭属性菜单,左软键调出操作菜单,可查看帮助信息,保存游戏或回到主菜单。");
GM.mg.t.append(" ");
GM.mg.t.append("关键提示:");
GM.mg.t.append("玩家每次升级将得到一点技能属性用来学习技能,每项技能所能修炼的最高等级受主角等级限制,技能等级越高,效果越显著。使用“召狼”等技能时,召唤出的宠物将被优先攻击。使用技能会消耗主角的“气力”,“回气”技能将耗费一定数量的金钱。主角战死会损失一定比例的经验及金钱。");
GM.mg.t.append("在战斗过程中菜单选项将不会响应。");
GM.mg.t.append(" ");
GM.mg.t.append("招式详解:");
GM.mg.t.append("火球:用内力聚成一个火球,对单个敌人造成极大伤害");
GM.mg.t.append("落星:在天空中形成流星般的巨石,砸向全部敌人");
GM.mg.t.append("风残:耗费自身的血和气来形成一股飓风,对全部敌人造成较大伤害");
GM.mg.t.append("召狼:召唤精灵狼来辅助战斗,生命力较弱但攻击力很强");
GM.mg.t.append("召熊:召唤精灵熊来辅助战斗,攻击力很弱但生命力较强,可以用作战斗中的护盾");
GM.mg.t.append("召龙:召唤神龙来辅助战斗,可以反弹敌人部分攻击并反伤敌人");
GM.mg.t.append("隐身:在数回合内主角将不受攻击,但使用附身或攻击敌人则会失效");
GM.mg.t.append("遁走:从战斗中直接逃走,技能等级高则逃走成功率大");
GM.mg.t.append("附身:召唤影子与主角并肩作战,使主角生命力和攻击力按比例上升");
GM.mg.t.append("回血:恢复主角一定比例的生命力");
GM.mg.t.append("回气:恢复主角一定比例的气力,但要耗费一定量的金钱");
GM.mg.t.append("攻击:使用普通攻击对敌单体造成伤害");
GM.mg.t.addCommand(GM.mg.back1);
GM.mg.t.addCommand(GM.mg.back2);
GM.mg.t.setCommandListener(GM.mg);
GM.mg.show(GM.mg.t);
MG.showHelp=true;
}
}
else
if(i==2)//音效处理
{
GM.playOn=!GM.playOn;
bgThread.go();
gameMenu=false;
repaint();
}
else//保存游戏
{
SA s=new SA();
s.s();
s=null;
gameMenu=false;
repaint();
}
}
else
if(pm)
{
if(i==1&&sp>0&&s[j]<10)//升级技能
{
if(s[j]==0||le>=3*s[j])
{
if(j==9||j==10||j==7)
{
if(s[j]<5)
{
s[j]++;
sp--;
}
}
else
{
s[j]++;
sp--;
}
}
repaint(0,0,160,128);
}
else
if(i==3)//选择装备
{
if(weapon[j]!=9)
{
curweapon=weapon[j];
addMd=0;
addPd=0;
addPdP=0;
switch(curweapon)
{
case 0:
addPd=5;
stealB=10;
break;
case 1:
addPd=10;
stealB=25;
break;
case 2:
addPd=15;
stealB=45;
break;
case 3:
addMd=10;
break;
case 4:
addMd=20;
break;
case 5:
addMd=30;
break;
case 6:
addPdP=15;
break;
case 7:
addPdP=25;
break;
case 8:
addPdP=35;
break;
default:
break;
}
i=0;
D=d+addPd+addPdP*d/100;
if(atm)
spi[0].d=D;
repaint(0,0,160,128);
}
}
}
else
if(tm)
{
if(sl!=i)
{
if(sl!=0)
{
if(gold>=100)
{
gold-=100;
cm(i);
}
else
{
tip="银两不够";
tm=false;
repaint();
}
}
else
cm(i);
}
else
{
tm=false;
repaint();
}
}
else
if(am)
{
if((i<11&&s[i]>0)||i==11)
sat(i);
}
else
if(tip!=null)
{
tip=null;
dlgm=null;
dlgpic=null;
removeCommand(con);
repaint();
}
else
if(me)//对话控制
{
if(curnpc<2)
{
if(sn==dlgM.length-1)
{
removeCommand(con);
me=false;
dlg[curnpc]=true;
dlgpic=null;
}
else
{
sn++;
createDlgPic(dlgM[sn],8);
}
repaint();
}
else
switch(curnpc)
{
case 2://长须仙人
if(sn==2)
{
dlg[curnpc]=true;
dlgpic=null;
me=false;
removeCommand(con);
cm(5);
}
else
{
sn++;
createDlgPic(dlgM[sn],8);
repaint();
}
break;
case 3://徐和骆
if(sn==5)
{
gold+=10000;
task2=true;
sn++;
}
else
if(sn==6||sn==7)
{
removeCommand(con);
me=false;
dlg[curnpc]=true;
dlgpic=null;
}
else
{
sn++;
createDlgPic(dlgM[sn],8);
}
repaint();
break;
case 6://船工
if(i==0)
{
if(boat)
{
tip="你已经有船了";
me=false;
}
else
if(gold>=600)
{
gold-=600;
boat=true;
me=false;
tip="买卖成功";
}
else
{
tip="银两不够";
me=false;
}
}
else
{
me=false;
dlgpic=null;
removeCommand(con);
}
repaint();
break;
case 5://多九公
switch(sn)
{
case 0:
sn++;
createDlgPic(dlgM[sn],8);
repaint();
break;
case 1:
if(i==0)
{
sn++;
createDlgPic(dlgM[sn],8);
i=0;
}
else
if(i==1)
{
task=true;
sn=3;
createDlgPic(dlgM[sn],8);
}
else
{
me=false;
dlgpic=null;
removeCommand(con);
}
repaint();
break;
case 2:
if(i==0)
{
if(gold>=10000)
{
gold-=10000;
for(int ii=0;ii<11;ii++)
{
while(s[ii]>0)
{
s[ii]--;
sp++;
}
}
me=false;
dlgpic=null;
removeCommand(con);
}
else
{
tip="银两不够";
me=false;
}
}
else
{
me=false;
dlgpic=null;
}
repaint();
break;
case 3:
{
me=false;
dlgpic=null;
}
repaint();
default:
break;
}
break;
case 4://竞技官
if(i==0)
{
if(gold>=350)
{
gold-=350;
me=false;
dlgpic=null;
removeCommand(con);
cm(6);//进入竞技场
killCount=0;
}
else
{
tip="银两不够";
me=false;
}
}
else
{
me=false;
dlgpic=null;
removeCommand(con);
}
repaint();
break;
default:
break;
}
}
else
if(win)//战斗胜利后回到场景
{
addCommand(gmenu);
if(sl!=6)
{
win=false;
removeCommand(con);
repaint();
}
else//如果在竞技场游戏则对打斗场次进行计数,到10次就回到勇士国
{
win=false;
removeCommand(con);
if(killCount==10)
{
gold+=10000;
cm(3);
}
else
repaint();
}
}
else
if(die)//死亡后重生
{
addCommand(gmenu);
removeCommand(con);
die=false;
atm=false;
l=lm;
m=mm;
ex-=(ex-m(le))*20/100;
gold=gold*70/100;
cm(0);
}
if(tip==null&&!me&&!atm&&!pm&&!gameMenu)
addCommand(gmenu);
}
--------------------------------------------------------------------------------
回复:
楼主辛苦了 好不容易才找到的吧
不过,我也严重同意楼上和楼上的楼上的意见
--------------------------------------------------------------------------------
回复:
太无聊了,贴的这么长。
--------------------------------------------------------------------------------
回复:
Mark
--------------------------------------------------------------------------------
回复:
import javax.microedition.rms.*;
import java.lang.String;
import java.io.*;
public class SA
{
RecordStore sa=null;//定义临时数据存储器
byte[] tempdata;//临时存储数据的字节
SA()
{
}
//检测暂存数据库是否打开
public boolean tO()
{
boolean o=false;
try
{
sa=RecordStore.openRecordStore("temp",true);
RecordEnumeration re=sa.enumerateRecords(null,null,false);
if(re.hasNextElement())
o=true;
else
o=false;
close();
}
catch(RecordStoreException rse)
{
}
return(o);
}
//保存暂存数据
public void s()
{
int i;
tempdata=new byte[35];
try
{
tempdata[0]=(byte)(GM.mgc.l>>8&0xff);
tempdata[1]=(byte)(GM.mgc.l&0xff);
tempdata[2]=(byte)(GM.mgc.m>>8&0xff);
tempdata[3]=(byte)(GM.mgc.m&0xff);
tempdata[4]=(byte)(GM.mgc.le);
tempdata[5]=(byte)(GM.mgc.sp);
tempdata[6]=(byte)(GM.mgc.ex>>16&0xff);
tempdata[7]=(byte)(GM.mgc.ex>>8&0xff);
tempdata[8]=(byte)(GM.mgc.ex&0xff);
tempdata[9]=(byte)(GM.mgc.gold>>8&0xff);
tempdata[10]=(byte)(GM.mgc.gold&0xff);
tempdata[11]=(byte)((GM.mgc.task2 4:0)+(GM.mgc.task 2:0)+(GM.mgc.boat 1:0));
tempdata[12]=(byte)(((GM.mgc.dlg[0] 1:0)<<6&0xff)+((GM.mgc.dlg[1] 1:0)<<5&0xff)
+((GM.mgc.dlg[2] 1:0)<<4&0xff)+((GM.mgc.dlg[3] 1:0)<<3&0xff)+((GM.mgc.dlg[4] 1:0)<<2&0xff)
+((GM.mgc.dlg[5] 1:0)<<1&0xff)+((GM.mgc.dlg[6] 1:0)&0xff));
for(i=0;i<11;i++)
tempdata[13+i]=(byte)(GM.mgc.s[i]);
for(i=0;i<5;i++)
tempdata[24+i]=(byte)(GM.mgc.tn[i]);
for(i=0;i<6;i++)
tempdata[29+i]=(byte)(GM.mgc.weapon[i]);
if(tO())
{
d();
sa=RecordStore.openRecordStore("temp",true);
sa.addRecord(tempdata,0,tempdata.length);
close();
}
else
{
sa=RecordStore.openRecordStore("temp",true);
sa.addRecord(tempdata,0,tempdata.length);
close();
}
tempdata=null;
}
catch(java.lang.NullPointerException npe)
{
}
catch(javax.microedition.rms.RecordStoreException rec)
{
}
}
//读入暂存数据
public void r()
{
int i;
try
{
sa=RecordStore.openRecordStore("temp",true);
tempdata=new byte[35];
RecordEnumeration re=sa.enumerateRecords(null,null,false);
int nx=re.nextRecordId();
tempdata=sa.getRecord(nx);
GM.mgc.l=(tempdata[0]<<8&0xff00)+(tempdata[1]&0xff);
GM.mgc.m=(tempdata[2]<<8&0xff00)+(tempdata[3]&0xff);
GM.mgc.le=tempdata[4]&0xff;
GM.mgc.sp=tempdata[5]&0xff;
GM.mgc.ex=(tempdata[6]<<16&0xff0000)+(tempdata[7]<<8&0xff00)+(tempdata[8]&0xff);
GM.mgc.gold=(tempdata[9]<<8&0xff00)+(tempdata[10]&0xff);
GM.mgc.task2=(tempdata[11]>>2&0x00000001)==1 true:false;
GM.mgc.task=(tempdata[11]>>1&0x00000001)==1 true:false;
GM.mgc.boat=(tempdata[11]&0x00000001)==1 true:false;
for(i=0;i<7;i++)
GM.mgc.dlg[i]=(tempdata[12]>>(6-i)&0x00000001)==1 true:false;
for(i=0;i<11;i++)
GM.mgc.s[i]=tempdata[13+i]&0xff;
for(i=0;i<5;i++)
GM.mgc.tn[i]=tempdata[24+i]&0xff;
for(i=0;i<6;i++)
GM.mgc.weapon[i]=tempdata[29+i];
tempdata=null;
close();
}
catch(RecordStoreException rse)
{
}
}
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -