?? j2me的rpg游戲核心代碼.txt
字號:
y-=2;
break;
default:
break;
}
repaint();
x++;
}
ld.wait(100);//0.45秒后載入過程結束
}
catch(java.lang.InterruptedException ie)
{
}
}
running=false;
return;
}
}
public void commandAction(Command c,Displayable s)
{
if(c==skip)
{
if(type!=3)
x=79;
else
x=59;
}
}
}
--------------------------------------------------------------------------------
回復:
public void keyRepeated(int keyCode)
{
int act=getGameAction(keyCode);
if(act==Canvas.UP||act==Canvas.DOWN||act==Canvas.LEFT||act==Canvas.RIGHT)
keyPressed(keyCode);
}
public void keyPressed(int keyCode)
{
if(!change)
{
int act=getGameAction(keyCode);
switch(act)
{
case GAME_B://屬性菜單彈出
if(!win&&!die&&!change&&!me&&!gameMenu&&mo==null)
{
pm=!pm;
if(pm)
removeCommand(gmenu);
else
if(!atm)
addCommand(gmenu);
i=0;
j=0;
if(!atm)
repaint(0,0,160,128);
else
repaint();
}
break;
case UP://上鍵
if(gameMenu)//對游戲菜單的操作
{
i=i-1>=0 i-1:0;
repaint();
}
else
if(!pm&&!tm&&!win&&!die&&!me&&tip==null&&!atm)//人物運動
{
if(mo==null)
{
if(dr/3!=2)
{
dr=6;
repaint();
}
else
stm();
}
}
else
if(pm)//對屬性菜單的操作
{
j=0;
i=i-1>=0 i-1:3;
repaint(0,0,160,128);
}
else
if(tm)//對傳送菜單的操作
{
if(dlg[2])
i=i-1>=0 i-1:5;
else
if(task)
i=i-1>=0 i-1:4;
else
i=i-1>=0 i-1:3;
repaint(0,0,128,128);
}
else
if(am)//對戰斗菜單的操作
{
i=i-4>=0 i-4:i+8;
repaint();
}
else
if(me&&tip==null)//對對話菜單的操作
{
if(curnpc==6||curnpc==4||curnpc==5)
i=i-1>=0 i-1:0;
repaint();
}
break;
case DOWN://下鍵
if(gameMenu)
{
i=i+1<=4 i+1:4;
repaint();
}
else
if(!pm&&!atm&&!tm&&!win&&!die&&!me&&tip==null)
{
if(mo==null)
{
if(dr/3!=1)
{
dr=3;
repaint();
}
else
stm();
}
}
else
if(pm)
{
i=i+1<4 i+1:0;
j=0;
repaint(0,0,160,128);
}
else
if(tm)
{
if(dlg[2])
i=i+1<6 i+1:0;
else
if(task)
i=i+1<5 i+1:0;
else
i=i+1<4 i+1:0;
repaint();
}
else
if(am)
{
i=i+4<12 i+4:i-8;
repaint();
}
else
if(me&&tip==null)//對話時候的菜單選項
{
if(curnpc==6||curnpc==4)
i=i+1<=1 i+1:0;
else
if(curnpc==5)
{
switch(sn)
{
case 1:
i=i+1<=2 i+1:0;
break;
case 2:
i=i+1<=1 i+1:0;
break;
default:
break;
}
}
repaint();
}
break;
case LEFT://左鍵
if(pm)
{
if(i==1)
j=j-1>=0 j-1:10;
else
if(i==3&&j>0)
for(int ii=j-1;ii>=0;ii--)
{
if(weapon[ii]!=9)
{
j=ii;
break;
}
}
repaint(0,0,160,128);
}
else
if(!pm&&!atm&&!tm&&!win&&!die&&!me&&tip==null&&!gameMenu)
{
if(mo==null)
{
if(dr/3!=0)
{
dr=0;
repaint();
}
else
stm();
}
}
else
if(am)
{
i=i-1>=0 i-1:11;
repaint();
}
else
if(me&&tip==null)
{
if(curnpc==6||curnpc==4||curnpc==5)
i=i-1>=0 i-1:0;
repaint();
}
break;
case RIGHT://右鍵
if(pm)
{
if(i==1)
{
j=j+1<11 j+1:0;
repaint(0,0,160,128);
}
else
if(i==3)
{
for(int ii=j+1;ii<6;ii++)
{
if(weapon[ii]!=9)
{
j=ii;
break;
}
}
repaint(0,0,160,128);
}
}
else
if(!pm&&!tm&&!atm&&!win&&!die&&!me&&tip==null&&!gameMenu)
{
if(mo==null)
{
if(dr/3!=3)
{
dr=9;
repaint();
}
else
stm();
}
}
else
if(am)
{
i=i+1<=11 i+1:0;
repaint();
}
else
if(me&&tip==null)//對話時候的菜單選項
{
if(curnpc==6||curnpc==4)
i=i+1<=1 i+1:0;
else
if(curnpc==5)
{
switch(sn)
{
case 1:
i=i+1<=2 i+1:0;
break;
case 2:
i=i+1<=1 i+1:0;
break;
default:
break;
}
}
repaint();
}
break;
case FIRE:
FIRE();
break;
default:
switch(keyCode)
{
case KEY_NUM1://1鍵取消
//if(am&&!pm)
//{
//am=false;
//an=4;
//repaint();
//}
//else
if(pm&&i==3)
{
gold+=(weapon[j]%3+1)*(weapon[j]%3+1)*100;
if(curweapon==weapon[j])
curweapon=9;
weapon[j]=9;
addPd=0;
addMd=0;
addPdP=0;
D=d;
repaint(0,0,160,128);
}
break;
default:
break;
}
break;
}
}
}
--------------------------------------------------------------------------------
回復:
ding
--------------------------------------------------------------------------------
回復:
ding
--------------------------------------------------------------------------------
回復:
樓主有功夫
不過這種代碼沒多大研究價值
--------------------------------------------------------------------------------
回復:
good.com
jf.com
--------------------------------------------------------------------------------
回復:
辛苦了
--------------------------------------------------------------------------------
回復:
樓主辛苦了,不過我也同意樓上的觀點。。。
--------------------------------------------------------------------------------
回復:
/*判斷怪物掉出的寶是否角色已經擁有*/
boolean hasWeapon(int s)
{
boolean temp=false;
for(int ii=0;ii<6;ii++)
{
if(weapon[ii]==s)
{
temp=true;
break;
}
}
return(temp);
}
/*戰斗場景控制*/
public void fi(int n,int lvl)
{
/*spi為8位數組,spi[0]為主角, spi[1]為狼,spi[2]為熊,spi[3]為龍, 其余的為敵人*/
if(n!=0)
{
removeCommand(gmenu);
addCommand(choose);
for(int i=0;i<n;i++)
{
spi[i+4]=new SP(lvl);
spi[i+4].x=128;
spi[i+4].y=i*32+((lvl-1)/3==1 15:0)+32;
if(lvl!=15)
spi[i+4].p=(lvl-1)*10;
else
spi[i+4].p=160;
}
spi[0]=new SP(l,D);
spi[0].x=16;
spi[0].y=128;
spi[0].p=130;
curEl=lvl;//將當前戰斗的怪的等級設為給定等級
atm=true;
am=true;
sn=0;
nn=0;
atc=new TI(this,8);
ti.schedule(atc,0,100);
repaint();
}
}
/*將數據轉成字符串*/
String ts(int s)
{
return(String.valueOf(s));
}
public void paint(Graphics g)
{
System.gc();
g.setColor(0,0,0);
g.fillRect(0,0,w,183);
if(!change)//當沒有進行場景切換的時候繪制下面的場景
{
if(changeMap!=null)
{
changeMap.cancel();
changeMap=null;
}
int u,v,o;
if(atm)//繪制戰斗中的場景
{
int iii=sc[(y+31)/16*W[sl]+(x+15)/16]%100;
for(int p=0;p<11;p++)
for(int q=0;q<13;q++)
{
if(q<2||q>10)
g.drawImage(screen[1],p*16,q*16,0);
else
g.drawImage(screen[iii<=16 iii:(iii-screenStart[sl]+16)],p*16,q*16,0);//用主角觸發戰斗前所在的Tile的圖片鋪成戰斗場景
}
for(int i=0;i<8;i++)
{
if(spi[i]!=null)
{
if(i>3)
{
if(spi[i].lv<4||spi[i].lv>6)
{
if(spi[i].lv!=15)
{
g.setClip(spi[i].x,spi[i].y,16,32);
g.drawImage(atpic,spi[i].x-spi[i].p%10*16,spi[i].y-spi[i].p/10*32,0);
}
else
{
g.setClip(spi[i].x,spi[i].y,32,32);
g.drawImage(atpic,spi[i].x,spi[i].y-spi[i].p/10*32-spi[i].p%10*32,0);
}
}
else
{
g.setClip(spi[i].x,spi[i].y,32,16);
g.drawImage(atpic,spi[i].x,spi[i].y-spi[i].p/10*32-spi[i].p%10*16,0);
}
}
else
if(i==1)
{
g.setClip(spi[1].x,spi[1].y,32,16);
g.drawImage(atpic,spi[1].x,spi[1].y-spi[1].p/10*32-spi[1].p%10*16,0);
}
else
{
g.setClip(spi[i].x,spi[i].y,16,32);
g.drawImage(atpic,spi[i].x-spi[i].p%10*16,spi[i].y-spi[i].p/10*32,0);
}
g.setClip(0,0,w,h);
g.setColor(0,0,0);
if(i<4)
g.drawRect(6,(3-i)*32+15+32,5,16);
else
g.drawRect(152,(i-4)*32+15+32,5,16);
g.drawRect(0,143,5,16);
g.setColor(255,0,0);
if(i>=4)
g.fillRect(153,(i-3)*32-16*spi[i].l/(spi[i].lv*spi[i].lv*15+10)+32,4,16*spi[i].l/(spi[i].lv*spi[i].lv*15+10)-1);
else
switch(i)
{
case 0://主角
g.fillRect(7,128-16*l/lm+32,4,16*l/lm-1);
break;
case 1://狼
g.fillRect(7,96-16*spi[1].l/(8*s[3]*s[3]+40)+32,4,16*spi[1].l/(8*s[3]*s[3]+40)-1);
break;
case 2://熊
g.fillRect(7,64-16*spi[2].l/(20*s[4]*s[4]+60)+32,4,16*spi[2].l/(20*s[4]*s[4]+60)-1);
break;
case 3://龍
g.fillRect(7,32-16*spi[3].l/(10*s[5]*s[5]+40)+32,4,16*spi[3].l/(10*s[5]*s[5]+40)-1);
break;
}
g.setColor(0,0,255);
g.fillRect(1,160-16*m/mm,4,16*m/mm-1);
}
}
if(spic0!=null)
g.drawImage(spic0,sx,sy,0);
if(atw!=null)
{
if(atw.type==5)//落星效果
{
switch(atw.s)
{
case 2:
for(int ii=0;ii<5;ii++)
{
g.drawImage(spic[1],rR(60)+112,0,0);
g.drawImage(spic[1],rR(60)+112,32,0);
}
break;
case 3:
for(int ii=0;ii<5;ii++)
{
g.drawImage(spic[1],rR(60)+112,0,0);
g.drawImage(spic[1],rR(60)+112,32,0);
g.drawImage(spic[1],rR(60)+112,64,0);
g.drawImage(spic[1],rR(60)+112,96,0);
}
break;
case 4:
for(int ii=0;ii<5;ii++)
{
g.drawImage(spic[1],rR(60)+112,0,0);
g.drawImage(spic[1],rR(60)+112,32,0);
g.drawImage(spic[1],rR(60)+112,64,0);
g.drawImage(spic[1],rR(60)+112,96,0);
g.drawImage(spic[1],rR(60)+112,128,0);
g.drawImage(spic[1],rR(60)+112,160,0);
}
break;
case 5:
for(int ii=0;ii<5;ii++)
{
g.drawImage(spic[1],rR(60)+112,0,0);
g.drawImage(spic[1],rR(60)+112,32,0);
g.drawImage(spic[1],rR(60)+112,64,0);
g.drawImage(spic[1],rR(60)+112,96,0);
g.drawImage(spic[1],rR(60)+112,128,0);
g.drawImage(spic[1],rR(60)+112,160,0);
g.drawImage(spic[1],rR(60)+112,192,0);
}
for(int i=0;i<4;i++)
{
if(spi[i+4]!=null)
{
if(spi[i+4].lv!=15)
spi[i+4].l-=(2*s[1]*s[1]+10)*(100+addMd)/100;
}
}
break;
case 6:
for(int i=0;i<4;i++)
{
if(spi[i+4]!=null)
{
if(spi[i+4].l<=0)
{
sn+=100*spi[i+4].lv*spi[i+4].lv/le;
nn+=4*spi[i+4].lv*spi[i+4].lv;
spi[i+4]=null;
}
}
}
break;
case 7:
an=4;
cancelATW();
repaint();
break;
default:
break;
}
}
else
if(atw.type==6)//風殘效果
{
switch(atw.s)
{
case 2:
for(int ii=0;ii<6;ii++)
{
g.drawImage(spic[2],0,rR(128),0);
g.drawImage(spic[2],32,rR(128),0);
}
break;
case 3:
for(int ii=0;ii<6;ii++)
{
g.drawImage(spic[2],0,rR(128),0);
g.drawImage(spic[2],32,rR(128),0);
g.drawImage(spic[2],64,rR(128),0);
g.drawImage(spic[2],96,rR(128),0);
}
break;
case 4:
for(int ii=0;ii<6;ii++)
{
g.drawImage(spic[2],0,rR(128),0);
g.drawImage(spic[2],32,rR(128),0);
g.drawImage(spic[2],64,rR(128),0);
g.drawImage(spic[2],96,rR(128),0);
g.drawImage(spic[2],128,rR(128),0);
}
break;
case 5:
for(int ii=0;ii<6;ii++)
{
g.drawImage(spic[2],0,rR(128),0);
g.drawImage(spic[2],32,rR(128),0);
g.drawImage(spic[2],64,rR(128),0);
g.drawImage(spic[2],96,rR(128),0);
g.drawImage(spic[2],128,rR(128),0);
g.drawImage(spic[2],160,rR(128),0);
}
for(int i=0;i<4;i++)
{
if(spi[i+4]!=null)
{
if(spi[i+4].lv!=15)
spi[i+4].l-=3*s[2]*lm/100*(100+addMd)/100;
}
}
break;
case 6:
for(int i=0;i<4;i++)
{
if(spi[i+4]!=null)
{
if(spi[i+4].l<=0)
{
sn+=100*spi[i+4].lv*spi[i+4].lv/le;
nn+=4*spi[i+4].lv*spi[i+4].lv;
spi[i+4]=null;
}
}
}
break;
case 7:
an=4;
cancelATW();
repaint();
break;
default:
break;
}
}
}
}
--------------------------------------------------------------------------------
回復:
啥游戲?
--------------------------------------------------------------------------------
回復:
好長``````
--------------------------------------------------------------------------------
回復:
/*游戲菜單*/
import javax.microedition.lcdui.*;
import java.lang.String;
public class GM extends Canvas implements CommandListener
{
public static Image gmenu;
public static MGC mgc;//創建一個場景對象
public static MG mg;//創建一個主控制對象
public static byte i;//當前高亮選項的序號
public static Loading ld;
public static boolean playOn,showS;
public Thread loading;
public static boolean running;
Command start;
int b;
public GM(MG m)
{
running=true;
start=new Command("選擇",Command.BACK,0);
addCommand(start);
setCommandListener(this);
cI();
playOn=true;
i=0;
repaint();
mg=m;
}
//創建Loading線程
void load()
{
running=false;
ld=null;
ld=new Loading(1);
loading=new Thread(ld);
loading.start();
MG.show(ld);//顯示Loading界面。
gmenu=null;
}
//創建游戲菜單需要的圖片
public static void cI()
{
SA s=new SA();
if(s.tO())
showS=true;
else
showS=false;
try
{
gmenu=Image.createImage("/menu.png");
}
catch(java.io.IOException ioe)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -