生成图片,原始生命图
package MyGameOfLife;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class MyImage {
BufferedImage image;//储存图片
public void creat_Image(String fileOut) throws IOException
{
//创建一个60*60的二值图像用来存放初始细胞的状态
this.image=new BufferedImage(60,60,BufferedImage.TYPE_BYTE_BINARY);//二值图像
for(int i=0;i
图形用户界面,开始,暂停,继续与退出
package MyGameOfLife;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyGui extends Jframe {
final int MIN_WIDTH = 400;
final int MIN_HEIGH = 300;
MyGame myGame;
JLabel jl[]; //细胞
JPanel p; // 显示功能面板
JButton jbuttons[]; // 功能按键
JPanel displayPanel; // 产生运行结果的面板
Font fo = new Font("黑体", 0, 20);
String info[] = {"Start","Pause","Continue","Quit"};
boolean sign=false;
public MyGui(int width,int height) throws IOException {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGH));
this.setSize(900, 700);
this.setTitle("生命游戏");
this.setLocationRelativeTo(null);
this.initial(width,height);
}
public void initial(int width,int height) {
this.jbuttons=new JButton[4];
for(int i=0;i
游戏实现
package MyGameOfLife;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class MyGame {
BufferedImage image;//储存图片
int matrixData[][]; //储存像素点
char map[][]; //存储生命图
char tmap[][]; //中间生命图
MyGui myGui;
//构造函数
public MyGame(String fileIn) throws IOException {
this.initialGame(fileIn);
}
//初始化游戏的一些开始的事件
public void initialGame(String fileIn) throws IOException {
this.image=this.loadImage(fileIn);
this.storeData();
this.loadMap(matrixData);
this.myGui=new MyGui(this.image.getWidth(),this.image.getHeight());
}
//读取并存储初始图片
public BufferedImage loadImage(String fileIn) throws IOException{
return ImageIO.read(new File(fileIn));
}
//存储像素点
public void storeData()
{
this.matrixData=new int[this.image.getHeight()][this.image.getWidth()];//创建大小
for(int i=0;i3)
map[i][j]=' ';
}
}
}
public void startGame() throws InterruptedException {
this.show_Gui();
while(true) {
if(this.myGui.sign) {
this.show_Gui();
this.turn_into();
this.change(0);
Thread.sleep(500);
}
else {
//等待
Thread.onSpinWait();
}
}
}
}
剩下的就是多线程的实现,这里就不展示了
代码效果截图



