📄 swordcanvas.java
字号:
/*画雪*/
for(int i=0;i<snow.length;i++)
{
if(snow[i][0]/100==300)
continue;
for(int j=0;j<snow[0].length;j++)
g1.fillArc(snow[i][j]/100,i*18+Math.abs(snow[i][j])%100,1+getRandom(2),1+getRandom(2),0,360);
}
break;
case 2:
break;
}
isWeather=false;
}
public void setMoveTask()
{
isWalking=true;
moveTask=new TimerTask(this,7);
timer.schedule(moveTask,0,50);
}
public void message(int ii)
{
i=0;
dlgM=null;
dlgMenu=null;
isTalking=true;
curNPC=ii-2;
switch(ii)
{
case 2:
dlgM=new String[7];
dlgM[0]="尹风:如今奸臣当道,国家有难,匹夫有责.郭大侠苦守襄阳,为夫决意前往助守襄阳";
dlgM[1]="晶晶:官人做得对。";
dlgM[2]="尹风:此去不知何时才能回,娘子要保重身体.";
dlgM[3]="晶晶:官人一路上要多加小心";
dlgM[4]="尹风:夫君记住了";
dlgM[5]="晶晶:......(呜咽)";
dlgM[6]="晶晶:大事为重,不用挂念我.";
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[9];
dlgM[0]="尹风:郭大侠,不才愿助您驻守襄阳!";
dlgM[1]="郭靖:现在有一件很重要的事需要你的帮忙。";
dlgM[2]="尹风:大侠请说!";
dlgM[3]="郭靖:马上就到冬季,将士们需要100件去寒之物。";
dlgM[4]="尹风:这个好办,我来的路上经过一个荒岛,上面野兽众多,找点皮毛还不容易。";
dlgM[5]="郭靖:这样便好,那就托付与你了,这些银两你带上。";
dlgM[6]="获得银两10000";
dlgM[7]="郭靖:早去早回。";
dlgM[8]="郭靖:太好了,有了这些虎皮,整个冬天都不怕了,过了这个冬天就是复我河山之时!";
break;
case 6:
dlgM=new String[1];
dlgMenu=new String[2];
dlgM[0]="你希望参加这个勇士的竞技吗?需要收取350两费用,竞技必须是杀死所有野兽才会停止.";
dlgMenu[0]="参加";
dlgMenu[1]="离开";
break;
case 7://洪七公
dlgM=new String[3];
dlgM[0]="最近老觉得身体不好,本想自己去收集些药引,可是力不从心了,希望你可以帮助我,我将会给你一些报酬";
dlgM[1]="重新分配技能点需要10000两,交纳费用后你可以将技能点重新分配";
dlgM[2]="在荒岛收集10粒九花玉露丸,5棵通天草,在大智岛收集10棵千年人参,在蓬莱收集5个灵芝";
dlgMenu=new String[3];
dlgMenu[0]="分配技能";
dlgMenu[1]="接受任务";
dlgMenu[2]="离开这里";
break;
case 8://船工
dlgM=new String[1];
dlgMenu=new String[2];
dlgMenu[0]="购买";
dlgMenu[1]="离开";
dlgM[0]="在这里你找不到比我这更好的船了!船只价格是600两,你赶紧买吧!";
break;
}
if(!dlg[ii-2])
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;
createDialogImage(dlgM[sn]);
repaint();
}
public void update(Vector string)
{
if(sl==6)
killCount++;
if(curEl!=15)
{
String temp;
temp=null;
boolean out=false;
string.addElement((String)("获得金钱:"+String.valueOf(nn)));//更新金钱
string.addElement((String)("获得经验:"+String.valueOf(sn)));//更新经验值
gold+=nn;
while(true)
{
if(experience+sn>=getExperience(level+1))
{
level++;
skillpoint++;
out=true;
energy=20*level+20;
maxenergy=energy;
maxlife=level*level+10*level+60;
life=maxlife;
basicPower=5*level+2;
totalPower=basicPower+addPdP*basicPower/100+addPower;
}
else
break;
}
experience+=sn;
if(out)
string.addElement((String)("人物等级提升到第"+String.valueOf(level)+"级"));//更新等级
for(int iii=0;iii<6;iii++)
{
if(weapon[iii]==9)
{
int ii=getRandom(100);
switch(curEl)
{
case 2:
if(ii<=2&&ii>=0&&!hasWeapon(0))
{
weapon[iii]=0;
temp="承影剑";
}
else
if(ii<=6&&ii>=3&&!hasWeapon(3))
{
weapon[iii]=3;
temp="干将莫邪剑";
}
break;
case 3:
if(ii<=5&&ii>=0&&!hasWeapon(0))
{
weapon[iii]=0;
temp="承影剑";
}
else
if(ii<=10&&ii>=6&&!hasWeapon(3))
{
weapon[iii]=3;
temp="干将莫邪剑";
}
else
if(ii<=14&&ii>=11&&!hasWeapon(6))
{
weapon[iii]=6;
temp="赤霄剑";
}
break;
case 4:
if(ii<=7&&ii>=0&&!hasWeapon(0))
{
weapon[iii]=0;
temp="承影剑";
}
else
if(ii<=11&&ii>=8&&!hasWeapon(1))
{
weapon[iii]=1;
temp="纯钧剑";
}
else
if(ii<=18&&ii>=12&&!hasWeapon(3))
{
weapon[iii]=3;
temp="干将莫邪剑";
}
else
if(ii<=25&&ii>=19&&!hasWeapon(6))
{
weapon[iii]=6;
temp="赤霄剑";
}
break;
case 5:
if(ii<=5&&ii>=0&&!hasWeapon(1))
{
weapon[iii]=1;
temp="纯钧剑";
}
else
if(ii<=15&&ii>=6&&!hasWeapon(3))
{
weapon[iii]=3;
temp="干将莫邪剑";
}
else
if(ii<=18&&ii>=16&&!hasWeapon(4))
{
weapon[iii]=4;
temp="龙渊剑";
}
else
if(ii<=27&&ii>=19&&!hasWeapon(6))
{
weapon[iii]=6;
temp="赤霄剑";
}
break;
case 6:
if(ii<=8&&ii>=0&&!hasWeapon(1))
{
weapon[iii]=1;
temp="纯钧剑";
}
else
if(ii<=14&&ii>=9&&!hasWeapon(4))
{
weapon[iii]=4;
temp="龙渊剑";
}
else
if(ii<=17&&ii>=15&&!hasWeapon(7))
{
weapon[iii]=7;
temp="湛泸剑";
}
break;
case 7:
if(ii<=10&&ii>=0&&!hasWeapon(1))
{
weapon[iii]=1;
temp="纯钧剑";
}
else
if(ii<=18&&ii>=11&&!hasWeapon(4))
{
weapon[iii]=4;
temp="龙渊剑";
}
else
if(ii<=23&&ii>=19&&!hasWeapon(7))
{
weapon[iii]=7;
temp="湛泸剑";
}
break;
case 8:
if(ii<=3&&ii>=0&&!hasWeapon(2))
{
weapon[iii]=2;
temp="鱼肠剑";
}
else
if(ii<=13&&ii>=4&&!hasWeapon(4))
{
weapon[iii]=4;
temp="龙渊剑";
}
else
if(ii<=19&&ii>=14&&!hasWeapon(7))
{
weapon[iii]=7;
temp="湛泸剑";
}
break;
case 9:
if(ii<=5&&ii>=0&&!hasWeapon(2))
{
weapon[iii]=2;
temp="鱼肠剑";
}
else
if(ii<=8&&ii>=6&&!hasWeapon(5))
{
weapon[iii]=5;
temp="泰阿剑";
}
else
if(ii<=15&&ii>=12&&!hasWeapon(8))
{
weapon[iii]=8;
temp="轩辕剑";
}
break;
case 10:
if(ii<=7&&ii>=0&&!hasWeapon(2))
{
weapon[iii]=2;
temp="鱼肠剑";
}
else
if(ii<=13&&ii>=8&&!hasWeapon(5))
{
weapon[iii]=5;
temp="泰阿剑";
}
else
if(ii<=19&&ii>=14&&!hasWeapon(8))
{
weapon[iii]=8;
temp="轩辕剑";
}
break;
default:
break;
}
break;
}
}
if(temp!=null)
{
string.addElement((String)("获得武器:"+temp));
}
if(isTask&&sl!=6&&temp==null)
{
temp=null;
int ii;
ii=getRandom(100);
if(ii<30)
{
switch(curEl)
{
case 4://豺
if(tn[0]<10)
{
tn[0]++;
temp="九花玉露丸";
}
break;
case 5://狼
if(tn[1]<5)
{
tn[1]++;
temp="通天草";
}
break;
case 6://虎
if(tn[4]<20&&isTask2)
{
tn[4]++;
temp="虎皮";
}
break;
case 9://僵尸将军
if(tn[2]<10)
{
tn[2]++;
temp="千年人参";
}
break;
case 10://Boss
if(tn[3]<5)
{
tn[3]++;
temp="灵芝";
}
break;
default:
break;
}
}
if(temp!=null)
{
string.addElement((String)("获得任务物品:"+temp));
}
}
temp=null;
if(sl==6&&killCount!=10)
{
string.addElement((String)("还须进行"+toString(10-killCount)+"场战斗"));
}
if(sl==6&&killCount==10)
{
string.addElement((String)("获得银子10000两"));
}
}
else
{
isGameOver = true;
}
}
public void createDialogImage(String s)
{
strDlg=s;
dlgn=10;
imgDlg=null;
int dw = dlgn*15;
int dh = ((s.length()-1)/dlgn+1)*20+3;
if(dlgMenu!=null)
dh = ((s.length()-1)/dlgn+1)*20+20;
imgDlg=Image.createImage(dw,dh);
if(dlgMenu!=null)//显示对话菜单
imgDlg=Image.createImage(dw,dh);
g1=imgDlg.getGraphics();
g1.setFont(MenuCanvas.mFont);
g1.setColor(0x9B7319);
g1.fillRect(0,0,dw,dh);
g1.setColor(0xffffff);
g1.drawRect(0,0,dw-1,dh-1);
g1=null;
}
public void drawDialog(Graphics g)
{
g.setColor(0xffffff);
g.drawImage(imgDlg,w/2-imgDlg.getWidth()/2,h/2-imgDlg.getHeight()/2,0);
for(int i=0;i<strDlg.length()/dlgn+1;i++)
{
if(i==strDlg.length()/dlgn)
g.drawString(strDlg.substring(i*dlgn),w/2-imgDlg.getWidth()/2+2,h/2-imgDlg.getHeight()/2+2+i*20,0);
else
g.drawString(strDlg.substring(i*dlgn,i*dlgn+dlgn),w/2-imgDlg.getWidth()/2+2,h/2-imgDlg.getHeight()/2+2+i*20,0);
}
if(dlgMenu!=null)//显示对话菜单
{
MenuCanvas.ge.drawClipImage(g,MenuCanvas.imgArrow,60,168,5,10,0,0);
MenuCanvas.ge.drawClipImage(g,MenuCanvas.imgArrow,196-45,168,5,10,5,0);
g.setColor(-1);
g.drawString(dlgMenu[dlgMenuChoose],108,167,g.HCENTER|g.TOP);
}
}
int getEnemyNum()
{
int ii=getRandom(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 getMapMark()
{
int r=0;
switch(direction/3)
{
case 1://向下
if(y<H[sl]*16-32)
r=mapArray[((y+31)/16+1)*W[sl]+x/16]/100;
break;
case 0://向左
if(x!=0)
r=mapArray[(y+31)/16*W[sl]+x/16-1]/100;
break;
case 3://向右
if(x!=W[sl]*16-16)
r=mapArray[(y+31)/16*W[sl]+x/16+1]/100;
break;
case 2://向上
if(y!=0)
r=mapArray[((y+31)/16-1)*W[sl]+x/16]/100;
break;
}
return r;
}
public static void createImage()
{
try
{
screen=null;
screenPic=Image.createImage("/screen.png");
imgProBG=Image.createImage("/proBg.png");
imgState=Image.createImage("/state.png");
sword=new Image[9];
for(int i=0;i<9;i++)
{
sword[i]=Image.createImage("/sword"+String.valueOf(i)+".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++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -