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

📄 game.java

📁 一个打地鼠的小游戏
💻 JAVA
字号:
import java.awt.event.*;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.net.*;
import java.applet.Applet;
import java.applet.AudioClip;
public class  Game  extends JFrame implements ActionListener,Runnable {
	/**
	 * This class is to realize the menu Game
	 */
	private static final long serialVersionUID = 1L;
	//设置游戏难度
	private int level=1000;
	
	private static int tempRatFlag=0;
	private static int tempIconFlag=0;
	private int tempScore=0;
	private int tempStopGameLife=0;
	private int tempStopGameScore=0;
	private boolean stopFlag=false;
	private ImageIcon clearIcon=new ImageIcon(" ");
	//设置打击音乐
	private AudioClip clickMusic, bgMusic;
	/*public void setMusic(){
		try{
			String separator=System.getProperty("file.separator");
			String preface="file:"+System.getProperty("usr.dir")+separator+"music"+separator;
			clickMusic=Applet.newAudioClip(new URL(preface+"hit_1.wav"));
			bgMusic=Applet.newAudioClip(new URL(preface+"hit_2.wav"));
		}catch(MalformedURLException murle){
			//
		}
	}*/
	//设置图片路径
	private String[] iconRoute1={
			"..\\image\\HJ\\rat.jpg",
			"..\\image\\HJ\\rat.jpg",
			"..\\image\\HJ\\rat.jpg",
			"..\\image\\HJ\\dog.jpg",
			"..\\image\\HJ\\cat.jpg",
			"..\\image\\HJ\\rat.jpg",
			"..\\image\\HJ\\rat.jpg",
			"..\\image\\HJ\\rat.jpg",
			};
	private String[] iconRoute2={
			"..\\image\\Rat\\rat.jpg",
			"..\\image\\Rat\\rat.jpg",
			"..\\image\\Rat\\rat.jpg",
			"..\\image\\Rat\\dog.jpg",
			"..\\image\\Rat\\cat.jpg",
			"..\\image\\Rat\\rat.jpg",
			"..\\image\\Rat\\rat.jpg",
			"..\\image\\Rat\\rat.jpg"
			};
	private String[] iconRoute3={		
			"..\\image\\ZKW\\rat.jpg",
			"..\\image\\ZKW\\rat.jpg",
			"..\\image\\ZKW\\rat.jpg",
			"..\\image\\ZKW\\dog.jpg",
			"..\\image\\ZKW\\cat.jpg",
			"..\\image\\ZKW\\rat.jpg",
			"..\\image\\ZKW\\rat.jpg",
			"..\\image\\ZKW\\rat.jpg"};
	private String[] iconRoute4={
			"..\\image\\JingJing\\rat.jpg",
			"..\\image\\JingJing\\rat.jpg",
			"..\\image\\JingJing\\rat.jpg",
			"..\\image\\JingJing\\dog.jpg",
			"..\\image\\JingJing\\cat.jpg",
			"..\\image\\JingJing\\rat.jpg",
			"..\\image\\JingJing\\rat.jpg",
			"..\\image\\JingJing\\rat.jpg"
			};

	
	
	//to connect the classes
	KillRat guiGame;
	ConfirmDialog confirmDialog;
	Score storage=new Score();
	//Thread 
	Thread runner;
	
	//constructor
	
	public Game(KillRat in){
		guiGame=in;
		//setBGImage();
	
		
	}
	//设置游戏难度
	public void easy(){
		level=1000;
	}
	public void middle(){
		level=600;
	}
	public void hard(){
		level=200;
	}
	public void newGame(){
		setRatInvisible();
		if(stopFlag==true)
		setRatInvisible();
		stopFlag=false;
		reset();
		runner=new Thread(this);
		//setMusic();
		runner.start();
	}
	public void reset(){
		runner=null;
		guiGame.setGameLife(10);
		guiGame.setGameLifeText();
		guiGame.setScore(0);
		guiGame.setScoreText();
		
	}
	public void setLevel(){
		int index1=guiGame.getLevelRadio();
		if(index1==1) easy();
		else if(index1==2)middle();
		else if(index1==3) hard();
	}
	//actionPerformed
	public void actionPerformed(ActionEvent ae){
		if(ae.getActionCommand()=="New Game"){
			
			setLevel();
			setRatInvisible();
			selectSetRat();
			newGame();
		}
		else if(ae.getActionCommand()=="Stop Game"){
			gameStop();
		}
		else if(ae.getActionCommand()=="Resume Game"){
			gameResume();
		}
		else if(ae.getActionCommand()=="Exit Game"){
			
			confirmDialog=new ConfirmDialog(this);
			
		}
		if(ae.getActionCommand()=="easy"){
			easy();
		}
		if(ae.getActionCommand()=="middle"){
			middle();
		}
		if(ae.getActionCommand()=="hard"){
			hard();
		}
	
		
		if(!stopFlag&&guiGame.getGameLife()>0&&runner!=null){
			
			if(ae.getSource()==guiGame.getButtons(tempRatFlag)){
			 iconRouteSelection();
			 clickMusic.play();
	      }
		for(int i=0;i<tempRatFlag;i++)
		 if(ae.getSource()==guiGame.getButtons(i))
			gotNone();
		for(int j=tempRatFlag+1;j<guiGame.getButtonsLength();j++){
			if(ae.getSource()==guiGame.getButtons(j))
				gotNone();
		   }
		}
		if(ae.getActionCommand()=="Best Score"){
			if(runner==null){
			setKeepScore();
			int temp=getKeepScore();
			System.out.println(temp);
		}
		}
	}
	//根据选择的图片进行相应的操作
	public void iconRouteOperation1(){
		 if(iconRoute1[tempIconFlag]==iconRoute1[0]
		                         			    ||iconRoute1[tempIconFlag]==iconRoute1[1]
		                         			    ||iconRoute1[tempIconFlag]==iconRoute1[2]
		                         			    ||iconRoute1[tempIconFlag]==iconRoute1[5]
		                         			    ||iconRoute1[tempIconFlag]==iconRoute1[6]
		                         			    ||iconRoute1[tempIconFlag]==iconRoute1[7])
		                         				gotRat();
		                         			 if(iconRoute1[tempIconFlag]==iconRoute1[3])
		                         				gotDog();
		                         		 	 if(iconRoute1[tempIconFlag]==iconRoute1[4])
		                         				gotCat();
	}
	public void iconRouteOperation2(){
		 if(iconRoute1[tempIconFlag]==iconRoute1[0]
		                         			    ||iconRoute2[tempIconFlag]==iconRoute2[1]
		                         			    ||iconRoute2[tempIconFlag]==iconRoute2[2]
		                         			    ||iconRoute2[tempIconFlag]==iconRoute2[5]
		                         			    ||iconRoute2[tempIconFlag]==iconRoute2[6]
		                         			    ||iconRoute2[tempIconFlag]==iconRoute2[7])
		                         				gotRat();
		                         			 if(iconRoute2[tempIconFlag]==iconRoute2[3])
		                         				gotDog();
		                         		 	 if(iconRoute2[tempIconFlag]==iconRoute2[4])
		                         				gotCat();
	}
	public void iconRouteOperation3(){
		 if(iconRoute1[tempIconFlag]==iconRoute1[0]
		                         			    ||iconRoute3[tempIconFlag]==iconRoute3[1]
		                         			    ||iconRoute3[tempIconFlag]==iconRoute3[2]
		                         			    ||iconRoute3[tempIconFlag]==iconRoute3[5]
		                         			    ||iconRoute3[tempIconFlag]==iconRoute3[6]
		                         			    ||iconRoute3[tempIconFlag]==iconRoute3[7])
		                         				gotRat();
		                         			 if(iconRoute3[tempIconFlag]==iconRoute3[3])
		                         				gotDog();
		                         		 	 if(iconRoute3[tempIconFlag]==iconRoute3[4])
		                         				gotCat();
	}
	public void iconRouteOperation4(){
		 if(iconRoute1[tempIconFlag]==iconRoute1[0]
		                         			    ||iconRoute4[tempIconFlag]==iconRoute4[1]
		                         			    ||iconRoute4[tempIconFlag]==iconRoute4[2]
		                         			    ||iconRoute4[tempIconFlag]==iconRoute4[5]
		                         			    ||iconRoute4[tempIconFlag]==iconRoute4[6]
		                         			    ||iconRoute4[tempIconFlag]==iconRoute4[7])
		                         				gotRat();
		                         			 if(iconRoute4[tempIconFlag]==iconRoute4[3])
		                         				gotDog();
		                         		 	 if(iconRoute4[tempIconFlag]==iconRoute4[4])
		                         				gotCat();
	}
	//根据选择的路径使用不同的重载方法
	public void iconRouteSelection(){
		int index=guiGame.getPictureRadio();
		if(index==1) iconRouteOperation1();
		else if(index==2) iconRouteOperation2();
		else if(index==3) iconRouteOperation3();
		else if(index==4) iconRouteOperation4();
	}
	public void gameOver(){
	    JOptionPane.showMessageDialog(null,"Sorry,you lost!","Game Over",JOptionPane.INFORMATION_MESSAGE);
	    JOptionPane.showMessageDialog(null, "Your score is : "+tempScore,"Score",JOptionPane.INFORMATION_MESSAGE);
	    confirmDialog=new ConfirmDialog(this);
	}
	public void backupData(){
		tempStopGameLife=guiGame.getGameLife();
		tempStopGameScore=guiGame.getScore();
	}
	public void gameStop(){
		backupData();
		stopFlag=true;
		runner=null;
	}
	public void gameResume(){
		stopFlag=false;
		setRatInvisible();
		runner=new Thread(this);
		runner.start();
		guiGame.setGameLife(tempStopGameLife);
		guiGame.setScore(tempStopGameScore);
	}
	
	public void paintComponent(Graphics g){
		Graphics2D gd=(Graphics2D)g;
		super.paint(gd);
		
		selectSetRat();
		
	}
	
	public void start(){
		if(runner==null){
			runner=new Thread(this);
			runner.start();
		}
	}
	public void run(){
		
			Thread thisThread=Thread.currentThread();
			while(runner==thisThread){
			selectSetRat();
			
			if(guiGame.getGameLife()<=0){
				
				tempScore=guiGame.getScore();
				
				reset();
				gameOver();
				}
			
			
			try{Thread.sleep(level);}
			catch(InterruptedException e){
				//do nothing
			}
			
			if(!stopFlag)
			setRatInvisible();
			repaint();
	 }
	}
	//根据所选择的图片来决定使用什么样的方法,方法重载的使用
	public void setRat1(){
		int ratFlag;
		int iconFlag;
		ratFlag=(int)(Math.random()*16);
		iconFlag=(int)(Math.random()*7);
		guiGame.getButtons(ratFlag).setIcon(new ImageIcon(iconRoute1[iconFlag]));
		tempRatFlag=ratFlag;
		tempIconFlag=iconFlag;
	}
	public void setRat2(){
		int ratFlag;
		int iconFlag;
		ratFlag=(int)(Math.random()*16);
		iconFlag=(int)(Math.random()*7);
		guiGame.getButtons(ratFlag).setIcon(new ImageIcon(iconRoute2[iconFlag]));
		tempRatFlag=ratFlag;
		tempIconFlag=iconFlag;
	}
	public void setRat3(){
		int ratFlag;
		int iconFlag;
		ratFlag=(int)(Math.random()*16);
		iconFlag=(int)(Math.random()*7);
		guiGame.getButtons(ratFlag).setIcon(new ImageIcon(iconRoute3[iconFlag]));
		tempRatFlag=ratFlag;
		tempIconFlag=iconFlag;
	}
	public void setRat4(){
		int ratFlag;
		int iconFlag;
		ratFlag=(int)(Math.random()*16);
		iconFlag=(int)(Math.random()*7);
		guiGame.getButtons(ratFlag).setIcon(new ImageIcon(iconRoute4[iconFlag]));
		tempRatFlag=ratFlag;
		tempIconFlag=iconFlag;
	}//方法的重载
	//选择重载的方法
	public void selectSetRat(){
		int index=guiGame.getPictureRadio();
		if(index==1) setRat1();
		else if(index==2) setRat2();
		else if(index==3) setRat3();
		else if(index==4) setRat4();
	}
	
	public void setRatInvisible(){
		guiGame.getButtons(tempRatFlag).setIcon(clearIcon);
	}
	

	public void gotRat(){
		guiGame.setScoreUp();
		
	}
	public void gotDog(){
		
		guiGame.setLabelDown();	
		
		
	}
	public void gotCat(){
	
		guiGame.setLabelDown();
		
	}
	public void gotNone(){
		
		guiGame.setLabelDown();
		
	}
	
/*The following program is to store or show the score of the player*/
	//get the game life and score and store it
	public void setKeepScore(){
		storage.setStoreScore(tempScore);
	}
	public int getKeepScore(){
		return storage.getStoreScore();
	}
}


⌨️ 快捷键说明

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