import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GameFrame extends JFrame{
//定义界面组件
int N = 50;//定义行数
int M = 100;//定义列数
JButton btn[][] = new JButton[N][M];//定义N*N个按钮
int stateNow[][] = new int[N][M];//存放上一帧按钮状态的数组
int liveNum = 500;//定义初始化生命种子个数
JButton btnStart = new JButton("开始演化");//开始按钮
JButton btnStop = new JButton("暂停");//暂停按钮
JButton rdInit = new JButton("随机初始化");//随机初始化生命种子
JButton btnReset = new JButton("重置");
//定义构造方法
public GameFrame() {
setTitle("生命游戏");
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this);//设置窗口最大化
setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击关闭按钮退出程序
initFrame();
}//end 构造方法
//窗口初始化
void initFrame() {
//创建监视器对象,给每个按钮设置监听
ButtonListener listener = new ButtonListener();
//定义JPanel容器,将组件放到容器中
//1.顶部
JPanel pTop = new JPanel();
pTop.add(btnStart);
pTop.add(btnStop);
pTop.add(rdInit);
pTop.add(btnReset);
this.add(pTop,BorderLayout.NORTH);
//给start和rdInit按钮设置监听
btnStart.addActionListener(listener);
btnStop.addActionListener(listener);
rdInit.addActionListener(listener);
btnReset.addActionListener(listener);
//2.中间
JPanel pCenter = new JPanel(new GridLayout(N, M));
//pCenter.setLayout(new GridLayout(N, N));//设置布局为N*N的Grid Layout
//将按钮添加到容器中,并将生死状态显示出来
//给每个按钮设置监听
for(int i = 0;i < N;i++) {
for(int j = 0;j < M;j++) {
btn[i][j] = new JButton();
pCenter.add(btn[i][j]);//将按钮加入到容器中
btn[i][j].addActionListener(listener);
if(stateNow[i][j] == 1) {
btn[i][j].setBackground(Color.green);//如果为生,显示为绿色
}else {
btn[i][j].setBackground(Color.GRAY);//如果为死,显示为灰色
}
}
}//end for
this.add(pCenter,BorderLayout.CENTER);
/*//创建线程对象并启动
new GameThread(btn, state, N).start();*/
}//end initFrame
/*****初始化生命种子方法****/
void initLifeBtn() {
Random rd = new Random();//定义随机数对象
//初始化种子
for(int i = 0;i < liveNum;i++) {
int rdNum = rd.nextInt(N*M);//存放随机数
int R = rdNum / M;//定位种子的行数
int C = rdNum % M;//定位种子的列数
rdNum = rd.nextInt(N*M);//得到(0,N*N]的随机数
if(stateNow[R][C] == 0) {//判断当前这个按钮状态是否被设置,保证有liveNum个种子数
stateNow[R][C] = 1;//将当前按钮状态设置为生,1 -- 生,0 -- 死
}else {
i--;
}
}
//将随机产生的生命种子显示出来
for(int i = 0;i < N;i++) {
for(int j = 0;j < M;j++) {
if(stateNow[i][j] == 1) {
btn[i][j].setBackground(Color.green);//如果为生,显示为绿色
}else {
btn[i][j].setBackground(Color.GRAY);//如果为死,显示为灰色
}
}
}//end for
}//end initLifeBtn
/****重置页面的方法****/
void reSetBtn() {
for(int i = 0;i < N;i++) {
for(int j = 0;j < M;j++) {
btn[i][j].setBackground(Color.GRAY);
stateNow[i][j] = 0;
}
}
}//end reSetBtn
/*********按钮监听类**********/
class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource(); //获取被点击按钮的事件源
if(obj == btnStart) { //判断开始按钮被点击
//创建线程对象并启动
new GameThread(btn, stateNow, N, M).start();
btnStart.setEnabled(false);//设置按钮不可点击
}else if(obj == btnStop) {//判断暂停按钮被点击
if(Global.CONTROL) {
Global.CONTROL = false;
btnStop.setText("开始");
}else {
Global.CONTROL = true;
btnStop.setText("暂停");
}
}else if(obj == rdInit) { //判断随机初始化按钮被点击
initLifeBtn(); //调用随机初始化种子方法
}else if(obj == btnReset) { //判断重置按钮被点击
reSetBtn(); //调用重置方法
}else {
for(int i = 0;i < N;i++) {
for(int j = 0;j < M;j++) {
if(obj == btn[i][j]) {
btn[i][j].setBackground(Color.green);
stateNow[i][j] = 1;
}
}
}//end for
}
}//end actionPerformed
}//end ButtonListener
public static void main(String[] args) {
new GameFrame().setVisible(true);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 7 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/6b2ea2d510824682ac2af676104b9caf_abackcab.jpg!1)
毕业小助手
- 粉丝: 2737
- 资源: 5598
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)