⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jcanvas.java

📁 RPG游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
					 				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 + -