当前位置: 首页 > news >正文

CellularAutomata元胞向量机-9-生命游戏MATLAB代码分享

主程序:

%%Conway's life with GUI

clf % 清除图形

clc, clear

%===========================

%build the GUI

%define the plot button

plotbutton=uicontrol('style','pushbutton',...

'string','Run', ...

'fontsize',12, ...

'position',[100,400,50,20], ...

'callback', 'run=1;');

%define the stop button

erasebutton=uicontrol('style','pushbutton',...

'string','Stop', ...

'fontsize',12, ...

'position',[200,400,50,20], ...

'callback','freeze=1;');

%define the Quit button

quitbutton=uicontrol('style','pushbutton',...

'string','Quit', ...

'fontsize',12, ...

'position',[300,400,50,20], ...

'callback','stop=1;close;');

number = uicontrol('style','text', ...

'string','1', ...

'fontsize',12, ...

'position',[20,400,50,20]);

%==============================

%CA setup

n=128;

%initialize the arrays

z = zeros(n,n);

cells = z;

sum = z;

%set a few cells to one

cells(n/2,.25*n:.75*n) = 1;

cells(.25*n:.75*n,n/2) = 1;

%cells(.5*n-1,.5*n-1)=1;

%cells(.5*n-2,.5*n-2)=1;

%cells(.5*n-3,.5*n-3)=1;

cells = (rand(n,n))<.5 ;

%how long for each case to stability or simple oscillators

%build an image and display it

imh = image(cat(3,cells,z,z));

set(imh, 'erasemode', 'none')

axis equal

axis tight

%index definition for cell update

x = 2:n-1;

y = 2:n-1;

%Main event loop

stop= 0; %wait for a quit button push

run = 0; %wait for a draw

freeze = 0; %wait for a freeze

while (stop==0)

if (run==1)

%nearest neighbor sum

sum(x,y) = cells(x,y-1) + cells(x,y+1) + ...

cells(x-1, y) + cells(x+1,y) + ...

cells(x-1,y-1) + cells(x-1,y+1) + ...

cells(3:n,y-1) + cells(x+1,y+1);

% The CA rule

cells = (sum==3) | (sum==2 & cells);

%draw the new image

set(imh, 'cdata', cat(3,cells,z,z) )

%update the step number diaplay

stepnumber = 1 + str2num(get(number,'string'));

set(number,'string',num2str(stepnumber))

end

if (freeze==1)

run = 0;

freeze = 0;

end

drawnow %need this in the loop for controls to work

end

子程序:game_of_life.m

%% 生命游戏GUI

clc

clear all

%构造三个按钮

plotbutton=uicontrol('style','pushbutton',...

'string','Run', ...

'fontsize',12, ...

'position',[100,400,50,20], ...

'callback', 'run=1;');

erasebutton=uicontrol('style','pushbutton',...

'string','Stop', ...

'fontsize',12, ...

'position',[200,400,50,20], ...

'callback','freeze=1;');

quitbutton=uicontrol('style','pushbutton',...

'string','Quit', ...

'fontsize',12, ...

'position',[300,400,50,20], ...

'callback','stop=1;close;');

number = uicontrol('style','text', ...

'string','1', ...

'fontsize',12, ...

'position',[20,400,50,20]);

%元胞个数

n=128;

z = zeros(n,n);

cells = z;

sum = z;

%初始化一部分元胞有生命

cells(n/2,.25*n:.75*n) = 1;

cells(.25*n:.75*n,n/2) = 1;

cells = (rand(n,n))<.5 ;

%创建图片

imh = image(cat(3,cells,z,z));

set(imh, 'erasemode', 'none')

axis equal

axis tight

x = 2:n-1;

y = 2:n-1;

stop= 0;

run = 0;

freeze = 0;

while (stop==0)

if (run==1)

%周围活着的生命总数

sum(x,y) = cells(x,y-1) + cells(x,y+1) + ...

cells(x-1, y) + cells(x+1,y) + ...

cells(x-1,y-1) + cells(x-1,y+1) + ...

cells(3:n,y-1) + cells(x+1,y+1);

%元胞规则

cells = (sum==3) | (sum==2 & cells);

%更新图片

set(imh, 'cdata', cat(3,cells,z,z) )

%更新迭代了几步

stepnumber = 1 + str2num(get(number,'string'));

set(number,'string',num2str(stepnumber))

end

if (freeze==1)

run = 0;

freeze = 0;

end

pause(0.02)

end

http://www.lryc.cn/news/9635.html

相关文章:

  • 基于Java+Swing+mysql图书管理系统
  • 高通IPQ支持串口转RS485
  • 力扣-组合两个表
  • Linux权限概念
  • 备战金三银四,这些无数测试前辈们踩过的坑,在面试中,一定要注意这些
  • 注解(加与不加的区别)
  • 小众免费的短视频素材库
  • docker-compose安装SonarQube
  • 《数字经济全景白皮书》金融篇:五十弦翻塞外声,金融热点领域如何实现增长?
  • 微服务门神-Gateway与Sentinel的集成
  • 查找的基本概念
  • 安装v-router出错
  • 2023美赛C题:预测 Wordle 结果
  • minio public桶禁止在直接访问桶位置时列出所有文件url
  • Python 元组简介
  • python gui构造openai api可视化页面
  • 服务网格领域的百花齐放,是否存在一个更优解?
  • Zynq 裸机 PS + PL 双网口实现之 lwip 库文件修改
  • 金三银四丨黑蛋老师带你剖析-CTF岗
  • Linux find命令
  • vue项目实现会议预约(包含某天的某个时间段和某月的某几天)
  • javacv桌面推送 通过推送和拉取udp组播视频流实现
  • 2022年直播电商成交额,更是达到了24816亿元的成交额
  • 【学习总结】2023寒假总结
  • 宝塔搭建实战php源码人才求职管理系统后台端thinkphp源码(一)
  • stk 根据六根数文件生成卫星轨迹(一)
  • 深度学习算法面试常问问题(一)
  • Spring 底层原理与解析 - 容器接口
  • Compose-Navigation简单案例上手
  • 855. 考场就座