/*<applet code="applet12.class"width="500"height="470"></applet>*/

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.applet.AudioClip;


 public class applet12 extends Applet implements Runnable,KeyListener{
	
	AudioClip mySound01,mySound02,mySound03,mySound04,mySound05;
	String str;
	int scene;
    int a,b,x,y;//HP、選択枠
	int g,t,k;//攻撃関係
	int s=0;//歩数
	int p;//エンカウント
	int boxA;//箱
	int kekkaA;//箱結果
	int mimikkuHP;//ミミックHP
	boolean boxB;
	int BOSSHP;//BOSSHP
	int idouA;//勝利時の文字変数
	int Gold; //ゴールド
	
	Image img,img2,img3,img4;
	Image img5,img6,img7,img8,img9,img10,img11,img12,img13;
	Thread th;
	boolean box,test,syouri,nigeru,boxmozi,mozi,kekka,idou;
	
	boolean KeyEnter,keyUP,keyDOWN,keyZ,keyRight,keyLeft;

	
	Graphics gv;
	Image offImage;
	
	
	
	public void init(){
			
		mySound01=getAudioClip(getCodeBase(),"comand.wav");
		mySound02=getAudioClip(getCodeBase(),"bgm01.wav");
		mySound03=getAudioClip(getCodeBase(),"mimikku.wav");
		mySound04=getAudioClip(getCodeBase(),"firudo.wav");
		mySound05=getAudioClip(getCodeBase(),"BOSS.wav");
		a=380;
		s=0;
		b=365;
		x=100;//味方HP
		y=300;//敵HP
		boxA=0;//箱
		boxB=false;//ミミック戦闘切り替え
		mimikkuHP=350;//ミミックＨＰ
		BOSSHP=450;//BOSSHP
		Gold=0;
		idouA=0;
		
		offImage=createImage(500,470);
		gv=offImage.getGraphics();
		
		kekka=false;
		mozi=false;
		boxmozi=false;
		KeyEnter=false;
		idou=false;
		scene=1;
		box=false;
		keyUP=false;
		keyDOWN=false;
		keyZ=false;
		keyRight=false;
		keyLeft=false;
		img2=getImage(getDocumentBase(),"sentouhaikei1.jpg");//背景画像
		img=getImage(getDocumentBase(),"kyubi.gif");//敵画像
		img3=getImage(getDocumentBase(),"fi-rudo.jpg");//フィールド画像
	    img8=getImage(getDocumentBase(),"fi-rudo2.jpg");//フィールド画像
		img9=getImage(getDocumentBase(),"fi-rudo3.jpg");//フィールド画像
	    img4=getImage(getDocumentBase(),"jaiaso.GIF");//ゲームオーバー画像
		img5=getImage(getDocumentBase(),"box.png");//フィールド宝箱
	    img6=getImage(getDocumentBase(),"title.jpg");//タイトル画像
	    img7=getImage(getDocumentBase(),"mimikku.png");//ミミック画像
		img10=getImage(getDocumentBase(),"BOSS.png");//BOSS画像
		img11=getImage(getDocumentBase(),"gate000.jpg");//BOSS戦闘背景画像
		img12=getImage(getDocumentBase(),"kuria.jpg");//クリア画面
		img13=getImage(getDocumentBase(),"tekiEND.png");//敵を倒した
		addKeyListener(this);
			
				
	}

	
	void soud_COMAND(){
		mySound01.play();
	}
	
	void soud_BGM(){
		mySound02.loop();
	}
	
	void soud_BGM2(){
		mySound03.loop();
	}
	
	void soud_BGM3(){
		mySound04.loop();
	}
	
	void soud_BGM4(){
		mySound05.loop();
	}
	
	
	public void start()
	{
		if(th==null){
		
		th=new Thread(this);
		th.start();
		}
	}
	
	
	public void run(){
		while(th==Thread.currentThread()){
			switch(scene){
				case 1:gameTitle();break;
				case 2:gameMain();break;
				case 3:gameMain2();break;
				case 4:gameMain3();break;
				case 5:gameMain4();break;
				case 6:gameOver();break;
				case 7:gameClear();break;
				
			}
			try
			{
			
				
				Thread.sleep(100);
			}
			catch(InterruptedException e){
			break;
			}
			
			
		}
	
	}
	public void system(){
			
	}
	
	 void gameTitle(){
		str="";
	if(scene==1){
					
					if(KeyEnter){
						scene=2;
						mySound04.loop();
					}
				}
	}
	
	void gameMain(){
		syouri=false;
		
		
		
		if(box==true){
			idou=true;
		}
			mySound02.stop();//BGMストップ
			mySound03.stop();//BGMストップ
		
			mySound05.stop();//BGMストップ
	}
	
	void gameMain2(){
			mySound04.stop();//BGMストップ
		
	}
	
	void gameMain3(){
		mySound04.stop();//BGMストップ

	
	}
	void gameMain4(){
			mySound04.stop();//BGMストップ
			
		
	}
	void gameOver(){
			mySound04.stop();//BGMストップ
				mySound05.stop();//BGMストップ
					mySound03.stop();//BGMストップ
	}
	
	void gameClear(){
			mySound04.stop();//BGMストップ
				mySound03.stop();//BGMストップ
					mySound05.stop();//BGMストップ
						mySound02.stop();//BGMストップ
	}
	
//	public void update(Graphics g){
//	  	paint(g);
//	  }
	 public void keyTyped(KeyEvent e){
	 
	 }
	 
	  public void keyPressed(KeyEvent e){
	  		
			switch(e.getKeyCode()){
			
			case KeyEvent.VK_UP:
				keyUP=true;
					
			/////////////フィールド移動//////////////
					if(scene==2){
						
						
				if(keyUP){
					
					if(boxA==0){
						
		        s=s+1;	
				
				if(s>=100){
					mySound05.loop();
					scene=5;
				}
				
				if(s>=100){
					s=100;
				}
				
				if(s<=98){
				int p=(int)(Math.random()*10);
                
				
				System.out.println(p);
						if(p<=1){	
						if(keyUP){
								mySound02.loop();//BGM
							scene=3;
							
						}
							}
							
				if(p>=4&&p<=6){
					
					boxA=1;
			  	boxmozi=true;
				box=true;
				
				}
					}
					}
				}
					}
			//////////////戦闘シーン///////////////////
			if(scene==3){
				
					if(keyUP){
		         soud_COMAND();
				 if(b>365)
				 b=b-40;
				 else
				 b=445;
			}
				
					}
					
			
			if(scene==4){
				
					if(keyUP){
		         soud_COMAND();
				 if(b>365)
				 b=b-40;
				 else
				 b=445;
			}
			
			}
			
			if(scene==5){
				
					if(keyUP){
		         soud_COMAND();
				 if(b>365)
				 b=b-40;
				 else
				 b=445;
			}
			
			}
			///////////////////////////
			break;
				 
			case KeyEvent.VK_DOWN:
				keyDOWN=true;     
				///フィールド移動////
				if(scene==2){
					if(keyDOWN){
					
					if(boxA==0){
		        s=s-1;
					
					if(s<=0){
						s=0;
					}
				
				int p=(int)(Math.random()*10);
				
                
				
				System.out.println(p);
						if(p==4){	
							if(keyDOWN){
							scene=2;
							}
						}
							}
							}
							
				if(p==5){
					boxA=1;
					idou=false;
			  	boxmozi=true;
				box=true;
				
				}
				
				
				}
			///////戦闘シーン//////
				if(scene==3){
					
					
					
					if(keyDOWN){
			     soud_COMAND();
				 if(b<445)
				 b=b+40;
				 else
				 b=365;
			}
			
				}
			if(scene==4){
				
					
					if(keyDOWN){
			     soud_COMAND();
				 if(b<445)
				 b=b+40;
				 else
				 b=365;
			        }
			
				}
				
				if(scene==5){
				
					
					if(keyDOWN){
			     soud_COMAND();
				 if(b<445)
				 b=b+40;
				 else
				 b=365;
			        }
			
				}
			/////////////////////////
			break;
			
	        case KeyEvent.VK_RIGHT:
			keyRight=false;
		////////////フィールド////////////	
			if(scene==2){
				
		if(box==true){
			boxA=boxA+1;
						mozi=true;
						boxmozi=false;
		}
		
		if(boxmozi==false){
			if(boxA==3){
			boxA=0;
			idou=false;
			mozi=false;
			box=false;
			}
		}
			/////////////////////////////////
			}
			
			break;

			case KeyEvent.VK_LEFT:
			keyLeft=false;
			//////////////////////フィールド///////////////////
			if(scene==2){
				if(box==true){
					boxA=boxA+1;
						mozi=true;
						boxmozi=false;
				}
				
	          if(boxmozi==false){
			  	if(boxA==3){
					System.out.println("　"+kekkaA);
			   
			boxA=boxA+1;
			kekka=true;
			mozi=false;
			box=false;
			  	}
		}
		///////////////////////////////////////////////////
			}
			break;
			
			
			case KeyEvent.VK_ENTER:
				KeyEnter=true;
				
				System.out.println("　　　　　"+boxA);
					System.out.println("　　　　　"+boxB);
				//////////フィールド/////////
				
				if(scene==2){
					
					
					
					if(box==true){
						
						boxA=2;
						mozi=true;
						boxmozi=false;
						
						
					}
					
				/*	if(boxmozi==false){
			  	if(boxA==3){
				
			   
			boxA=boxA+1;
			kekka=true;
			mozi=false;
			box=false;
			  	}
					}
					
				/*	if(boxmozi=true){
						boxmozi=false;
						mozi=true;
						
					}*/
					
					
					
					if(mozi==true){
					
						boxA=2;
						
					}
					
					if(kekkaA<=3){
						kekka=false;
						boxA=0;
						
						idou=false;
					}
					
					if(kekkaA>=4){
						boxB=true;
					//	kekka=false;
						boxA=0;
						
					
					}
				
					if(boxA==1){
						
						kekka=false;
						boxA=0;
						
					}
				
					   
				}
				//////////////////////////////
				
				/////////戦闘シーン////////////////
				if(scene==3){
					
					if(y<=0){
						
				if(KeyEnter){
					idou=false;

					y=300;
			scene=2;
				}
				}
				if(KeyEnter){
					
    	
					
				if(b==365){
					if(y>0){
		g=(int)(Math.random()*30);//味方攻撃判定
		t=(int)(Math.random()*30);//味方攻撃判定
		k=(int)(Math.random()*45);//敵攻撃判定
					}
				 	y=y-(g+t);
					x=x-k;
					if(y<=0){
						syouri=true;
						
						mySound02.stop();//BGMストップ
					}
			    }
				 
				else if(b==445){
				scene=2;
				y=300;
				idou=false;
				boxB=false;
				mySound02.stop();//BGMストップ
				}
				
				else 
				if(y>0){
					k=(int)(Math.random()*45);//敵攻撃判定
				}
				x=x+(int)(k*0.3);
				
				if(x<=0){
					mySound02.stop();//BGMストップ
				}
		}repaint();
			}
			
			if(scene==4){
				
				if(mimikkuHP<=0){
						
				if(KeyEnter){
					mimikkuHP=350;
					boxB=false;
					idou=false;
			scene=2;
				}
				}
				if(KeyEnter){
					
				
    	
					
				if(b==365){
					if(mimikkuHP>0){
		g=(int)(Math.random()*30);//味方攻撃判定
		t=(int)(Math.random()*30);//味方攻撃判定
		k=(int)(Math.random()*45);//敵攻撃判定
					}
				 	mimikkuHP=mimikkuHP-(g+t);
					x=x-k;
					if(mimikkuHP<=0){
						syouri=true;
						mySound02.stop();//BGMストップ
					}
			    }
				 
				else if(b==445){
				mySound02.stop();//BGMストップ
				idou=false;
				boxB=false;
				mimikkuHP=350;
				scene=2;
				}
				
				else 
				if(mimikkuHP>0){
				k=(int)(Math.random()*45);//敵攻撃判定
				}
				x=x+(int)(k*0.3);
				
				if(x<=0){
					mySound02.stop();//BGMストップ
				}
		}repaint();
		
			}
			
			if(scene==5){
				
				if(BOSSHP<=0){
						
				if(KeyEnter){
					BOSSHP=100;
				
			scene=7;
				}
				}
				if(KeyEnter){
					
				
    	
					
				if(b==365){
					if(BOSSHP>0){
		g=(int)(Math.random()*30);//味方攻撃判定
		t=(int)(Math.random()*30);//味方攻撃判定
		k=(int)(Math.random()*45);//敵攻撃判定
					}
				 	BOSSHP=BOSSHP-(g+t);
					x=x-k;
					if(BOSSHP<=0){
						syouri=true;
						mySound02.stop();//BGMストップ
					}
			    }
				 
				else if(b==445){
				mySound02.stop();//BGMストップ
				scene=2;
				boxB=false;
				idou=false;
				}
				
				else 
				if(BOSSHP>0){
				k=(int)(Math.random()*45);//敵攻撃判定
				}
				x=x+(int)(k*0.3);
				
				if(x<=0){
					mySound02.stop();//BGMストップ
				}
		}repaint();
		
			}
			/////////////////////////////
				
			break;
			
			case KeyEvent.VK_Z:
			    keyZ=true;
				
				//		
			break;
				
			}
	  }
	  
	  public void keyReleased(KeyEvent e){
	  
	  
	  		switch(e.getKeyCode())
		{
			
			case KeyEvent.VK_UP:
				keyUP=false;
			break;
				 
			case KeyEvent.VK_DOWN:
				keyDOWN=false;     
			break;
			
			case KeyEvent.VK_ENTER:
				KeyEnter=false;
			break;
			
			case KeyEvent.VK_Z:
			    keyZ=false;
			break;
			
			case KeyEvent.VK_RIGHT:
			keyRight=false;
			break;

			case KeyEvent.VK_LEFT:
			
			keyLeft=false;
			break;

			
			
		}repaint();
	  }
	  
	  
	 public void paint(Graphics g){
	 	
	
		gv.clearRect(0,0,500,470);
		
		//////////////////////タイトル////////////////
		
		if(scene==1){
			
			gv.drawImage(img6,0,0,500,470,this);
			
		}
			
			//////////////////フィールド///////////
		if(scene==2){
			
			if(s<=30){
			gv.drawImage(img3,0,0,500,470,this);
			}
			
			if(s<=60&&s>=31){
				gv.drawImage(img8,0,0,500,470,this);
			}
			
			if(s<=100&&s>=61){
				gv.drawImage(img9,0,0,500,470,this);
			}
			
			gv.drawRect(2,350,495,115);
			
			gv.fillRect(1,1,100,50);
			
			gv.setColor(Color.green);
			gv.fillRect(3,351,494,114);
			gv.fillRect(10,10,80,30);
			
			gv.setColor(Color.red);
			gv.drawRect(5,5,90,40);
			gv.drawRect(4,4,92,42);
			gv.drawRect(3,3,93,43);
			
			gv.setColor(Color.black);
			gv.drawString("進行度"+s+"%",20,30);
			
			if(idou==false){
			
			gv.drawString("前進",250,390);
			gv.drawString("後退",250,410);
			
			}
			
			if(boxmozi==true){
				
			gv.drawString("宝箱がある・・",150,390);
			gv.drawString("どうする？",150,410);
			
			}
			
			if(mozi==true){
			gv.drawString("←開ける",100,410);
			gv.drawString("無視→",300,410);
			}
			
			
			if(kekka==true){
				 kekkaA=(int)(Math.random()*10);
				if(kekkaA<=3){
			gv.drawString("宝箱の中身は・・・",100,380);
			gv.drawString("１０００ゴールドだった！！",100,400);
			
			Gold=Gold+1000;
			
				}
				
				if(kekkaA>=4){
			gv.drawString("宝箱の中身は・・・",100,380);
			gv.drawString("なんと、ミミックだった！！",100,400);
			
			
			
			}
			
		
				if(boxB==true){
						mySound03.loop();
						boxA=0;
						kekka=false;
						scene=4;
						
			}
			
			}
				
				
			
		if(box==true){
		gv.drawImage(img5,200,250,100,100,this);
		
		}
		}
		
		////////////////戦闘シーン///////////////
		if(scene==3){
		setBackground(Color.black);
		
		gv.setColor(Color.black);
		gv.fillRect(0,0,500,470);
		
		gv.setColor(Color.cyan);
		gv.fillRect(0,350,350,140);//下味方枠
		gv.fillRect(370,350,100,140);//下命令枠
		
	
		
		
		gv.setColor(Color.black);
		gv.drawRect(a,b,80,20);//命令選択枠
		
		gv.setColor(Color.black);
		
		gv.drawString("たたかう",390,380);//コマンド
		gv.drawString("かいふく",390,420);
		gv.drawString("にげる",390,460);
		gv.drawString("主人公Ａ",100,380);//味方名前
		
		gv.setColor(Color.white);
		gv.fillRect(100,400,100,10);
		
		
		if(x<=30){
			gv.setColor(Color.black);
			
		}
			
			else if(x<=90){
				gv.setColor(Color.yellow);
				
			}
			else{
		gv.setColor(Color.red);
		
		}
		
		gv.fillRect(100,400,x,10);//味方HP表示

		gv.setColor(Color.black);
		gv.drawString("HP",100,400);//味方HP文字表示	
		
			
		gv.drawImage(img2,0,0,500,355,this);//背景
		
		
		
		
		if(syouri==true){
		
		gv.drawImage(img13,100,100,400,100,this);
		
		}
		
		if(y>0){
		gv.drawImage(img,100,120,200,220,this);//敵画像
		
		gv.setColor(Color.white);
		gv.drawString("九尾（憑依：ジャイアソ）",150,50);
		
		gv.fillRect(100,100,300,10);
		
		
		if(y<=100){
			gv.setColor(Color.red);
			
		}
			
			else if(y<=200){
				gv.setColor(Color.yellow);
				
			}
			else{
		gv.setColor(Color.blue);
		
		}
		
		gv.fillRect(100,100,y,10);//敵HP表示
		
		}
	
		
		}
		
		if(scene==4){
		
		setBackground(Color.black);
		
			
		gv.setColor(Color.black);
		gv.fillRect(0,0,500,470);
		
		gv.setColor(Color.cyan);
		gv.fillRect(0,350,350,140);//下味方枠
		gv.fillRect(370,350,100,140);//下命令枠
		
			gv.setColor(Color.black);
		gv.drawRect(a,b,80,20);//命令選択枠
		
		gv.setColor(Color.black);
		
		gv.drawString("たたかう",390,380);//コマンド
		gv.drawString("かいふく",390,420);
		gv.drawString("にげる",390,460);
		gv.drawString("主人公Ａ",100,380);//味方名前
		
		gv.setColor(Color.white);
		gv.fillRect(100,400,100,10);
		
		
		if(x<=30){
			gv.setColor(Color.black);
			
		}
			
			else if(x<=90){
				gv.setColor(Color.yellow);
				
			}
			else{
		gv.setColor(Color.red);
		
		}
		
		gv.fillRect(100,400,x,10);//味方HP表示

		gv.setColor(Color.black);
		gv.drawString("HP",100,400);//味方HP文字表示
		
		gv.drawImage(img2,0,0,500,355,this);//背景
		
			
		if(syouri==true){
		
		gv.drawImage(img13,100,100,400,100,this);
		
		}
		
		if(mimikkuHP>0){
		gv.drawImage(img7,100,120,200,220,this);//敵画像
		
		gv.setColor(Color.white);
		gv.drawString("ミミック（憑依：ジャイアソ）",150,50);
		
		gv.fillRect(50,100,350,10);
		
		
		if(y<=100){
			gv.setColor(Color.red);
			
		}
			
			else if(y<=200){
				gv.setColor(Color.yellow);
				
			}
			else{
		gv.setColor(Color.blue);
		
		}
		
		gv.fillRect(50,100,mimikkuHP,10);//敵HP表示
		
		
		}
		
		}
		
		
		if(scene==5){
		
		setBackground(Color.black);
		
		gv.setColor(Color.black);
		gv.fillRect(0,0,500,470);
		
		gv.setColor(Color.cyan);
		gv.fillRect(0,350,350,140);//下味方枠
		gv.fillRect(370,350,100,140);//下命令枠
		
			gv.setColor(Color.black);
		gv.drawRect(a,b,80,20);//命令選択枠
		
		gv.setColor(Color.black);
		
		gv.drawString("たたかう",390,380);//コマンド
		gv.drawString("かいふく",390,420);
		gv.drawString("にげる",390,460);
		gv.drawString("主人公Ａ",100,380);//味方名前
		
		gv.setColor(Color.white);
		gv.fillRect(100,400,100,10);
		
		
		if(x<=30){
			gv.setColor(Color.black);
			
		}
			
			else if(x<=90){
				gv.setColor(Color.yellow);
				
			}
			else{
		gv.setColor(Color.red);
		
		}
		
		gv.fillRect(100,400,x,10);//味方HP表示

		gv.setColor(Color.black);
		gv.drawString("HP",100,400);//味方HP文字表示
		
		gv.drawImage(img11,0,0,500,355,this);//背景
		
		
		if(syouri==true){
		
		gv.drawImage(img13,100,100,400,100,this);
		
		}
		
		if(BOSSHP>0){
		gv.drawImage(img10,100,120,200,220,this);//敵画像
		
		gv.setColor(Color.white);
		gv.drawString("顔神ジャイアソ",150,50);
		
		gv.fillRect(10,100,450,10);
		
		
		if(BOSSHP<=100){
			gv.setColor(Color.red);
			
		}
			
			else if(BOSSHP<=300){
				gv.setColor(Color.yellow);
				
			}
			else{
		gv.setColor(Color.blue);
		
		}
		
		gv.fillRect(10,100,BOSSHP,10);//敵HP表示
		
		
		}
		
		}
		
		////////////////////ゲームオーバー/////////////////
	if(scene==6){
			
			gv.drawImage(img4,0,0,500,470,this);
		
		}
		/////////////////////ゲームクリア//////////////////
			if(scene==7){
				gv.drawImage(img12,0,0,500,470,this);
			Font ft1 =new Font("MS 明朝",Font.BOLD,30);
		    gv.setFont(ft1);
			gv.setColor(new Color(200,50,100));
			gv.drawString("おめでとう！ゲームクリアだ！！",50,100);
			
			
			gv.drawString("収得ゴールド"+Gold,100,150);
			
			gv.drawString("評価",100,250);
			
			if(Gold<=4000){
				
				gv.drawString("平民クラス",150,300);
			}
			
			if(Gold>=10000&&Gold<=20000){
				
				gv.drawString("勇者クラス",150,300);
			}
			
			if(Gold>=100000){
				
				gv.drawString("ドゴォォクラス",150,300);
			}
			
			if(Gold>=5000&&Gold<=9000){
				
				gv.drawString("戦士クラス",150,300);
				
			}
			
		
		}
		/////////////////////////////////////////////////////////
		gv.drawString(str,160,200);
		
		
		g.drawImage(offImage,0,0,this);
		
	 
	  }
	  
	  
	}	