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

📄 gamecanvas.java

📁 游戏功能包括:购买、对话、战斗及存储功能
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	int addMedicineValue = 0;
	int tempLifeValue = 0;							//加生命值
	int tempPowerValue = 0;							//加气值
	//绘制加药值的状态显示
	private void drawAddMedicineState(Graphics g){
		width = 168;
		high = 177;
		g.setClip(width-fight_outcol*16,high-fight_outrow*16,50,15);
		g.setFont(font);
		if(addMedicineValue==1){
			g.setColor(0xff0000);
			g.drawString("生命 +"+tempLifeValue,width-fight_outcol*16+25,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
		}
		else if(addMedicineValue==2){
			g.setColor(0x0000ff);
			g.drawString("气功 +"+tempPowerValue,width-fight_outcol*16+25,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
		}
	}
	
	//绘制战斗结束状态显示
	private void drawFightOver(Graphics g){
		g.setClip(w/2-53,h/2-33,106,66);
		g.setColor(0x000000);
		g.fillRect(w/2-53,h/2-33,106,66);
		g.setColor(0x494949);
		g.fillRect(w/2-50,h/2-30,100,60);
		g.setColor(0xffff00);
		g.setFont(font);
		if(overEvent==1){
			g.drawString("获得经验  "+tExp,w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
			g.drawString("获得金钱  "+tMoney,w/2,h/2+5,Graphics.TOP|Graphics.HCENTER);
		}
		else if(overEvent==2){
			g.drawString("恭喜您,升级了",w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
			g.drawString("当前等级  "+pLevel+"级",w/2,h/2+5,Graphics.TOP|Graphics.HCENTER);
		}
		else if(overEvent==3){
			g.setFont(font1);
			g.drawString("G A M E",w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
			g.drawString("O V E R"+tMoney,w/2,h/2+5,Graphics.TOP|Graphics.HCENTER);
		}
	}
	
	//绘制游戏初始进度条
	private void drawWin(Graphics g){
		g.setColor(0x000000);
		g.fillRect(0,0,w,h);
		g.setColor(0xffff00);
		g.drawString("第"+(checkPoint+1)+"层山",w/2,h/4,Graphics.TOP|Graphics.HCENTER);
		g.drawString("资源装载中......"+loadNum+"%",w/2,h/2-22,Graphics.TOP|Graphics.HCENTER);
		g.setClip(w/2-53,h/2-4,106,8);
		g.setColor(0x0000ff);
		g.fillRect(w/2-53,h/2-4,106,8);
		g.setColor(0x494949);
		g.fillRect(w/2-50,h/2-2,100,4);
		g.setClip(w/2-50,h/2-2,loadNum,4);
		g.setColor(0xff0000);
		g.fillRect(w/2-50,h/2-2,loadNum,4);
	}
	
	//绘制游戏进程暂停状态
	String[] pauseMenu = {"返回游戏","退    出"};
	private void drawPauseState(Graphics g){
		g.setClip(w/2-40,h/2-23,80,46);
		g.setColor(0x000000);
		g.fillRect(w/2-40,h/2-23,80,46);
		g.setColor(0x494949);
		for(int i=0;i<2;i++)
			g.fillRect(w/2-38,(h/2-21)+i*22,76,20);
		g.setColor(0xffff00);
		for(int i=0;i<2;i++){
			if(select==i)
				g.setColor(0xff0000);
			else
				g.setColor(0xffff00);
			g.drawString(pauseMenu[i],w/2,(h/2-20)+i*22,Graphics.TOP|Graphics.HCENTER);
		}
	}
	
	//绘制游戏通关后的介绍
	String[] gameOverInfo = {
			"       战斗结束了,天魔山从此恢复了和平与安宁,",
			"村民们也得到了自由。干将几经沙场终于将",
			"妻子莫邪从魔爪中救出生天。可是......",
			"天下妖魔众多,单靠个人力量却无法斩除妖",
			"孽,干将与莫邪心意相通,决定开杂货铺(",
			"开个玩笑),是兵器铺。二人决定要为世上",
			"英雄铸造神兵利器,以天下人的力量来铲除",
			"邪魔歪道。几年之久,干将莫邪共同铸造了",
			"无数的绝世兵器,成为天下人的英雄!"
	};
	private void drawGameOver(Graphics g){
		g.setColor(0x000000);
		g.fillRect(10,h/2-100,220,200);
		g.setColor(0x505155);
		g.fillRect(12,h/2-70,216,140);
		g.setColor(0xffff00);
		g.setFont(font);
		g.setClip(12,h/2-70,216,140);
		for(int i=0;i<9;i++){
			g.drawString(gameOverInfo[i],15,infoY+i*20,20);
		}
	}
	
	/***************按键状态及触发***************/
	private boolean gameSelect = false;	//游戏进程开关
	int keyState = 0;					//按键状态
	private final int GAME_UP = 1;
	private final int GAME_DOWN = 2;
	private final int GAME_LEFT = 4;
	private final int GAME_RIGHT = 8;
	private final int GAME_FIRE = 16;
	public void keyPressed(int keyCode){
		int key = getGameAction(keyCode);
		switch(key){
		case UP:
			keyState |= GAME_UP;
			break;
		case DOWN:
			keyState |= GAME_DOWN;
			break;
		case LEFT:
			keyState |= GAME_LEFT;
			if(buy==true){
				subtract = true;
			}
			break;
		case RIGHT:
			keyState |= GAME_RIGHT;
			if(buy==true){
				add = true;
			}
			break;
		case FIRE:
			keyState |= GAME_FIRE;
			break;
		}
		if(keyCode==-6){
			if(screenState==1){
				if(function==false){
					function = true;
					fightState = 0;
					change = 0;
					viewState = 0;
					select = 0;
				}
				else{
					if(prow<=36&&prow>9){	
						fightState = 1;
					}
					function = false;
					select = 0;
				}
			}
		}
		if(keyCode==-7){
			if(screenState==0){
				if(infoStart==true){
					if(infomation==2){
						if(infoY>h/2-124){
							infoY = h/2-124;
						}
						else if(infoY==h/2-124){
							infoStart = false;
							infoY = h/2+72;
						}
					}
					else if(infomation==3){
						infoStart = false;
					}
				}
			}
			else if(screenState==1){
				gameSelect = true;
				canGoState = false;
				select = 0;
			}
			if(gameOver==true){
				if(infoY>h/2-104){
					infoY = h/2-104;
				}
				else if(infoY==h/2-104){
					gameOver = false;
					infoY = h/2+72;
				}
			}
		}
	}
	
	public void keyReleased(int keyCode){
		int key = getGameAction(keyCode);
		switch(key){
		case UP:
			keyState -= GAME_UP;
			pFount = 2;
			pFrame = 0;
			break;
		case DOWN:
			keyState -= GAME_DOWN;
			pFount = 0;
			pFrame = 0;
			break;
		case LEFT:
			keyState -= GAME_LEFT;
			pFount = 1;
			pFrame = 0;
			if(buy==true){
				subtract = false;
			}
			break;
		case RIGHT:
			keyState -= GAME_RIGHT;
			pFount = 3;
			pFrame = 0;
			if(buy==true){
				add = false;
			}
			break;
		case FIRE:
			keyState -= GAME_FIRE;
			break;
		}
	}
	
	/**********方法集合**********/
	//移动方法上
	private void moveUP(){
		if(talk==false&&buy==false&&function==false){
			if(pFount==2){
				if(pFrame<3)
					pFrame++;
				if(pFrame==3)
					pFrame = 0;
				if(prow-outrow>9||outrow==0){
					if(prow>0){
						if(MyMap_collides[prow][pcol]==1||MyMap_collides[prow][pcol+1]==1){
							
						}
						else{
							prow--;
						}		
					}
				}
				else{
					if(MyMap_collides[prow][pcol]==1||MyMap_collides[prow][pcol+1]==1){
						
					}
					else{
						prow--;
						outrow--;		
					}
				}
				switch(prow){
				case 57:
					placeState = true;
					placeChange = 1;
					break;			
				case 36:
					placeState = true;
					placeChange = 2;
					break;	
				case 9:
					if(pcol>7&&pcol<12){
						placeState = true;
						placeChange = 3;
					}
					break;
				}
				if(prow<57&&prow>36){
					fightState = 0;
				}
				else if(prow<=36&&prow>9){
					fightState = 1;
				}
				else if(prow<=9){
					if(MyMap_collides[prow][pcol]==2){
						canGoState = false;
						fightState = 2;
					}
					else{
						if(canGoState==true){
							fightState = 1;
						}
					}
					if(MyMap_collides[prow][pcol]==6){
						loadOver = false;
						screenState = -2;
						prow = 58;
						pcol = 4;
						pfrow = 12;
						pfcol = 11;
						outrow = 42;
						outcol = 0;
						cun_X = 57;
						cun_Y = 15;
						fang_X = 42;
						fang_Y = 15;
						medicine_X = 28;
						medicine_Y = 18;
						talkNum = -1;
						buyTalk = -1;
						fightState = 0;
						recordState = 0;
						talkState = 0;
						fightTime = 0;
						chooseEnd = 0;			//攻击状态按钮选择效果
						select = 0;
						infoY = h/2+72;
						for(int i=8;i<11;i++){
							MyMap_collides[9][i]=2;
						}
						checkPoint++;
						if(checkPoint==7){
							gameOver = true;
						}
					}
				}
			}
			else{
				pFount = 2;
				pFrame = 0;
			}
		}
		else if(talk==true){			//对话状态打开
			if(talkState==2||talkState==3){
				if(buyTalk==1){
					if(select>0)
						select--;
				}
			}
		}
		else if(buy==true){				//买卖状态打开
			if(change==0){
				change = 2;
				select = 0;
			}
			else if(change==1){
				if(viewState==0){
					if(select1>-1)
						select1--;
						if(select1==-1){
							change = 0;
							select = 0;
						}
				}
				else if(viewState==1){
					if(v.size()+v1.size()<10){
						if(select1>-1)
							select1--;
							if(select1==-1){
								change = 0;
								select = 1;
							}
					}
					else{
						if(select1>-1){
							select1--;
							if(select1<0){
								select1 = 0;
								dy--;
							}
							if(select1==-dy-1){
								dy = 0;
								change = 0;
								select = 1;
							}
						}
					}
				}
			}
			else if(change==2){
				if(viewState==0){
					change = 1;
					select1 = 3;

				}
				else if(viewState==1){
					if(v.s

⌨️ 快捷键说明

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