📄 e070f72a48cf001216b0addf11818cf9
字号:
if(x!=0)
sc[(y+31)/16*W[sl]+x/16-1]=sc[(y+31)/16*W[sl]+x/16];
break;
case 3://向右
if(x!=W[sl]*16-16)
sc[(y+31)/16*W[sl]+x/16+1]=sc[(y+31)/16*W[sl]+x/16];
break;
case 2://向上
if(y!=0)
sc[((y+31)/16-1)*W[sl]+x/16]=sc[(y+31)/16*W[sl]+x/16];
break;
}
repaint();
}
else
if(c()==97)//大Boss
{
if(tn[0]==10&&tn[1]==5&&tn[2]==10&&tn[3]==5&&tn[4]==20)
fi(1,15);
else
{
tm=true;
repaint();
}
}
else
{
walk=true;
mo=new TI(this,7);
ti.schedule(mo,0,150);
}
}
/*对话控制*/
public void message(int ii)
{
i=0;
dlgM=null;
me=true;
curnpc=ii-2;
switch(ii)
{
case 2://母亲
dlgM=new String[5];
dlgM[0]="景鸿:孩儿此去不知何时才能回,母亲要保重身体.";
dlgM[1]="母亲:我儿一路上要多加小心";
dlgM[2]="景鸿:孩儿记住了";
dlgM[3]="母亲:......(呜咽)";
dlgM[4]="母亲:大事为重,不用挂念我.";
break;
case 3://皇榜
dlgM=new String[1];
dlgM[0]="由于最近山贼横行,朝廷悬赏缉拿,抓住山贼头领将有重金奖赏。";
break;
case 4://长须仙人
dlgM=new String[3];
dlgM[0]="长须仙人:你从很远的地方来的,是为了找徐承志与骆承志二人吧!";
dlgM[1]="景鸿:是,求仙人指点。";
dlgM[2]="长须仙人:好,随我来";
break;
case 5://徐承志与骆承志
dlgM=new String[8];
dlgM[0]="徐承志:现在有一件很重要的事需要你的帮忙。";
dlgM[1]="景鸿:将军请说!";
dlgM[2]="徐承志:马上就到冬季,将士们需要100件去寒之物。";
dlgM[3]="景鸿:这个好办,我来的路上经过一个荒岛,上面野兽众多,找点皮毛还不容易。";
dlgM[4]="徐承志:这样便好,那就托付与你了,这些银两你带上。";
dlgM[5]="获得银两10000";
dlgM[6]="徐承志:早去早回。";
dlgM[7]="徐承志:太好了,有了这些虎皮,整个冬天都不怕了,过了这个冬天就是我们讨伐武后,复我河山之时!";
break;
case 6://竞技官
dlgM=new String[1];
dlgM[0]="你希望参加这个勇士的竞技吗?需要收取350两费用,竞技必须是杀死所有野兽才会停止 参加 离开";
break;
case 7://多九公
dlgM=new String[4];
dlgM[0]="最近老觉得身体不好,本想自己去收集些药引,可是力不从心了,希望你可以帮助我,我将会给你一会报酬";
dlgM[1]=" 分配技能 任务 离开";
dlgM[2]="重新分配技能点需要10000两,交纳费用后你可以将技能点重新分配 马上分配 下次再说";
dlgM[3]="在荒岛收集10棵鹤灵草,5颗狼牙,在女儿国收集10棵米云香,在蓬莱收集5个雪岩";
break;
case 8://船工
dlgM=new String[1];
dlgM[0]="在京城你找不到比我这更好的船了!船只价格是600两,你赶紧买吧! 购买 离开";
break;
}
if(!dlg[ii-2])//如果没有和某个NPC对完话,则每次对话从第一句开始。
sn=0;
else
if(ii<5)
sn=dlgM.length-1;
else
if(ii==5)
{
if(tn[4]==20)
sn=7;
else
sn=6;
}
else
sn=0;
createDlgPic(dlgM[sn],8);
repaint();
}
/*创建对话框图片*/
public void createDlgPic(String s,int n)
{
dlgm=s;
dlgn=n;
dlgpic=null;
dlgpic=Image.createImage(n*17,((s.length()-1)/n+1)*20+3);
g1=dlgpic.getGraphics();
g1.setFont(Loading.myfont);
g1.setColor(153,117,26);
g1.fillRect(0,0,n*17,((s.length()-1)/n+1)*20+3);
g1.setColor(0xffffff);
g1.drawRect(0,0,n*17-1,((s.length()-1)/n+1)*20+2);
g1=null;
}
/*怪物数量Check*/
int chn()
{
int ii=rR(1000);
if(ii<400)
return(0);
else
if(ii<600)
return(1);
else
if(ii<800)
return(2);
else
if(ii<950)
return(3);
else
return(4);
//return(0);
}
/*判断角色移动方向上下一步的标志位*/
int c()
{
int r=0;
switch(dr/3)
{
case 1://向下
if(y<H[sl]*16-32)
r=sc[((y+31)/16+1)*W[sl]+x/16]/100;
break;
case 0://向左
if(x!=0)
r=sc[(y+31)/16*W[sl]+x/16-1]/100;
break;
case 3://向右
if(x!=W[sl]*16-16)
r=sc[(y+31)/16*W[sl]+x/16+1]/100;
break;
case 2://向上
if(y!=0)
r=sc[((y+31)/16-1)*W[sl]+x/16]/100;
break;
}
return r;
}
/*构建屏幕上的游戏图片*/
public static void cI()
{
try
{
screen=null;
/*创建场景图*/
screenPic=Image.createImage("/screen.png");
switch(sl)
{
case 0://城郊
screen=new Image[29];
for(int ii=0;ii<13;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+16)%10*16,-(ii+16)/10*16,0);
g1=null;
}
break;
case 1://荒岛
screen=new Image[20];
for(int ii=0;ii<4;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+29)%10*16,-(ii+29)/10*16,0);
g1=null;
}
break;
case 2://女儿国
screen=new Image[30];
for(int ii=0;ii<14;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+33)%10*16,-(ii+33)/10*16,0);
g1=null;
}
break;
case 3://勇士国
screen=new Image[37];
for(int ii=0;ii<21;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+47)%10*16,-(ii+47)/10*16,0);
g1=null;
}
break;
case 4://真假蓬莱
screen=new Image[25];
for(int ii=0;ii<9;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+68)%10*16,-(ii+68)/10*16,0);
g1=null;
}
break;
case 5://军营
screen=new Image[22];
for(int ii=0;ii<6;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+77)%10*16,-(ii+77)/10*16,0);
g1=null;
}
break;
case 6://竞技场
screen=new Image[19];
for(int ii=0;ii<3;ii++)
{
screen[ii+16]=Image.createImage(16,16);
g1=screen[ii+16].getGraphics();
g1.drawImage(screenPic,-(ii+83)%10*16,-(ii+83)/10*16,0);
g1=null;
}
break;
default:
break;
}
for(int ii=0;ii<16;ii++)
{
screen[ii]=Image.createImage(16,16);
g1=screen[ii].getGraphics();
g1.drawImage(screenPic,-ii%10*16,-ii/10*16,0);
g1=null;
}
screenPic=null;
/*创建精灵图*/
if(NPCPic==null)
NPCPic=Image.createImage("/sp.png");
if(spic==null)
{
spic=new Image[6];
for(int i=0;i<6;i++)
spic[i]=Image.createImage("/spic/"+String.valueOf(i)+".png");
}
if(poc==null)
poc=Image.createImage("/poc.png");
if(atpic==null)
atpic=Image.createImage("/an.png");
}
catch(java.io.IOException ioe)
{
}
}
/*返回某级别的经验值*/
int m(int s)
{
return(s*(s+1)*(2*s+1)*25/6);
}
/*地图切换*/
public void cm(int l)
{
tm=false;
sl=l;
x=startx[sl];
y=starty[sl];
if(x>=w/2)
{
if(x<=W[sl]*16-w/2)
x0=x-w/2;
else
x0=W[sl]*16-w;
}
else
x0=0;
if(y>=h/2)
{
if(y<=H[sl]*16-h/2)
y0=y-h/2;
else
y0=H[sl]*16-h;
}
else
y0=0;
is=getClass().getResourceAsStream("/Screen"+ts(sl)+".txt");
rS(is);//读取指定的地图索引
if(sl!=6)
{
is=getClass().getResourceAsStream("/sp"+ts(sl)+".txt");
rSp(is);//读取精灵索引
}
changeMap=null;
changeMap=new TI(this,13);
ti.schedule(changeMap,0,200);
change=true;
}
/*将移动计时器取消*/
void cancelMove()
{
mo.cancel();
mo=null;
}
void cancelATW()
{
atw.cancel();
while(atw.cancel())
{
}
atw=null;
}
/*角色移动 移动方式中1表示迈左腿,2表示迈右腿*/
public void move()
{
System.out.println("move");
if(dr%3==2||dr%3==0)
{
if(c()>1&&c()<10)//对话NPC出现的Tile
{
if(c()==4)
{
if(tn[0]==10&&tn[1]==5&&tn[2]==10&&tn[3]==5)
message(4);
}
else
message(c());
cancelMove();
dr=dr/3*3;
repaint();
}
else
if(c()==99)//场景出入口
{
if(boat)
{
tm=true;
i=0;
}
else
tip="请去找船工买船";
cancelMove();
dr=dr/3*3;
repaint();
}
else
if(c()==97)//大Boss
{
cancelMove();
if(tn[0]==10&&tn[1]==5&&tn[2]==10&&tn[3]==5&&tn[4]==20)
fi(1,15);
else
{
tm=true;
dr=dr/3*3;
repaint();
}
}
else
if(c()==98)//宝箱
{
cancelMove();
int ii=rR(2*sl+1)*10;
gold+=ii*(2*sl+1);
tip=ii>0?"获得"+ts(ii*(2*sl+1))+"两银子":"一无所获";
switch(dr/3)
{
case 1://向下
if(y<H[sl]*16-32)
sc[((y+31)/16+1)*W[sl]+x/16]=sc[(y+31)/16*W[sl]+x/16];
break;
case 0://向左
if(x!=0)
sc[(y+31)/16*W[sl]+x/16-1]=sc[(y+31)/16*W[sl]+x/16];
break;
case 3://向右
if(x!=W[sl]*16-16)
sc[(y+31)/16*W[sl]+x/16+1]=sc[(y+31)/16*W[sl]+x/16];
break;
case 2://向上
if(y!=0)
sc[((y+31)/16-1)*W[sl]+x/16]=sc[(y+31)/16*W[sl]+x/16];
break;
}
repaint();
}
else
if(c()>10&&c()<21)//Check怪
{
fi(chn(),c()-10);
if(!atm)//没有怪出现
{
dr++;
if(dr%3==0)
dr-=2;
switch(dr)
{
// case 7://向上1
// y-=speed;
// if(y0>0&&y-y0<=64)
// y0-=speed;
// repaint();
// break;
// case 4://向下1
// y+=speed;
// if(y0<128&&y-y0>=48)
// y0+=speed;
// repaint();
// break;
// case 1://向左1
// x-=speed;
// if(x0>0&&x-x0<=64)
// x0-=speed;
// repaint();
// break;
// case 10://向右1
// x+=speed;
// if(x0<24*16&&x-x0>=64)
// x0+=speed;
// repaint();
// break;
// default://静止状态
// repaint();
// break;
case 7://向上1
y-=speed;
if(y0>0&&y-y0<=h/2)
y0-=speed;
repaint();
break;
case 4://向下1
y+=speed;
if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
y0+=speed;
repaint();
break;
case 1://向左1
x-=speed;
if(x0>0&&x-x0<=w/2)
x0-=speed;
repaint();
break;
case 10://向右1
x+=speed;
if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
x0+=speed;
repaint();
break;
default://静止状态
repaint();
break;
}
}
else
cancelMove();
}
else
if(c()==1)
{
dr++;
if(dr%3==0)
dr-=2;
switch(dr)
{
case 7://向上1
y-=speed;
if(y0>0&&y-y0<=h/2)
y0-=speed;
repaint();
break;
case 4://向下1
y+=speed;
if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
y0+=speed;
repaint();
break;
case 1://向左1
x-=speed;
if(x0>0&&x-x0<=w/2)
x0-=speed;
repaint();
break;
case 10://向右1
x+=speed;
if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
x0+=speed;
repaint();
break;
default://静止状态
repaint();
break;
}
}
else
{
mo.cancel();
mo=null;
dr=dr/3*3;
repaint();
}
}
else
{
dr++;
switch(dr)
{
case 7://向上1
y-=speed;
if(y0>0&&y-y0<=h/2)
y0-=speed;
repaint();
break;
case 8://向上2
y-=speed;
if(y0>0&&y-y0<=h/2)
y0-=speed;
repaint();
if(!walk)
cancelMove();
break;
case 4://向下1
y+=speed;
if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
y0+=speed;
repaint();
break;
case 5://向下2
y+=speed;
if(y0<(H[sl]-(h+15)/16)*16&&y-y0>=h/2)
y0+=speed;
repaint();
if(!walk)
cancelMove();
break;
case 1://向左1
x-=speed;
if(x0>0&&x-x0<=w/2)
x0-=speed;
repaint();
break;
case 2://向左2
x-=speed;
if(x0>0&&x-x0<=w/2)
x0-=speed;
repaint();
if(!walk)
cancelMove();
break;
case 10://向右1
x+=speed;
if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
x0+=speed;
repaint();
break;
case 11://向右2
x+=speed;
if(x0<(W[sl]-w/16)*16&&x-x0>=w/2)
x0+=speed;
repaint();
if(!walk)
cancelMove();
break;
default://静止状态
repaint();
break;
}
}
}
/*技能攻击效果*/
void sat(int k)
{
atw=null;
switch(k)
{
case 0://火球
if(m>=10*s[0])
{
atw=new TI(this,4);
m-=10*s[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -