📄 game.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 + -