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

📄 environment.java

📁 打地鼠游戏,简单的java图形应用,初学者实现的不好请大家原谅
💻 JAVA
字号:
package src;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.*;
import java.util.Timer;
import java.util.TimerTask;

/**游戏的主环境,里面包含了所有游戏信息*/
public class  environment
{
	/*private*/
	GameFrame _game;//游戏主界面
	StatusFrame _status;//游戏状态界面
	GameMenu _menu;//菜单条
	JFrame _main;//主窗口
	Container contentPane;
	Timer clock;//内部时钟
	clockUpdate updateGenerator;
	int inited = 0 , running = 0;

//	private Player _player;
	/*unchange*/
	String gameName = "打地鼠";
	String path;
	int score = 0;
	int nowTime = 0;//记录时间的嘀嗒数
	int miceNum = 0;//地鼠的数量
	int picNum = 0;//背景图象的编号
	int timeLength = 60;//游戏的时间长度
	/*.............*/

	public environment(){
		_main = new JFrame(gameName); 
		contentPane = _main.getContentPane();
		_main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		_menu = new GameMenu(this);//菜单栏要先初始化
		_main.setJMenuBar(_menu);
		path = System.getProperty("user.dir");
		System.out.println(path);

/*full screen*/
		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
		GraphicsDevice gd = ge.getDefaultScreenDevice();
		if(gd.isFullScreenSupported())
			gd.setFullScreenWindow(_main);
		else{
			System.out.println("Unsupported full screen.");
		}	
	}

	//主界面组件初始化
	public void init(){
		_game = new GameFrame(this);
		_status = new StatusFrame(this);

		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,_game,_status);
		splitPane.setDividerLocation(800);  
		splitPane.setDividerSize(10);
		contentPane.add(splitPane);

		repaint();

		try{
			_game.init();
			_status.init();
		}
		catch(Exception ex){
			System.out.println("error in init;" + getStatus());
		}
		inited = 1;
	}

	//要求全局更新时发起所有的更新通知
	public void update(){
		_status.repaint();
	}
	
	//让游戏正式开始
	public void run(){
		running = 1;
		nowTime =  0;
		score = 0;

		clock = new Timer();
		updateGenerator = new clockUpdate(this);
		clock.schedule(updateGenerator,10,1000);
		_game.run();
	}

	public void repaint(){
		_main.validate();
		_game.repaint();
		_status.repaint();
	}

	public String getStatus(){
		return "Score=" + String.valueOf(score) + " nowTime=" + String.valueOf(nowTime) + " miceNum="
		+ String.valueOf(miceNum) + " picNum" + String.valueOf(picNum) + " timeLength=" + String.valueOf(timeLength);
	}

	public void gameEnd(){
		_game.gameEnd();
		nowTime =  0;
		score = 0;
		running = 0;
		System.out.println("in env" + getStatus());
	}
}

/**后台时钟触发事件*/
class clockUpdate extends TimerTask 
{
	environment env;

	clockUpdate(environment temp){
		env = temp;
	}

	//每一秒触发的时间
	public void run(){
		env.nowTime++;
		updateTime();
		CheckTime();
	}
	//固定的时间触发的时间
	public void CheckTime(){
		if(env.nowTime == env.timeLength){
				env._status.gameStart.setEnabled(true);
				cancel();
				env.gameEnd();
		}
	}
	public boolean cancel(){
		System.out.println(" i am canceled");
		super.cancel();
		return true;
	}
	//游戏时间更新
	public void updateTime(){
		env._status.timeBar.setValue(env.nowTime);
	}
};

⌨️ 快捷键说明

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