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

📄 view.java

📁 eclipse下完成的一个扔鸡蛋的小游戏:)
💻 JAVA
字号:
package jegg;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.sql.Time;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import mqqqvpppm.activeObject.AbstractActiveObject;
import mqqqvpppm.util.ImagesTools;


/**
 * @author mqqqvpppm
 * 
 * TODO to dispaly game for user, 
 * observe model to dispaly base on model's state
 * 
 * Create on Sep 13,2005
 */
public class View extends JPanel implements Observer {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public View(Model model, Control control) {
		this.model = model;
		this.control = control;
		initMainFrame();
		initG2();
		paintY = 0;
		//paint game start picture
		paintStartPicture();
	}

	
	//paint game start picture
	private void paintStartPicture(){
		background = ImagesTools.createImage(JEgg.class
				.getResource("images/background.jpg"));
		g2.drawImage(background, 0, 0, getWidth(), getHeight(), null);
		g2.setColor(Color.BLACK);
		g2.drawString("Mouse clicking or press enter key to start game",10,170);
		g2.drawString("After start game, Mouse clicking or press space",10,200);
		g2.drawString("key to throw egg!",10,230);
		g2.drawString("Author: mqqqvpppm",90,360);
		g2.drawString("E-mail: mqqqvpppm@yahoo.com.cn",90,380);		
		repaint();	
	}
	
	// initialize G2 to draw all game object to G2
	private void initG2() {
		// all game object will be paint on imageBuffer first,
		// then, imageBuffer will be paint on contentpanel to let user see it.
		imageBuffer = new BufferedImage(getWidth(), getHeight() * 2,
				BufferedImage.TYPE_INT_RGB);
		g2 = (Graphics2D) imageBuffer.getGraphics();
		// gameImagePanel.setImageBuffer(imageBuffer);
	}

	// repaint the new game picture
	public void update(Observable o, Object arg) {
		paintImageBuffer((ArrayList) arg);
		repaint();
	}

	public void refreshPage() {
		BufferedImage tempBuf = imageBuffer.getSubimage(0, 100, getWidth(),
				getHeight());
		g2.drawImage(tempBuf, 0, model.getDeminsion().height, null);
		paintImageBuffer(model.getActiveObjects());
		
		for (paintY = -model.getDeminsion().height + 100; paintY <= 0; paintY = paintY + 10) {
			repaint();
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		paintY = 0;
		repaint();
	}

	private void paintImageBuffer(ArrayList actObjects) {
		g2.drawImage(background, 0, 0, null);
		AbstractActiveObject actObject;
		for (int i = 0; i != actObjects.size(); i++) {
			actObject = (AbstractActiveObject) actObjects.get(i);
			actObject.paint(g2);
		}		
	}

	// initialize main frame
	private void initMainFrame() {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {

		}
		mainFrame = new JFrame();
		mainFrame.setSize(model.getDeminsion().width + 4,
				model.getDeminsion().height + 30);
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		mainFrame.setLocation((screenSize.width - mainFrame.getWidth()) / 2,
				(screenSize.height - mainFrame.getHeight()) / 2);
		mainFrame
				.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		mainFrame.setResizable(false);
		mainFrame.setTitle("JEgg");
		mainFrame.addKeyListener(control);
		mainFrame.addMouseListener(control);
		// gameImagePanel = new GameImagePanel();
		mainFrame.setContentPane(this);
		// mainFrame.setIconImage(ImagesTools.createImageIcon());
		mainFrame.setVisible(true);
	}

	// paint all game object
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		if (imageBuffer != null)
			g.drawImage(imageBuffer, 0, paintY, null);
		
		//paint time
		long time;
		long modelTime = model.getStartTime();
		if(modelTime == 0) time = 0;
		else time = System.currentTimeMillis() - modelTime;
		time -= 3600*8000;
		g.drawString("Level: " + model.getLevel() 
				+ "                Time: " + new Time(time).toString(),110,20);	
	}
	

	private int paintY;

	private Model model;

	private Control control;

	private Graphics2D g2;

	private JFrame mainFrame;

	// this is background image of game
	private Image background;

	private BufferedImage imageBuffer;

	// this is a content panel of main Frame
	// private GameImagePanel gameImagePanel;
}

⌨️ 快捷键说明

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