matlab 生命游戏 可自己输入图像
制作了一个生命游戏的小游戏
上下左右移动红点
空格绘制生命
按键B开始运动
按键C暂停
按键A清空
按键backspace删除生命
游戏截图
动图
代码部分
function lifecontrol
% life game which can input point as you will.
% move the red cross with the key
% 'uparrow','downarrow','leftarrow','rightarrow'
% use the key 'space'to input
% 'bacspace'to delete
% 'b' to begin 'c'to stop and 'a' to restartn=50;%n=input('the board size is:');axis equalaxis(0.5+[0,n,0,n])set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')set(gca,'color','w')hold on%axis set.........................................................................%A=randi(9,[n,n]);%A(A<2.1)=0;%A(A>2)=1;A=zeros(n,n);%A=[input sqare with only ones and zeros][a,b]=find(A(:,:)==1);B=[b,length(sum(A,2))-a];postion=[floor(n/2),floor(n/2)];control=1;plotl=scatter(gca,B(:,1),B(:,2),1200/n,'ks','filled');plotpostion=scatter(gca,postion(1,1),postion(1,2),150,'rx');set(gcf, 'KeyPressFcn', @key) fps = 20; game = timer('ExecutionMode', 'FixedRate', 'Period',1/fps, 'TimerFcn', @lifeGame);start(game)
%beginning set.............................................................................
set(gcf,'tag','co','CloseRequestFcn',@clo);function clo(~,~)stop(game)delete(findobj('tag','co'))clfcloseend
function lifeGame(~,~)chang=length(sum(A,2));postion(postion>chang)=postion(postion>chang)-chang;postion(postion<1)=postion(postion<1)+chang;if control==2B1=[A;zeros(1,chang)];B1(1,:)=[];B2=[zeros(1,chang);A];B2(end,:)=[];B3=[zeros(chang,1),A];B3(:,end)=[];B4=[A,zeros(chang,1)];B4(:,1)=[];C1=[zeros(chang,1),B1];C1(:,end)=[];C2=[B1,zeros(chang,1)];C2(:,1)=[];C3=[zeros(chang,1),B2];C3(:,end)=[];C4=[B2,zeros(chang,1)];C4(:,1)=[];NewA=B1+B2+B3+B4+C1+C2+C3+C4;progressA=zeros(chang,chang);progressA(NewA==3)=1;t3=find(NewA==2);t2=find(A==1);[lalala,~,~]=intersect(t3,t2);progressA(lalala)=1;A=progressA;[a,b]=find(A(:,:)==1);B=[b,length(sum(A,2))-a];endif control==1[a,b]=find(A(:,:)==1);B=[b,length(sum(A,2))-a]; endset(plotl,'XData',B(:,1),'YData',B(:,2))set(plotpostion,'XData',postion(1,1),'YData',postion(1,2))endfunction key(~,event)switch event.Keycase 'uparrow'postion=postion+[0,1];case 'downarrow'postion=postion+[0,-1];case 'leftarrow'postion=postion+[-1,0];case 'rightarrow'postion=postion+[1,0];case 'space'A(length(sum(A,2))-postion(1,2),postion(1,1))=1;case 'backspace'A(length(sum(A,2))-postion(1,2),postion(1,1))=0;case 'b'control=2;case 'c'control=1;case 'a'A=zeros(100,100);control=1;endend
end
将两段代码复制粘贴至同一个m文件即可
matlab 生命游戏 可自己输入图像相关推荐
- matlab 生命游戏(可调节代数,存活条件,繁殖条件)
以前写的,主要是受到golly这个软件的启发(感觉是个很好玩的软件) 这个生命游戏可调节代数,存活条件,繁殖条件 like this 运行效果 代码: function lifeinput(arg1) ...
- 【元胞自动机】元胞自动机生命游戏【含Matlab源码 655期】
⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...
- matlab幂次变换代码,matlab实现 图像的灰度变换 增强输入图像的对比度 幂律变换 代码...
matlab实现 图像的灰度变换 增强输入图像的对比度 幂律变换 代码 发布时间:2018-10-25 21:20, 浏览次数:891 , 标签: matlab 题目:选择合适的基本灰度变换模型及其参 ...
- 【老生谈算法】matlab实现生命游戏源码——生命游戏
MATLAB实现生命游戏源码 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]MATLAB实现生命游戏源码.docx 2.算法 ...
- 元胞自动机 | Matlab实现基于CA元胞自动机的生命游戏模拟
文章目录 效果一览 文章概述 程序设计 参考资料 效果一览 文章概述 元胞自动机 | 基于CA元胞自动机的生命游戏模拟."生命游戏"是一个"元胞自动机",它是一 ...
- 康威生命游戏简易版python_turtle实现
以下资料引用至百度百科 康威生命游戏(Game of Life),剑桥大学约翰·何顿·康威设计的计算机程序. 概述: 生命游戏没有游戏玩家各方之间的竞争,也谈不上输赢,可以把它归类为仿真游戏.事实 ...
- 元胞自动机CA+生命游戏代码
1.元胞自动机 元胞自动机(Cellular Automaton,复数为Cellular Automata,简称CA,也有人译为细胞自动机.点格自动机.分子自动机或单元自动机).是一时间和空间都离散的 ...
- 伍六七带你学算法 进阶篇-生命游戏
有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...
- 康威生命游戏是如何搭建计算机的?
2020年4月,数学家约翰·康威(John H. Conway)因新冠肺炎去世.大家回顾康威教授平生贡献时,不可避免要提到伟大.深刻的"康威生命游戏"(Conway's Game ...
最新文章
- IOS开发笔记7-C语言基础复习
- crontab 案例
- C语言定义一个头节点,一个关于C语言链表头结点的问题
- 经典数字信号处理图书的个人评述【转】
- (04)FPGA芯片选型原则
- BizTalk动手实验(十七)ODBC适配器使用
- 2015年9大优秀项目管理工具集锦
- C#实现用Enter键和Tab键同样功能
- 数据结构-约瑟夫问题课后作业
- python樱桃小丸子_appium+python自动化启动app
- flutter 带未读消息的底部导航
- 服务器变卡的原因有哪些
- 华为任正非:管理的灰度
- java socket 点对点_javaSocket点对点实现文件传输
- 前端面试题:如何让元素水平垂直居中?
- UG二次开发GRIP复制属性加强
- 【软件设计师09】多媒体技术
- ✔G【OPA828】放大器模块 超低输入电流偏置 同相/反相放大器 跟随器
- CVPR2019:自动驾驶最新进展总结
- 社群裂变的方法和优势