📄 jcanvas.java
字号:
break;
}
break;
}
/**
* 帮助界面
*/
if(mapqiehuan == 8){
logoy = 79;
mapqiehuan = 0;
shenyin.over();
shenyin.logo(1);
break;
}
/**
* 主界面
*/
if(mapqiehuan == 0){
if(logoy == 79){
chushi();
shenyin.over();
mapqiehuan = 11;
}
if(logoy == 114){
shenyin.over();
mapqiehuan = 12;
}
if(logoy == 149){
biaox = 50;
biaoy = 50;
mapqiehuan = 7;
}
if(logoy == 184){
mapqiehuan = 8;
}
if(logoy == 219){
midlet.Over();
}
break;
}
if(mapqiehuan != 5){
move = 5;
}
if(duihuaqiehuan()){break;}
duihua();
break;
}
}
}
public void keyReleased(int keyCode){
buchang=0;
}
public void run() {
while(true){
//人物图片切换
su++;
if(su==3){
if(row==0){
col++;
if(col==2) col=0;
}
if(row==1){
col++;
if(col==2) col=0;
}
if(row==2){
col++;
if(col==2) col=0;
}
if(row==3){
col++;
if(col==2) col=0;
}
su=0;
}
//主角在行走中进入本次循环
if((buchang==1 || (lian+6)%24!=0 || hang%24!=0)&&mapqiehuan!=5){
xx=hang;
yy=lian;
switch(move){
case 0:
break;
case 1:
if(qiehuan!=4){qiehuan++;}
row=0;
lian-=6;
break;
case 2:
if(qiehuan!=4){qiehuan++;}
row=1;
lian+=6;
break;
case 3:
if(qiehuan!=4){qiehuan++;}
row=2;
hang-=6;
break;
case 4:
if(qiehuan!=4){qiehuan++;}
row=3;
hang+=6;
break;
case 5:
break;
}
/**
* 人物遇敌判断
*/
if((move != 0 && move != 5) && npc.yudi() && mapqiehuan==4){
yudile=1;
buchang=0;
shenyin.logo(2);
}
//防止主角与NPC发生碰撞卡住的情况
if(Nqingnian.Kapengzhuang1(hang+renx,lian+reny,qingnianx,qingniany,row,NPCrow,move)||Nfunv.Kapengzhuang1(hang+renx,lian+reny,funvx,funvy,row,NPCrow1,move)){
System.out.println(" "+(hang+renx-qingnianx)+""+(lian+reny+6-qingniany));
}
else{
if(Nqingnian.Kapengzhuang(hang+renx,lian+reny,qingnianx,qingniany,row,NPCrow,move)||Nfunv.Kapengzhuang(hang+renx,lian+reny,funvx,funvy,row,NPCrow1,move)){
System.out.println((hang+renx-qingnianx)+""+(lian+reny+6-qingniany));
hang=xx;
lian=yy;
}
}
}
Mappengzhuang(); //检测主角进出各个关卡的碰撞
RenpengzhuangNPC(); //检测主角与NPC的碰撞
Tupengzhuang(); //检测主角与地图的碰撞
duihuahuan(); //检测主角是否与NPC发生碰撞并对话
repaint();
try {
Thread.sleep(80);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//所有NPC的行走与碰撞。
public void NPCpengzhuang(int huan,int pengx,int pengy,int row){
int pengxx;
int pengyy;
if(huan==1){
pengx=qingnianx;
pengy=qingniany;
}
else{
pengx=funvx;
pengy=funvy;
}
pengxx=pengx;
pengyy=pengy;
//获取随机数得到NPC的行进方向
if((pengy+6)%24==0&&pengx%24==0&&duihuakuang==0){
NPCbuchang=0;
NPCjisuan++;
if(NPCjisuan==20){
NPCbuchang=1;
NPCjisuan=0;
if(huan==1){
row=Nshiwei.NPCmove(100,NPCbuchang,NPCmove,NPCrow);
}
else{
row=Nshiwei.NPCmove(101,NPCbuchang,NPCmove,NPCrow);
}
}
}
//NPC移动时不能进入该循环
if(((NPCbuchang==1&&duihuakuang==0)||(pengy+6)%24!=0 || pengx%24!=0)){
if(row==0){
pengy-=6;
}
if(row==1){
pengy+=6;
}
if(row==2){
pengx-=6;
}
if(row==3){
pengx+=6;
}
//防止NPC与主角发生碰撞卡住
if(npc.Kapengzhuang1(pengx,pengy,hang+renx,lian+reny,row,this.row,row+1)){
}
else{
if(npc.Kapengzhuang(pengx,pengy,hang+renx,lian+reny,row,this.row,row+1)){
pengx=pengxx;
pengy=pengyy;
}
}
//NPC与主角的碰撞
if(npc.NPCpengzhuang(pengx,pengy,hang+renx,lian+reny)){
pengx=pengxx;
pengy=pengyy;
}
//NPC与图片的碰撞(上、左)
if(row==0||row==2){
if(Nshiwei.pengzhuang(map,pengx,pengy,0,0)){
pengx=pengxx;
pengy=pengyy;
}
}
//NPC与图片的碰撞(下、右)
if(row==1||row==3){
if(Nshiwei.pengzhuang1(map,pengx,pengy,0,0)){
pengx=pengxx;
pengy=pengyy;
}
}
}
if(huan==1){
qingnianx=pengx;
qingniany=pengy;
NPCrow=row;
}
else{
funvx=pengx;
funvy=pengy;
NPCrow1=row;
}
}
//检测人物进出的碰撞
public void Mappengzhuang(){
if(mapqiehuan==1&&qiehuan==4){
if(map[(lian+6+reny)/24][(hang+renx)/24]==37){
mapImage = 2;
map=huanggongmap1;
mapqiehuan=2;
qiehuan=0;
if((lian+6+reny)/24==16&&(hang+renx)/24==19){
lian=13*24-6;
hang=5*24;
}
if((lian+6+reny)/24==11&&(hang+renx)/24==29){
lian=3*24-6;
hang=23*24;
}
}
if(map[(lian+6+reny)/24][(hang+renx)/24]==0){
mapImage = 3;
map=chengneimap;
map[9][24]=50;
map[9][25]=51;
map[10][24]=59;
map[10][25]=60;
mapqiehuan=3;
qiehuan=0;
qingnianx=25*24;
qingniany=31*24-6;
funvx=13*24;
funvy=27*24-6;
if((lian+6+reny)/24==29&&(hang+renx)/24==18){
lian=5*24-6;
hang=19*24;
}
if((lian+6+reny)/24==29&&(hang+renx)/24==19){
lian=5*24-6;
hang=20*24;
}
}
}
if(mapqiehuan==2&&qiehuan==4){
if(map[(lian+6+reny)/24][(hang+renx)/24]==38){
mapImage = 1;
map=huanggongmap;
mapqiehuan=1;
qiehuan=0;
if((lian+6+reny)/24==19&&(hang+renx)/24==10){
lian=10*24-6;
hang=14*24;
}
if((lian+6+reny)/24==9&&(hang+renx)/24==28){
lian=5*24-6;
hang=24*24;
}
}
}
if(mapqiehuan==3&&qiehuan==4){
if(map[(lian+6+reny)/24][(hang+renx)/24]==59){
mapImage = 1;
map=huanggongmap;
mapqiehuan=1;
qiehuan=0;
lian=22*24-6;
hang=13*24;
qingnianx=23*24;
qingniany=19*24-6;
funvx=12*24;
funvy=13*24-6;
}
if(map[(lian+6+reny)/24][(hang+renx)/24]==60){
mapImage = 1;
map=huanggongmap;
mapqiehuan=1;
qiehuan=0;
lian=22*24-6;
hang=14*24;
qingnianx=23*24;
qingniany=19*24-6;
funvx=12*24;
funvy=13*24-6;
}
if(map[(lian+6+reny)/24][(hang+renx)/24]==45){
shenyin.logo(2);
mapImage = 4;
map=chengwaimap;
mapqiehuan=4;
qiehuan=0;
lian=31*24-6;
hang=22*24;
row=1;
}
}
if(mapqiehuan==4&&qiehuan==4){
if(map[(lian+6+reny)/24][(hang+renx)/24]==47){
shenyin.logo(2);
mapImage = 3;
map=chengneimap;
mapqiehuan=3;
qiehuan=0;
lian=21*24-6;
hang=0*24;
row=3;
}
if(map[(lian+6+reny)/24][(hang+renx)/24]==48){
shenyin.logo(2);
mapImage = 3;
map=chengneimap;
mapqiehuan=3;
qiehuan=0;
lian=21*24-6;
hang=0*24;
row=3;
}
}
}
//检测主角是否与NPC发生碰撞并对话
public void duihuahuan(){
switch(mapqiehuan){
case 1:
if(Nshiwei.RENpengzhuang1(hang+renx,lian+reny,shiweix,shiweiy,row,24)&&move==5){huan=1;break;}
if(Nshiwei1.RENpengzhuang1(hang+renx,lian+reny,shiwei1x,shiwei1y,row,24)&&move==5){huan=2;break;}
if(Nqingnian.RENpengzhuang1(hang+renx,lian+reny,qingnianx,qingniany,row,24)&&move==5){huan=3;break;}
if(Nfunv.RENpengzhuang1(hang+renx,lian+reny,funvx,funvy,row,24)&&move==5){huan=4;break;}
break;
case 2:
if(Nguowang.RENpengzhuang1(hang+renx,lian+reny,guowangx,guowangy,row,24)&&move==5){huan=5;break;}
if(Ndachen.RENpengzhuang1(hang+renx,lian+reny,dachenx,dacheny,row,24)&&move==5){huan=6;break;}
break;
case 3:
if(Nqingnian.RENpengzhuang1(hang+renx,lian+reny,qingnianx,qingniany,row,24)&&move==5){huan=7;break;}
if(Nfunv.RENpengzhuang1(hang+renx,lian+reny,funvx,funvy,row,24)&&move==5){huan=8;break;}
if(npc.RENpengzhuang1(hang+renx,lian+reny,lvdianx,lvdiany,row,48)&&move==5){huan=9;break;}
if(npc.RENpengzhuang1(hang+renx,lian+reny,daojudianx,daojudiany,row,48)&&move==5){huan=10;break;}
if(npc.RENpengzhuang1(hang+renx,lian+reny,wuqidianx,wuqidiany,row,48)&&move==5){huan=11;break;}
if(npc.RENpengzhuang1(hang+renx,lian+reny,fangjudianx,fangjudiany,row,48)&&move==5){huan=12;break;}
break;
}
}
//检测主角是否与NPC发生碰撞
public void RenpengzhuangNPC(){
switch(mapqiehuan){
case 1:
if (Nshiwei.RENpengzhuang(hang+renx,lian+reny)||Nshiwei1.RENpengzhuang(hang+renx,lian+reny)||Nqingnian.RENpengzhuang(hang+renx,lian+reny)||Nfunv.RENpengzhuang(hang+renx,lian+reny)) {
hang=xx;
lian=yy;
}
NPCpengzhuang(1,qingnianx,qingniany,NPCrow);
NPCpengzhuang(2,funvx,funvy,NPCrow1);
break;
case 2:
if (Nguowang.RENpengzhuang(hang+renx,lian+reny)||Ndachen.RENpengzhuang(hang+renx,lian+reny)) {
hang=xx;
lian=yy;
}
break;
case 3:
if (Nqingnian.RENpengzhuang(hang+renx,lian+reny)||Nfunv.RENpengzhuang(hang+renx,lian+reny)) {
hang=xx;
lian=yy;
}
NPCpengzhuang(1,qingnianx,qingniany,NPCrow);
NPCpengzhuang(2,funvx,funvy,NPCrow1);
break;
}
}
//检测主角是否与图片发生了碰撞
public void Tupengzhuang(){
if(move==1||move==3){
if(mapqiehuan!=4&&npc.pengzhuang(map,hang,lian,renx,reny)||mapqiehuan==4&&npc.pengzhuang3(map,hang,lian,renx,reny)){
hang=xx;
lian=yy;
}
}
if(move==2||move==4){
if(mapqiehuan!=4&&npc.pengzhuang1(map,hang,lian,renx,reny)||mapqiehuan==4&&npc.pengzhuang4(map,hang,lian,renx,reny)){
hang=xx;
lian=yy;
}
}
}
//主角与所有NPC以及商店对话的切换
public boolean duihuaqiehuan(){
boolean qiehuan=false;
while(qiehuan==false){
if(mapqiehuan==5){
if(duihuajixu==1&&biaoy==200){
biaox=3*24+12+10;
biaoy=8*24+10;
duihuajixu=2;
qiehuan=true;break;
}
if(duihuajixu==1&&biaoy==220){
duihuajixu=5;
biaox=12+10;
biaoy=8*24+8;
qiehuan=true;break;
}
if(duihuajixu==1&&biaoy==240){
duihuajixu=6;
biaox=12+10;
biaoy=8*24+8;
qiehuan=true;break;
}
if(duihuajixu==1&&biaoy==260){
duihuajixu=10;
zhandouduihua=40;
qiehuan=true;break;
}
if(duihuajixu==2){
duihuajixu=3;
qiehuan=true;break;
}
if(duihuajixu==10&&zhandouduihua==27){
zhuangtai.chushi();
zhandouduihua=28;
jishuqi=0;
qiehuan=true;break;
}
if(duihuajixu==10&&zhandouduihua==28){
jishuqi=0;
mapqiehuan=4;
yudile=2;
zhandoujixu=0;
zhandouduihua=100;
shenyin.over();
shenyin.logo(3);
qiehuan=true;break;
}
if(duihuajixu == 10 && zhandouduihua == 31){
mapqiehuan = 0;
shenyin.over();
shenyin.logo(1);
logoy = 79;
zhuangtai.over = 0;
zhuangtai.chushi();
over();
zhuangtai.heipin = false;
qiehuan=true;break;
}
qiehuan=true;break;
}
if(mapqiehuan != 5){
if(anjianpanduan){
qiehuan=true;break;
}
if(duihuakuang==11||duihuakuang==12||duihuakuang==13){
if(biaoy==53&&duihuajixu==0){
zhuangtai.chushi();
duihuajixu=1;biaox=12+10;biaoy=12+10;qiehuan=true;break;
}
if(biaoy==73&&duihuajixu==0){
zhuangtai.chushi();
duihuajixu=2;biaox=5*24+27;biaoy=12+9;
zhuangtai.goumai(biaoy,biaoyy,duihuakuang,duihuajixu);
qiehuan=true;break;
}
if(biaoy==93&&duihuajixu==0){
zhuangtai.chushi();
duihuajixu=3;
qiehuan=true;break;
}
if(duihuajixu==1){
zhuangtai.chushi();
zhuangtai.goumai(biaoy,biaoyy,duihuakuang,duihuajixu);
biaox=144+10;biaoy=48+15;duihuajixu=4;
qiehuan=true;break;
}
if(duihuajixu==2){
zhuangtai.chushi();
biaoyy=biaoy;
zhuangtai.goumai(biaoy,biaoyy,duihuakuang,duihuajixu);
biaox=144+10;biaoy=48+15;duihuajixu=8;
qiehuan=true;break;
}
if(duihuajixu==8){
if(biaoy==63){
zhuangtai.chushi();
zhuangtai.goumai(biaoy,biaoyy,duihuakuang,duihuajixu);
duihuajixu=9;
qiehuan=true;break;
}
if(biaoy==88){zhuangtai.chushi();duihuajixu=3;qiehuan=true;break;}
qiehuan=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -