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

📄 gamepanel.java

📁 采用jibu实现的Java并行编程的一个例子。 演示的是生命游戏。
💻 JAVA
字号:
package gameoflife;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;
import javax.swing.Timer;

import com.axon7.jibu.CancelException;


/**************************************
 * A panel that runs and shows the game 
 * of life.
 **************************************/
public class GamePanel extends JPanel
{
	private static final long serialVersionUID = 1L;

	private int cellSize = 2;////////////////////////   [1..]
	private World world;
	private Timer drawTimer;
	private BufferedImage img;


	public GamePanel(int columns, int rows, int cellPadding, LifeForm[] lifeForms, final boolean parallel)
	{
		img = new BufferedImage(columns* cellSize, rows * cellSize, BufferedImage.TYPE_INT_RGB);
		
		cellSize = cellPadding * 2;
		world = new World(columns, rows);

		world.addLifeForms(lifeForms);
		world.sequentialImageDraw(img, cellSize);

		// we create a timer that continuously
		// paints the generations on the panel.
		drawTimer = new Timer(0, new ActionListener()
		{			
			public void actionPerformed(ActionEvent e)
			{
				if(parallel)
				{
					try
					{
						// transition to next generation
						world.parallelTransition();
						// draw current state
						world.parallelImageDraw(img, cellSize);
					}
					catch (CancelException ex)
					{
						ex.printStackTrace();
					}
				}
				else
				{

					// transition to next generation
					world.sequentialTransition();
					// draw current state
					world.sequentialImageDraw(img, cellSize);
				}
				GamePanel.this.repaint();					
					
			}			
		});


		setPreferredSize(new Dimension(columns * cellSize, rows * cellSize));		
		drawTimer.start();
	}



	public void paint(Graphics g)
	{
		Graphics2D g2d = (Graphics2D)g;
		g2d.drawImage(img,0,0,img.getWidth(), img.getHeight(),this);
	}
}

⌨️ 快捷键说明

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