栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA-生命游戏多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA-生命游戏多线程

生成图片,原始生命图

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();
			}
		}
	}
}

剩下的就是多线程的实现,这里就不展示了
代码效果截图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号