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

📄 gamecanvas.java

📁 游戏功能包括:购买、对话、战斗及存储功能
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					}
					else if(select==1){
						if(viewState==0||viewState==1||viewState==3){
							g.drawString("不 能 使 用",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
						}
						else if(viewState==2){
							if(v1.size()==0){
								g.drawString("无可用道具",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
							}
							else{
								g.drawString("请选择道具",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
							}
						}
					}
					else if(select==2){
						if(viewState==0||viewState==1||viewState==2||viewState==3){
							g.drawString("不 能 撤 消",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
						}
					}
				}
			}
			else if(selected==true){
				g.setColor(0xffff00);
				g.setFont(font1);
				if(change==1){
					if(viewState==3){
						g.setColor(0x000000);
						g.fillRect(w/2-28,h/2-47,56,95);
						g.setColor(0x494949);
						for(int i=0;i<4;i++){
							g.fillRect(w/2-25,h/2-43+i*23,50,20);
						}
						for(int i=0;i<4;i++){
							if(select2==i)
								g.setColor(0xff0000);
							else
								g.setColor(0xffff00);
							g.drawString(info[i+8],w/2,h/2-42+i*23,Graphics.TOP|Graphics.HCENTER);
						}
					}	
				}
			}	
		}
	}
	/***************绘制地图地点的变换***************/
	private void drawPlaceChange(Graphics g){
		g.setClip(w/2-50,h-72,100,40);
		g.setColor(0x000000);
		g.fillRect(w/2-50,h-72,100,40);
		g.setColor(0x494949);
		g.fillRect(w/2-47,h-69,94,34);
		g.setColor(0xffff00);
		g.setFont(font1);
		switch(placeChange){
		case 1:
			g.drawString(place[checkPoint][placeChange-1],w/2,h-64,Graphics.TOP|Graphics.HCENTER);
			break;
		case 2:
			g.drawString(place[checkPoint][placeChange-1],w/2,h-64,Graphics.TOP|Graphics.HCENTER);
			break;
		case 3:
			g.drawString(place[checkPoint][placeChange-1],w/2,h-64,Graphics.TOP|Graphics.HCENTER);
			break;
		}
	}
	
	/***************绘制人物战斗场景及动画***************/
	//绘制战斗地图
	private int fight_outrow = 0,fight_outcol = 0;
	private final byte fight_map[][] = {
			{ 13, 2,  2,  2,  2,  2,  2,  2,  75, 76, 2,  2,  2,  2,  2 },
			{ 13, 13, 2,  2,  2,  3,  4,  2,  87, 88, 2,  2,  7,  8,  2 },
			{ 13, 13, 13, 2,  2,  15, 16, 2,  2,  2,  2,  2,  19, 20, 2 },
			{ 2,  13, 13, 74, 2,  2,  2,  5,  6,  2,  3,  4,  2,  2,  2 },
			{ 2,  2,  13, 13, 13, 2,  2,  17, 18, 2,  15, 16, 2,  2,  2 },
			{ 2,  2,  2,  13, 74, 13, 2,  3,  4,  2,  2,  2,  2,  7,  8 },
			{ 2,  2,  2,  2,  73, 13, 13, 15, 16, 49, 50, 2,  2,  19, 20 },
			{ 2,  2,  2,  2,  2,  13, 13, 13, 2,  61, 62, 2,  2,  2,  2 },
			{ 2,  2,  2,  5,  6,  2,  74, 13, 73, 2,  2,  5,  6,  2,  2 },
			{ 2,  2,  2,  17, 18, 2,  2,  13, 13, 13, 2,  17, 18, 2,  2 },
			{ 2,  2,  2,  2,  2,  2,  75, 76, 13, 74, 13, 2,  2,  2,  2 },
			{ 2,  2,  2,  2,  2,  2,  87, 88, 2,  13, 73, 13, 2,  2,  2 },
			{ 2,  2,  2,  49, 50, 2,  3,  4,  2,  2,  13, 13, 74, 2,  2 },
			{ 2,  2,  2,  61, 62, 2,  15, 16, 2,  3,  4,  13, 13, 13, 2 },
			{ 2,  3,  4,  2,  2,  2,  2,  2,  2,  15, 16, 2,  13, 13, 13 },
			{ 2,  15, 16, 2,  2,  7,  8,  2,  2,  2,  2,  2,  2,  13, 13 },
			{ 2,  2,  2,  2,  2,  19, 20, 2,  2,  2,  2,  2,  2,  2,  13 },
			{ 2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2 }
	};
	private void drawFightMap(Graphics g){
		int tempx = 0,tempy = 0;
		for(int i=fight_outrow;i<fight_outrow+18;i++){
			for(int j=fight_outcol;j<fight_outcol+15;j++){
				g.setClip((j-fight_outcol)*16,(i-fight_outrow)*16,16,16);
				if(fight_map[i][j]!=0){
					tempx = (j-fight_outcol)*16-(fight_map[i][j]-1)%12*16;
					tempy = (i-fight_outrow)*16-(fight_map[i][j]-1)/12*16;
					g.drawImage(map,tempx,tempy,20);
				}		
			}
		}
	}
	
    //绘制战斗的NPC
	private int[] nfrow = {3,3,3};
	private int[] nfcol = {6,6,6};
	private void drawFightNpc(Graphics g){
		for(int i=0;i<v2.size();i++){
			g.setClip((nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16,(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,32,48);
			int[] item = (int[])v2.elementAt(i);
			if(item[2]<=0){
				if(item[7]==0)
					g.drawRGB(npc1_shadowRgbImage,0,imgWidth[0],(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
							(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,imgWidth[0],imgHeight[0],true);
				else if(item[7]==1)
					g.drawRGB(npc2_shadowRgbImage,0,imgWidth[1],(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
							(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,imgWidth[1],imgHeight[1],true);
				else if(item[7]==2)
					g.drawRGB(boss_shadowRgbImage,0,imgWidth[2],(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
							(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,imgWidth[2],imgHeight[2],true);
			}
			else{
				if(item[7]==0)
					g.drawImage(npc1,(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
							(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,20);
				else if(item[7]==1)
					g.drawImage(npc2,(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
							(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,20);
				else if(item[7]==2)
					g.drawImage(boss,(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
							(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,20);
			}
		}
	}
	
	//绘制PLAYER
	private int pfightFrame = 0;				//战斗状态桢变化
	private int pfrow = 0,pfcol = 0;		//战斗状态player初始位置
	private void drawFightPlayer(Graphics g){
		g.setClip((pfcol-fight_outcol)*16,(pfrow-fight_outrow)*16,32,48);
		g.drawRGB(player_shadowRgbImage,0,imgWidth[3],(pfcol-fight_outcol)*16-pfightFrame*32,
				(pfrow-fight_outrow)*16,imgWidth[3],imgHeight[3],true);
	}
	
	//绘制战斗界面控制菜单
	String[] fightMenu = {"气杀","攻击","道具","防御","撤退"};
	private int blueValue = 0;			//蓝色气条值
	private void drawFightMenu(Graphics g){
		g.setClip(10,h-78,137,40);
		g.setColor(0x000000);
		g.fillRect(10,h-78,137,40);
		g.setColor(0x505155);
		g.fillRect(12,h-76,133,36);
		g.drawImage(player_head,13,h-75,20);
		g.setColor(0xffff00);
		g.setFont(font);
		g.drawString("生命    "+current_pLifeValue+"/"+max_pLifeValue,38,h-75,20);
		g.drawString("气功    "+current_pPower+"/"+max_pPower,38,h-55,20);
		
		g.setClip(10,h-40,137,17);
		g.setColor(0x000000);
		g.fillRect(10,h-40,137,17);
		g.setColor(0x505155);
		for(int i=0;i<5;i++){
			g.fillRect(12+i*27,h-38,25,13);
		}
		for(int i=0;i<5;i++){
			if(select4==i)
				g.setColor(0xff0000);
			else
				g.setColor(0xffff00);
			g.drawString(fightMenu[i],24+i*27,h-39,Graphics.TOP|Graphics.HCENTER);
		}
		
		g.setClip(10,h-25,137,9);
		g.setColor(0x000000);
		g.fillRect(10,h-25,137,9);
		g.setColor(0x505155);
		g.fillRect(12,h-23,133,5);
		g.setClip(12,h-23,blueValue,5);
		g.setColor(0x7777fe);		//蓝色条颜色
		g.fillRect(12,h-23,blueValue,5);
	}
	
    //绘制战斗时选择箭头
	private int selectX = 2,selectY = 6;
	private void drawFightSelect(Graphics g){
		int x1=0,y1=0,x2=0,y2=0,x3=0,y3=0;
		for(int i=0;i<v2.size();i++){
			g.setClip(selectY*16+8-((v2.size()-1)*2-i*4-fight_outcol)*16,selectX*16+((v2.size()-1)-i-fight_outrow)*16-16,16,16);
			g.setColor(0x00ff00);
			if(select5==i){
				int[] item = (int[])v2.elementAt(i);
				if(item[2]>0){
					x1 = selectX*16+((v2.size()-1)-i-fight_outrow)*16;
					y1 = selectY*16+16-((v2.size()-1)*2-i*4-fight_outcol)*16;
					x2 = x1-16;
					y2 = y1-8;
					x3 = x1-16;
					y3 = y1+8;	
					g.fillTriangle(y1,x1,y2,x2,y3,x3);
				}
			}
		}
	}
	
	//绘制战斗时的状态显示
	int lifeValue = 0;
	int width = 0,high = 0;
	
	//绘制被攻击时的状态
	private void drawIsAttackedState(Graphics g){
		if(fightTime==0){
			width = 92;
			high = 33;
			for(int i=0;i<v2.size();i++){
				g.setClip(width-((v2.size()-1)*2-i*4+fight_outcol)*16,high+((v2.size()-1)-i-fight_outrow)*16,30,15);
				if(select5==i){
					g.setColor(0xff0000);
					g.setFont(font);
					g.drawString("- "+lifeValue,width-((v2.size()-1)*2-i*4+fight_outcol)*16+15,high+((v2.size()-1)-i-fight_outrow)*16,Graphics.TOP|Graphics.HCENTER);			
				}
			}
		}
		else if(fightTime==1){
			width = 172;
			high = 177;
			g.setClip(width-fight_outcol*16,high-fight_outrow*16,30,15);
			g.setColor(0xff0000);
			g.setFont(font);
			g.drawString("- "+lifeValue,width-fight_outcol*16+15,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);						
		}
	}
	
	//绘制躲闪时的状态
	private void drawUnAttackedState(Graphics g){
		if(fightTime==0){
			width = 92;
			high = 33;
			for(int i=0;i<v2.size();i++){
				g.setClip(width-((v2.size()-1)*2-i*4+fight_outcol)*16,high+((v2.size()-1)-i-fight_outrow)*16,30,15);
				if(select5==i){
					g.setColor(0xff0000);
					g.setFont(font);
					g.drawString("闪避",width-((v2.size()-1)*2-i*4+fight_outcol)*16+15,high+((v2.size()-1)-i-fight_outrow)*16,Graphics.TOP|Graphics.HCENTER);			
				}
			}
		}
		else if(fightTime==1){
			width = 172;
			high = 177;
			g.setClip(width-fight_outcol*16,high-fight_outrow*16,30,15);
			g.setColor(0xff0000);
			g.setFont(font);
			g.drawString("闪避",width-fight_outcol*16+15,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);			
		}
	}
	
	//绘制战斗时选择按钮的状态
	int tempDefense = 0;					//加防御值
	private void drawChooseState(Graphics g){
		if(chooseEnd==1){
			g.setClip(w/2-48,h/2-18,96,36);
			g.setColor(0x000000);
			g.fillRect(w/2-48,h/2-18,96,36);
			g.setColor(0x494949);
			g.fillRect(w/2-45,h/2-15,90,30);
			g.setColor(0xffff00);
			g.setFont(font);
			g.drawString("气 值 不 够",w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
			g.drawString("不 能 攻 击",w/2,h/2+1,Graphics.TOP|Graphics.HCENTER);
		}
		else if(chooseEnd==2){
			g.setClip(10,10,220,269);
			g.setColor(0x000000);
			g.fillRect(10,10,220,269);
			g.setColor(0x505155);
			g.fillRect(12,12,216,265);
			g.setColor(0x0bb53f);
			g.drawRect(14,15,50,20);
			g.drawRect(15,40,210,209);
			g.drawLine(15,60,225,60);
			g.drawLine(157,40,157,249);
			for(int i=0;i<2;i++){
				g.drawRect(14+i*54,254,50,20);
			}
			g.setColor(0xffff00);
			g.setFont(font1);
			g.drawString(info[2],39,16,Graphics.TOP|Graphics.HCENTER);
			g.drawString(str[2],86,41,Graphics.TOP|Graphics.HCENTER);
			g.drawString(str[4],190,41,Graphics.TOP|Graphics.HCENTER);
			g.setColor(0xffff00);
			g.setFont(font1);
			for(int i=0;i<2;i++){
				if(change==4){
					if(select6==i)
						g.setColor(0xff0000);
					else
						g.setColor(0xffff00);
				}
				g.drawString(info[i*2+5],39+i*54,255,Graphics.TOP|Graphics.HCENTER);
			}
			g.setClip(15,60,211,189);
			g.setColor(0xffff00);
			for(int i=0;i<v1.size();i++){
				String[] data = (String[])v1.elementAt(i);
				if(selected==false){
					if(change==3){
						if(select5==i-dy)
							g.setColor(0xff0000);
						else
							g.setColor(0xffff00);
					}
				}
				else{
					g.setColor(0xff0000);
					g.drawRect(15,60+select5*20,210,20);
					g.setColor(0xffff00);
				}
				g.setFont(font1);	
				g.drawString(data[0],86,61+(i-dy)*20,Graphics.TOP|Graphics.HCENTER);
				g.drawString(data[3],190,61+(i-dy)*20,Graphics.TOP|Graphics.HCENTER);
			}
			
			if(change==3){
				g.setColor(0xff0000);
				g.drawRect(15,60+select5*20,210,20);
			}
			else if(change==4){
				g.setColor(0xff0000);
				g.drawRect(14+select6*54,254,50,20);
			}
		}
		else if(chooseEnd==3){
			width = 168;
			high = 177;
			g.setClip(width-fight_outcol*16,high-fight_outrow*16,50,15);
			g.setColor(0xffff00);
			g.setFont(font);
			g.drawString("防御 +"+tempDefense,width-fight_outcol*16+25,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
		}
		else if(chooseEnd==4){
			g.setClip(w/2-48,h/2-18,96,36);
			g.setColor(0x000000);
			g.fillRect(w/2-48,h/2-18,96,36);
			g.setColor(0x494949);
			g.fillRect(w/2-45,h/2-15,90,30);
			g.setColor(0xffff00);
			g.setFont(font);
			g.drawString("逃 跑 失 败",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
		}
		else if(chooseEnd==5){
			g.setClip(w/2-48,h/2-18,96,36);
			g.setColor(0x000000);
			g.fillRect(w/2-48,h/2-18,96,36);
			g.setColor(0x494949);
			g.fillRect(w/2-45,h/2-15,90,30);
			g.setColor(0xffff00);
			g.setFont(font);
			g.drawString("不 能 逃 跑",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
		}
	}
	
	//绘制可用物品状态触发器
	int unUse = 0;			//没有被选择的状态
	private void drawUseState(Graphics g){
		g.setClip(w/2-48,h/2-18,96,36);
		g.setColor(0x000000);
		g.fillRect(w/2-48,h/2-18,96,36);
		g.setColor(0x494949);
		g.fillRect(w/2-45,h/2-15,90,30);
		g.setColor(0xffff00);
		g.setFont(font1);
		if(unUse==1){
			g.drawString("无可使用道具",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
		}
		else if(unUse==2){
			g.drawString("请选择物品",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
		}
	}
	
	private boolean addMedicineState = false;		//是否使用药品状态

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -