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

📄 menuframe.java

📁 简单的用Java做的小游戏主要是用了自己的框架来
💻 JAVA
字号:
package frame;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

import assistant.MoveImageChange;
import assistant.Music;

/**
 * 主菜单窗体
 * @author Administrator
 *
 */
public class MenuFrame extends JFrame implements KeyListener,Runnable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -1422291105010011000L;

	/**游戏是否开始*/
	private boolean isStart = false;
	
	/** 取得双缓冲画布 */
	private Image memoryImage;

	/** 产生双缓冲画笔 */
	private Graphics memoryGraphics;
	
	/**菜单图像*/
	private Image menuImage = new ImageIcon("image/menu.jpg").getImage();
	
	/**游戏开始图像*/
	private Image gameStartImage = new ImageIcon("image/gameStart.jpg").getImage();
	
	/**游戏开始当前图像*/
	private Image startImage;
	
	/**心图像*/
	private Image hartImage = new ImageIcon("image/hart.gif").getImage();
	
	/**心起始位置*/
	private int tempY = 278;
	
	/**标记计数器*/
	private int markCount;
	
	/**是否按下了开始键*/
	private boolean start = false;
	
	/**图像闪烁计数器*/
	private int count;
	
	/**移动图像转换对象*/
	private MoveImageChange moveImageChange = new MoveImageChange(2);
	
	/**图像移动数组*/
	private Image[] moveImage = {gameStartImage,null};

	/**
	 * 构造方法
	 */
	public MenuFrame(){
		/* 设置窗体大小 */
		this.setSize(650, 550);

		/* 设置窗体可见 */
		this.setVisible(true);

		/* 设置点击关闭,程序结束 */
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		/* 设置窗口不可改变 */
		this.setResizable(false);
		
		/*设置窗体居中*/
		this.setLocationRelativeTo(null);
		
		/*媒体追踪器*/
		MediaTracker tracker = new MediaTracker(this);
		
		tracker.addImage(menuImage, 0);//加载图像
		tracker.addImage(gameStartImage, 0);
		
		try {
			tracker.waitForID(0);//等待加载
		} catch (InterruptedException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		
		/* 创建画布 */
		memoryImage = this.createImage(650, 550);
		
		/* 得到画笔对象 */
		memoryGraphics = memoryImage.getGraphics();
		
		this.startImage = this.gameStartImage;//设置开始图像
		
		/*注册键盘事件*/
		this.addKeyListener(this);
		
//		播放背景音乐
		Music.playSingleMusic(Music.PLAY_STARTCARTOON);

		Thread thread=new Thread(this);
		thread.start();
	}
	
	public static void main(String[] args) {
		new MenuFrame();
	}
	
	/**
	 * 按下键事件
	 */
	public void keyPressed(KeyEvent e) {
		int keyCode = e.getKeyCode();
		switch(keyCode){
			case KeyEvent.VK_UP://向上
				markCount--;
				if(markCount < 0){
					markCount = 0;
				}
				break;
			case KeyEvent.VK_DOWN://向下
				markCount++;
				if(markCount > 3){
					markCount = 3;
				}
				break;
			case KeyEvent.VK_ENTER://按下回车
				switch(markCount){
					case 0:
						start = true;
						break;
					case 2:
						ProcessBuilder pre = new ProcessBuilder(
								"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE",
								System.getProperty("user.dir")+"\\doc\\index.html");
						
						try {
							pre.start();
						} catch (IOException e1) {
							// TODO 自动生成 catch 块
							e1.printStackTrace();
						}
						break;
					case 3:
						System.exit(0);
						break;
				}
				break;
		}
		
		tempY = 278 + markCount*50;//计算心的Y坐标
	}

	public void keyReleased(KeyEvent e) {}
	public void keyTyped(KeyEvent e) {}
	
	/**
	 * 重写父类run方法
	 */
	public void run() {
		while(!isStart){
			repaint();
			
			try {
				Thread.sleep(20);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		Music.stopSingleMusic();
		this.dispose();
		new GameStartFrame();
	}
	
	/**
	 * 刷新窗体
	 * @param 画笔
	 */
	public void update(Graphics g){
		memoryGraphics.drawImage(menuImage, 0,0,null);//菜单图像
		
		if(this.start){//游戏开始
			startImage = moveImageChange.imageChange(moveImage);//图像闪烁
			count++;
			
			if(count>30){
				this.isStart = true;//跳出循环
			}
		}
		memoryGraphics.drawImage(startImage, 275,270,null);//绘制游戏开始图像
		
		memoryGraphics.drawImage(hartImage, 225,tempY,30,25,null);//绘制心图像
		
		g.drawImage(memoryImage, 0,0,this);
	}
}

⌨️ 快捷键说明

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