📄 swordcanvas.java
字号:
attackNumber=4;
repaint();
}
break;
case 6:
if(energy>=5*skillArray[6])
{
SPI[0].p=140;
if(tran)
{
tran=!tran;
maxlife=level*level+10*level+60;
life=life-life*10*skillArray[8]/(100+10*skillArray[8])>maxlife?maxlife:(life-life*10*skillArray[8]/(100+10*skillArray[8]));
SPI[0].life=life;
basicPower=5*level+2;
totalPower=basicPower+addPower+addPdP*basicPower/100;
SPI[0].basicPower=totalPower;
}
isHiding=true;
energy-=5*skillArray[6];
count=0;
isAttMenu=false;
attackNumber=4;
repaint();
}
break;
case 7://遁走
if(energy>=10*skillArray[7]*skillArray[7])
{
energy-=10*skillArray[7]*skillArray[7];
if(getRandom(100)<20*skillArray[7])
{
isFighting=false;
repaint();
attackControlTask.cancel();
attackControlTask=null;
for(int ii=0;ii<8;ii++)
SPI[ii]=null;
if(tran)
{
tran=!tran;
maxlife=20*level+60;
life=life-life*10*skillArray[8]/(100+10*skillArray[8])>maxlife?maxlife:(life-life*10*skillArray[8]/(100+10*skillArray[8]));
basicPower=3*level+2;
totalPower=basicPower+basicPower*addPdP/100+addPower;
}
repaint();
}
else
{
isAttMenu=false;
attackNumber=4;
repaint();
}
}
break;
case 8://附身
if(energy>=30+3*skillArray[8]*skillArray[8]&&!tran)
{
energy-=30+3*skillArray[8]*skillArray[8];
tran=true;
if(isHiding)
isHiding=!isHiding;
SPI[0].p=150;
maxlife+=maxlife*10*skillArray[8]/100;
life+=life*10*skillArray[8]/100;
SPI[0].life=life;
basicPower+=basicPower*20*skillArray[8]/100;
totalPower=basicPower+addPdP*basicPower/100+addPower;
SPI[0].basicPower=totalPower;
count=0;
isAttMenu=false;
attackNumber=4;
repaint();
}
break;
case 9:
if(energy>=3*skillArray[9]*skillArray[9])
{
energy-=3*skillArray[9]*skillArray[9];
attackTask=new TimerTask(this,10);
isAttMenu=false;
}
break;
case 10:
if(gold>=20*skillArray[10]*maxenergy/100)
{
gold-=20*skillArray[10]*maxenergy/100;
attackTask=new TimerTask(this,11);
isAttMenu=false;
}
break;
case 11:
attackTask=new TimerTask(this,0);
if(isHiding)
isHiding=!isHiding;
isAttMenu=false;
attackNumber=0;
break;
case 12:
attackTask=new TimerTask(this,9);
attackTask.j=attackNumber;
break;
case 22:
attackTask=new TimerTask(this,2);
break;
case 21:
attackTask=new TimerTask(this,1);
break;
}
if(attackTask!=null)
{
if(attackTask.type==4)
timer.schedule(attackTask,0,200);
else
timer.schedule(attackTask,0,250);
}
}
/*判断怪物掉出的宝是否角色已经拥有*/
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 setAttack(int n,int lvl)
{
if(n!=0)
{
try
{
imgAttackBG=Image.createImage("/attackBg"+String.valueOf(getRandom(9))+".png");
}
catch(Exception e)
{
}
if(MenuCanvas.isAudioOn)
{
MenuCanvas.se.closeSound(mapPlayer);
attPlayer=MenuCanvas.se.createPlayer("/attack.mid",1000);
MenuCanvas.se.playSound(attPlayer);
}
for(int i=0;i<n;i++)
{
SPI[i+4]=new Sprite(lvl);
SPI[i+4].x=166;
SPI[i+4].y=i*32+((lvl-1)/3==1?15:0)+64+108;
if(lvl!=15)
SPI[i+4].p=(lvl-1)*10;
else
SPI[i+4].p=160;
}
SPI[0]=new Sprite(life,totalPower);
SPI[0].x=36;
SPI[0].y=224;
SPI[0].p=130;
curEl=lvl;//将当前战斗的怪的等级设为给定等级
isFighting=true;
isAttMenu=true;
sn=0;
nn=0;
attackControlTask=new TimerTask(this,8);
timer.schedule(attackControlTask,0,100);
repaint();
}
}
String toString(int s)
{
return(String.valueOf(s));
}
public void drawScrollPro(Graphics g)
{
g.setClip(88,208,140,85);
int page=1+(strPro.length()-1)/10;
for(int iii=0;iii<page;iii++)
{
if(iii==page-1)
MenuCanvas.ge.drawStringShadow(g,0,0,-1,strPro.substring(iii*10),87,280+offY+iii*18,0);
else
MenuCanvas.ge.drawStringShadow(g,0,0,-1,strPro.substring(iii*10,(iii+1)*10),87,280+offY+iii*18,0);
}
offY-=3;
if(-offY>(strPro.length()-1)/8*18)
offY=0;
g.setClip(0,0,240,309);
}
public void drawTranMenu(Graphics g)
{
g.setColor(0,0,100);
g.fillRoundRect(71,73,86,120,30,30);
g.setColor(getRandom(255),getRandom(255),getRandom(255));
g.drawRoundRect(71,73,86,120,30,30);
g.setColor(0);
g.drawRoundRect(70,72,88,122,30,30);
g.setColor(getRandom(255),getRandom(255),getRandom(255));
g.drawRoundRect(69,71,90,124,30,30);
MenuCanvas.ge.drawStringShadow(g,0xff0000,0x00ff00,0x00ff00,"当前所在地:"+mapName[sl],116,48,g.HCENTER|g.TOP);
MenuCanvas.ge.drawStringShadow(g,0,0x0000ff,0x00ff00,"请选择你要前往的地方",116,211,g.HCENTER|g.TOP);
for(int k=0;k<6;k++)
{
if(!isTask&&k==4)
continue;
if(!dlg[2]&&k==5)
continue;
if(k==i)
MenuCanvas.ge.drawStringShadow(g,0,0x0000ff,0x00ff00,mapName[k],113,k*20+90,g.HCENTER|g.TOP);
else
MenuCanvas.ge.drawStringShadow(g,0x00ff00,0,-1,mapName[k],113,k*20+90,g.HCENTER|g.TOP);
}
}
public void drawProMenu(Graphics g)
{
g.drawImage(imgProBG,0,0,0);
switch(i)
{
case 0://状态显示
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"血:"+toString(life)+"/"+toString(maxlife),100,20,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"气:"+toString(energy)+"/"+toString(maxenergy),100,38,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"经验:"+toString(experience)+" / "+toString(getExperience(level+1)),100,56,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"银两:"+toString(gold),100,74,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"攻击力:"+toString(basicPower)+"+"+toString(addPower+basicPower*addPdP/100),100,92,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"等级:"+toString(level),100,110,0);
MenuCanvas.ge.drawStringShadow(g,0xffff00,0xffff00,0xff0000,"你可以在这里查看",100,214,0);
MenuCanvas.ge.drawStringShadow(g,0xffff00,0xffff00,0xff0000,"尹风的各项属性",100,230,0);
break;
case 1:
String temp=new String();
switch(weapon[j])
{
case 0:
temp="承影剑";
break;
case 1:
temp="纯钧剑";
break;
case 2:
temp="鱼肠剑";
break;
case 3:
temp="干将莫邪剑";
break;
case 4:
temp="龙渊剑";
break;
case 5:
temp="泰阿剑";
break;
case 6:
temp="赤霄剑";
break;
case 7:
temp="湛泸剑";
break;
case 8:
temp="轩辕剑";
break;
}
if(weapon[j]!=9)
{
if(curweapon!=weapon[j])
MenuCanvas.ge.drawStringShadow(g,0xff0000,0xff0000,-1,temp,139,16,0);
else
MenuCanvas.ge.drawStringShadow(g,0x00ff00,0x00ff00,-1,temp,139,16,0);
g.setColor(97,66,31);
g.fillRect(100,36,112,112);
g.setColor(0);
g.drawRect(100,36,112,112);
g.setColor(-1);
g.drawRect(99,35,114,114);
g.setColor(0);
g.drawRect(98,34,116,116);
MenuCanvas.ge.drawClipImage(g,MenuCanvas.imgArrow,105-offX,90,5,10,0,0);
MenuCanvas.ge.drawClipImage(g,MenuCanvas.imgArrow,200+offX,90,5,10,5,0);
offX+=2;
if(offX==4)
offX=0;
g.drawImage(sword[weapon[j]],110,40,0);
}
MenuCanvas.ge.drawStringShadow(g,0,0,-1,"绿色为当前装备",94,150,0);
MenuCanvas.ge.drawStringShadow(g,-1,-1,0,"可以按"1"卖掉",94,168,0);
if(weapon[j]!=9)
{
g.setColor(255,255,255);
switch(weapon[j])
{
case 0:
strPro="有影无形的长剑,双手合握之中是一截剑柄,只有剑柄不见长剑剑身,见于《列子-汤问》。物理攻击力加5,吸血10%";
break;
case 1:
strPro="铸剑之时,雷公打铁,雨娘淋水,蛟龙捧炉,天帝装炭。千年赤堇山山破而出锡,万载若耶江江水干涸而出铜。铸剑大师欧冶子承天之命呕心沥血与众神铸磨十载此剑方成。剑成之后,众神归天,赤堇山闭合如初,若耶江波涛再起,欧冶子也力尽神竭而亡,见于《越绝书》。。物理攻击力加10,吸血25%";
break;
case 2:
strPro="夫专诸之刺王僚,飞鹰击殿,见于司马迁《史记-刺客列传》。物理攻击力加15,吸血45%";
break;
case 3:
strPro="传干将、莫邪是两把剑,但是没有人能分开它们。干将、莫邪是两个人,同样,也没有人能将他(她)们分开。干将、莫邪是干将、莫邪铸的两把剑。干将是雄剑,莫邪是雌剑。干将是丈夫,莫邪是妻子。技能攻击力加10%";
break;
case 4:
strPro="欧冶子和干将为铸此剑,凿开茨山,放出山中溪水,引至铸剑炉旁成北斗七星环列的七个池中,是名“七星”。渔丈人自刎于伍子胥示高洁,事见于《吴越春秋》。技能攻击力加20%";
break;
case 5:
strPro="欧冶子和干将两大剑师联手所铸。晋攻楚三载,楚王此剑退敌,见于《越绝书》。技能攻击力加30%";
break;
case 6:
strPro="刘邦斩蛇起义之物。饰有七彩珠、九华玉的寒光逼人、刃如霜雪的宝剑,剑身上清晰镌刻着两个篆字:赤霄。基础攻击力加15%";
break;
case 7:
strPro="湛泸是一把剑,更是一只眼睛。湛泸:湛湛然而黑色也。五金之英,太阳之精,出之有神,服之有威。一把无坚不摧而又不带丝毫杀气的兵器。基础攻击力加25%";
break;
case 8:
strPro="众神采首山之铜为黄帝所铸,后传与夏禹。剑身一面刻日月星辰,一面刻山川草木。剑柄一面书农耕畜养之术,一面书四海一统之策。基础攻击力加35%";
break;
}
drawScrollPro(g);
}
temp=null;
break;
case 2://技能显示
if(strPro==null)
strPro="你可以在这里升级尹风的技能,尹风的技能分召唤系,元素系,特质系和辅助系共四大系十一种,每种技能的效果以及需要的气值都会随着技能等级的提高而提高,同时升级的时候要注意,每种技能在升级后都必须隔3个人物等级才能继续升级";
if(j<4)
{
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"落日:"+(skillArray[0]>0?"等级"+toString(skillArray[0]):"未修炼"),100,20,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"乱电:"+(skillArray[1]>0?"等级"+toString(skillArray[1]):"未修炼"),100,45,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"残风:"+(skillArray[2]>0?"等级"+toString(skillArray[2]):"未修炼"),100,70,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"召狼:"+(skillArray[3]>0?"等级"+toString(skillArray[3]):"未修炼"),100,95,0);
}
else
if(j<8)
{
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"召熊:"+(skillArray[4]>0?"等级"+toString(skillArray[4]):"未修炼"),100,20,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"召龙:"+(skillArray[5]>0?"等级"+toString(skillArray[5]):"未修炼"),100,45,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"隐身:"+(skillArray[6]>0?"等级"+toString(skillArray[6]):"未修炼"),100,70,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"遁走:"+(skillArray[7]>0?"等级"+toString(skillArray[7]):"未修炼"),100,95,0);
}
else
{
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"附身:"+(skillArray[8]>0?"等级"+toString(skillArray[8]):"未修炼"),100,20,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"治疗:"+(skillArray[9]>0?"等级"+toString(skillArray[9]):"未修炼"),100,45,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"回气:"+(skillArray[10]>0?"等级"+toString(skillArray[10]):"未修炼"),100,70,0);
}
MenuCanvas.ge.drawStringShadow(g,0,0,-1,"剩余技能点:"+toString(skillpoint),100,120,0);
g.setColor(0);
g.drawRect(98,20+j%4*25,80,20);
g.setColor(-1);
g.drawRect(97,19+j%4*25,82,22);
g.setColor(0);
g.drawRect(96,18+j%4*25,84,24);
drawScrollPro(g);
break;
case 3://任务显示
if(strPro==null)
strPro="这里显示的是尹风需要完成的任务,当任务还没有接到时不会在这里显示,接到任务后会显示其完成情况。";
if(isTask)
{
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"收集物品",100,13,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"九花玉露丸:"+(tn[0]==10?"完成":toString(tn[0])),100,31,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"通天草:"+(tn[1]==5?"完成":toString(tn[1])),100,49,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"千年人参:"+(tn[2]==10?"完成":toString(tn[2])),100,67,0);
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"灵芝:"+(tn[3]==5?"完成":toString(tn[3])),100,85,0);
if(isTask2)
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,0x00ff00,"虎皮: "+(tn[4]==20?"完成":toString(tn[4])),100,103,0);
}
drawScrollPro(g);
break;
}
g.setColor(getRandom(255),getRandom(255),getRandom(255));
g.drawRect(14,49+i*58,44,26);
g.setColor(getRandom(255),getRandom(255),getRandom(255));
g.drawRect(13,48+i*58,46,28);
}
public void drawGameOver(Graphics g)
{
try{
Image img = Image.createImage("/loadBg.png");
g.drawImage(img,0,0,g.TOP|g.LEFT);
img = null;
}catch(IOException e){}
String strOver = "襄樊之战是元朝统治者消灭"+
"南宋统一中国的一次重要战役,是中国历史上宋"+
"元封建王朝更迭的关键一战在尹风的帮助下,郭"+
"大侠从南宋淳三年固守襄阳历时六年,"+
",到咸淳九年,最后终因孤城无援,"+
"以南宋襄樊失陷而告结束。尹风和晶晶姑娘"+
"退守江南,协助郭靖和丐帮继续抗蒙大业。"+
"敬请等待后续故事。";
int page=1+(strOver.length()-1)/15;
for(int iii=0;iii<page;iii++)
{
if(iii==page-1)
MenuCanvas.ge.drawStringShadow(g,0,0,-1,strOver.substring(iii*15),10,60+iii*15,0);
else
MenuCanvas.ge.drawStringShadow(g,0,0,-1,strOver.substring(iii*15,(iii+1)*15),10,60+iii*15,0);
}
}
public void drawState(Graphics g)
{
g.drawImage(imgState,0,309-36,g.TOP|g.LEFT);
g.setColor(0,0,255);
g.fillRect(146,h-14+offsetY,54*energy/maxenergy,3);
g.setColor(255,0,0);
g.fillRect(41,h-16+offsetY,54*life/maxlife,3);
g.setColor(128,128,255);
g.fillRect(70,h-32+offsetY,106*(experience-getExperience(level))/(getExperience(level+1)-getExperience(level)),3);
}
public void drawAttackMenu(Graphics g)
{
g.setFont(MenuCanvas.mFont);
g.setColor(0x9B7319);
g.fillRect(20,20,200,20);
g.setColor(0);
g.drawRect(20,20,200,20);
g.setColor(-1);
g.drawRect(19,19,202,22);
g.setColor(0);
g.drawRect(18,18,204,24);
g.setColor(0x0000ff);
g.setClip(20,20,200,20);
for(int iii=0;iii<attackMenu.length;iii++)
{
if(iii<11&&skillArray[iii]==0)
MenuCanvas.ge.drawStringShadow(g,0,0,-1,attackMenu[iii],30-i*40+iii*40,21,0);
else
MenuCanvas.ge.drawStringShadow(g,0x00ff00,0x00ff00,-1,attackMenu[iii],30-i*40+iii*40,21,0);
if((iii==i&&iii<11&&skillArray[iii]>0)||i==11)
MenuCanvas.ge.drawStringShadow(g,0x0000ff,0x0000ff,-1,attackMenu[iii],30-i*40+iii*40,21,0);
}
g.setClip(0,0,240,309);
MenuCanvas.ge.drawClipImage(g,MenuCanvas.imgArrow,12-offX,25,5,10,0,0);
MenuCanvas.ge.drawClipImage(g,MenuCanvas.imgArrow,224+offX,25,5,10,5,0);
offX+=3;
if(offX==9)
offX=0;
}
public void drawWin(Graphics g,Vector string)
{
int h=(string.size()+1)*30;
g.setColor(0,0,100);
g.fillRoundRect(48,90,156,h,30,30);
g.setColor(getRandom(255),getRandom(255),getRandom(255));
g.drawRoundRect(48,90,156,h,30,30);
g.setColor(0);
g.drawRoundRect(47,89,158,h+2,30,30);
g.setColor(getRandom(255),getRandom(255),getRandom(255));
g.drawRoundRect(46,88,160,h+2,30,30);
g.setColor(0xffff00);
MenuCanvas.ge.drawStringShadow(g,0,0,-1,"战斗胜利",126,96,g.HCENTER|g.TOP);
g.setColor(-1);
for(int ii=0;ii<string.size();ii++)
g.drawString((String)(string.elementAt(ii)),126,120+ii*28,g.HCENTER|g.TOP);
}
public void paint(Graphics g)
{
if(isGameOver)
{
drawGameOver(g);
return;
}
//System.gc();
g.setFont(MenuCanvas.mFont);
g.setColor(0,0,0);
g.fillRect(0,0,w,h);
if(!isChange)
{
if(changeMapTask!=null)
{
changeMapTask.cancel();
changeMapTask=null;
}
int u,v,o;
if(isFighting)
{
g.drawImage(imgAttackBG,0,0,g.TOP|g.LEFT);
for(int i=0;i<8;i++)
{
if(SPI[i]!=null)
{
if(i>3)
{
if(SPI[i].level<4||SPI[i].level>6)
{
if(SPI[i].level!=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,240,309);
g.setColor(0,0,0);
if(i<4&&i!=0)
g.drawRect(26,(3-i)*32+15+64+64,5,16);
else if(i>=4&&i!=0)
g.drawRect(190,(i-4)*32+15+64+108,5,16);
g.setColor(255,0,0);
if(i>=4)
g.fillRect(191,(i-3)*32-16*SPI[i].life/(SPI[i].level*SPI[i].level*15+10)+64+108,4,16*SPI[i].life/(SPI[i].level*SPI[i].level*15+10)-1);
else
switch(i)
{
case 1://狼
g.fillRect(27,96-16*SPI[1].life/(8*skillArray[3]*skillArray[3]+40)+64+64,4,16*SPI[1].life/(8*skillArray[3]*skillArray[3]+40)-1);
break;
case 2://熊
g.fillRect(27,64-16*SPI[2].life/(20*skillArray[4]*skillArray[4]+60)+64+64,4,16*SPI[2].life/(20*skillArray[4]*skillArray[4]+60)-1);
break;
case 3://龙
g.fillRect(27,32
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -