?? j2me的rpg游戲核心代碼.txt
字號(hào):
{
}
}
//讀取進(jìn)度
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("開(kāi)始游戲",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("關(guān)于游戲",getWidth()/2-50,84,0);
if(i==4)
g.setColor(0xffffff);
else
g.setColor(0);
if(playOn)
g.drawString("關(guān)閉音效",getWidth()/2-50,102,0);
else
g.drawString("打開(kāi)音效",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();//開(kāi)始新游戲
break;
case 1:
SA s=new SA();
if(s.tO())
rr();//讀取進(jìn)度
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("為完成父親的遺愿,李景鴻決定前往蓬萊仙島尋找徐敬業(yè)與駱賓王的遺孀,輔助完成復(fù)國(guó)大業(yè)。但一路上困難重重,李景鴻能否順利到達(dá)蓬萊仙島呢?又能否完成父親的遺愿呢?");
mg.t.append(" ");
mg.t.append("操作方法:");
mg.t.append("游戲中用方向鍵和2、4、6、8鍵控制主角移動(dòng)以及進(jìn)行菜單選擇,5鍵或OK鍵選定, 3鍵調(diào)出/關(guān)閉屬性菜單,左軟鍵調(diào)出操作菜單,可查看幫助信息,保存游戲或回到主菜單。");
mg.t.append(" ");
mg.t.append("關(guān)鍵提示:");
mg.t.append("玩家每次升級(jí)將得到一點(diǎn)技能屬性用來(lái)學(xué)習(xí)技能,每項(xiàng)技能所能修煉的最高等級(jí)受主角等級(jí)限制,技能等級(jí)越高,效果越顯著。使用“召狼”等技能時(shí),召喚出的寵物將被優(yōu)先攻擊。使用技能會(huì)消耗主角的“氣力”,“回氣”技能將耗費(fèi)一定數(shù)量的金錢。主角戰(zhàn)死會(huì)損失一定比例的經(jīng)驗(yàn)及金錢。");
mg.t.append("在戰(zhàn)斗過(guò)程中菜單選項(xiàng)將不會(huì)響應(yīng)。");
mg.t.append(" ");
mg.t.append("招式詳解:");
mg.t.append("火球:用內(nèi)力聚成一個(gè)火球,對(duì)單個(gè)敵人造成極大傷害");
mg.t.append("落星:在天空中形成流星般的巨石,砸向全部敵人");
mg.t.append("風(fēng)殘:耗費(fèi)自身的血和氣來(lái)形成一股颶風(fēng),對(duì)全部敵人造成較大傷害");
mg.t.append("召狼:召喚精靈狼來(lái)輔助戰(zhàn)斗,生命力較弱但攻擊力很強(qiáng)");
mg.t.append("召熊:召喚精靈熊來(lái)輔助戰(zhàn)斗,攻擊力很弱但生命力較強(qiáng),可以用作戰(zhàn)斗中的護(hù)盾");
mg.t.append("召龍:召喚神龍來(lái)輔助戰(zhàn)斗,可以反彈敵人部分攻擊并反傷敵人");
mg.t.append("隱身:在數(shù)回合內(nèi)主角將不受攻擊,但使用附身或攻擊敵人則會(huì)失效");
mg.t.append("遁走:從戰(zhàn)斗中直接逃走,技能等級(jí)高則逃走成功率大");
mg.t.append("附身:召喚影子與主角并肩作戰(zhàn),使主角生命力和攻擊力按比例上升");
mg.t.append("回血:恢復(fù)主角一定比例的生命力");
mg.t.append("回氣:恢復(fù)主角一定比例的氣力,但要耗費(fèi)一定量的金錢");
mg.t.append("攻擊:使用普通攻擊對(duì)敵單體造成傷害");
mg.t.addCommand(mg.back2);
mg.t.addCommand(mg.back1);
mg.t.setCommandListener(mg);
mg.show(mg.t);
MG.showHelp=true;
}
break;
case 3://關(guān)于游戲
if(mg.t==null)
{
mg.back2=new Command("",Command.BACK,0);
mg.back1=new Command("返回",Command.SCREEN,0);
mg.t=new Form("關(guān)于游戲");
mg.t.addCommand(mg.back2);
mg.t.addCommand(mg.back1);
mg.t.setCommandListener(mg);
mg.show(mg.t);
MG.showHelp=true;
}
case 4://音效設(shè)置
playOn=!playOn;
repaint();
break;
case 5:
mg.exit();//退出游戲
break;
default:
break;
}
}
}
}
--------------------------------------------------------------------------------
回復(fù):
/*五鍵或左軟鍵的功能*/
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("為完成父親的遺愿,李景鴻決定前往蓬萊仙島尋找徐敬業(yè)與駱賓王的遺孀,輔助完成復(fù)國(guó)大業(yè)。但一路上困難重重,李景鴻能否順利到達(dá)蓬萊仙島呢?又能否完成父親的遺愿呢?");
GM.mg.t.append(" ");
GM.mg.t.append("操作方法:");
GM.mg.t.append("游戲中用方向鍵和2、4、6、8鍵控制主角移動(dòng)以及進(jìn)行菜單選擇,5鍵或OK鍵選定, 3鍵調(diào)出/關(guān)閉屬性菜單,左軟鍵調(diào)出操作菜單,可查看幫助信息,保存游戲或回到主菜單。");
GM.mg.t.append(" ");
GM.mg.t.append("關(guān)鍵提示:");
GM.mg.t.append("玩家每次升級(jí)將得到一點(diǎn)技能屬性用來(lái)學(xué)習(xí)技能,每項(xiàng)技能所能修煉的最高等級(jí)受主角等級(jí)限制,技能等級(jí)越高,效果越顯著。使用“召狼”等技能時(shí),召喚出的寵物將被優(yōu)先攻擊。使用技能會(huì)消耗主角的“氣力”,“回氣”技能將耗費(fèi)一定數(shù)量的金錢。主角戰(zhàn)死會(huì)損失一定比例的經(jīng)驗(yàn)及金錢。");
GM.mg.t.append("在戰(zhàn)斗過(guò)程中菜單選項(xiàng)將不會(huì)響應(yīng)。");
GM.mg.t.append(" ");
GM.mg.t.append("招式詳解:");
GM.mg.t.append("火球:用內(nèi)力聚成一個(gè)火球,對(duì)單個(gè)敵人造成極大傷害");
GM.mg.t.append("落星:在天空中形成流星般的巨石,砸向全部敵人");
GM.mg.t.append("風(fēng)殘:耗費(fèi)自身的血和氣來(lái)形成一股颶風(fēng),對(duì)全部敵人造成較大傷害");
GM.mg.t.append("召狼:召喚精靈狼來(lái)輔助戰(zhàn)斗,生命力較弱但攻擊力很強(qiáng)");
GM.mg.t.append("召熊:召喚精靈熊來(lái)輔助戰(zhàn)斗,攻擊力很弱但生命力較強(qiáng),可以用作戰(zhàn)斗中的護(hù)盾");
GM.mg.t.append("召龍:召喚神龍來(lái)輔助戰(zhàn)斗,可以反彈敵人部分攻擊并反傷敵人");
GM.mg.t.append("隱身:在數(shù)回合內(nèi)主角將不受攻擊,但使用附身或攻擊敵人則會(huì)失效");
GM.mg.t.append("遁走:從戰(zhàn)斗中直接逃走,技能等級(jí)高則逃走成功率大");
GM.mg.t.append("附身:召喚影子與主角并肩作戰(zhàn),使主角生命力和攻擊力按比例上升");
GM.mg.t.append("回血:恢復(fù)主角一定比例的生命力");
GM.mg.t.append("回氣:恢復(fù)主角一定比例的氣力,但要耗費(fèi)一定量的金錢");
GM.mg.t.append("攻擊:使用普通攻擊對(duì)敵單體造成傷害");
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)//升級(jí)技能
{
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)//對(duì)話控制
{
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://長(zhǎng)須仙人
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="你已經(jīng)有船了";
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://競(jìng)技官
if(i==0)
{
if(gold>=350)
{
gold-=350;
me=false;
dlgpic=null;
removeCommand(con);
cm(6);//進(jìn)入競(jìng)技場(chǎng)
killCount=0;
}
else
{
tip="銀兩不夠";
me=false;
}
}
else
{
me=false;
dlgpic=null;
removeCommand(con);
}
repaint();
break;
default:
break;
}
}
else
if(win)//戰(zhàn)斗勝利后回到場(chǎng)景
{
addCommand(gmenu);
if(sl!=6)
{
win=false;
removeCommand(con);
repaint();
}
else//如果在競(jìng)技場(chǎng)游戲則對(duì)打斗場(chǎng)次進(jìn)行計(jì)數(shù),到10次就回到勇士國(guó)
{
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);
}
--------------------------------------------------------------------------------
回復(fù):
樓主辛苦了 好不容易才找到的吧
不過(guò),我也嚴(yán)重同意樓上和樓上的樓上的意見(jiàn)
--------------------------------------------------------------------------------
回復(fù):
太無(wú)聊了,貼的這么長(zhǎng)。
--------------------------------------------------------------------------------
回復(fù):
Mark
--------------------------------------------------------------------------------
回復(fù):
import javax.microedition.rms.*;
import java.lang.String;
import java.io.*;
public class SA
{
RecordStore sa=null;//定義臨時(shí)數(shù)據(jù)存儲(chǔ)器
byte[] tempdata;//臨時(shí)存儲(chǔ)數(shù)據(jù)的字節(jié)
SA()
{
}
//檢測(cè)暫存數(shù)據(jù)庫(kù)是否打開(kāi)
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);
}
//保存暫存數(shù)據(jù)
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)
{
}
}
//讀入暫存數(shù)據(jù)
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)
{
}
}
//
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -