生命游戏(康威的生命游戏) Game Of Life - Conway Cocos Creator 3.x版实现
康威的生命游戏 GameOfLife - Conway Cocos Creator实现
一、生命游戏(Game of Life)描述
生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。
游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。(实际实现中,我们采取令左右边界相接、上下边界相接的方法模拟无限棋盘的情况)例如,设想每个方格中都可放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。图中,用黑色的方格表示该细胞为“死”, 其它颜色表示该细胞为“生” 。游戏开始时, 每个细胞可以随机地(或给定地)被设定为“生”或“死”之一的某个状态, 然后,再根据如下生存定律计算下一代每个细胞的状态。
预览地址: 请用手机打开
开源地址:
github
游戏演示:
生命游戏demo
截图:
软件架构
Cocos Creator 3.x
仅供娱乐,未对内存做优化,固定容器大小
可以调整规则和执行速度
支持双指操作放大缩小,拖动平移
可以控制规则 B3S23:3格时新出生,2、3时存活
可以控制执行速度
用TexturePacker合并了一黑一白两个32个像素的图像,又做成了tiledMap地图文件
代码写得很随意,主要游戏逻辑实现在life/index下
其它文件是控制逻辑代码
双指缩放代码:
onTouchMove(event: EventTouch) {if (this.nodeTarget) {let touches = event.getTouches();if (touches.length == 1) {let delta = event.getDelta();this.nodeTarget.setPosition(v3(this.nodeTarget.position.x + delta.x/2, this.nodeTarget.position.y + delta.y/2, this.nodeTarget.position.z))} else if (touches.length == 2) {let temp = v2();Vec2.subtract(temp, touches[0].getLocation(), touches[1].getLocation());// 双指当前间距let distance = temp.length();if (this.originalTouchDistance == -1) {this.originalTouchDistance = distance;this.originalNodeScale = this.nodeTarget.scale.clone();}let targetScale = v3();// 双指当前间距 / 双指初始间距let scale = distance / this.originalTouchDistance;// 节点初始缩放 * (双指当前间距 / 双指初始间距)Vec3.multiplyScalar(targetScale, this.originalNodeScale, scale);scale = targetScale.x;// 属于节点缩放比scale = clamp(scale, this.minLength, this.maxLength);this.nodeTarget.setScale(scale, scale, this.nodeTarget.scale.z);}}}
移动camera代码
onTouchMoveCamera(event: EventTouch) {if (this.nodeCamera) {let touches = event.getTouches();if (touches.length == 1) {let delta = event.getDelta();this.nodeCamera.setPosition(v3(this.nodeCamera.position.x - delta.x, this.nodeCamera.position.y - delta.y, this.nodeCamera.position.z))} else if (touches.length == 2) {let temp = v2();Vec2.subtract(temp, touches[0].getLocation(), touches[1].getLocation());// 双指当前间距let distance = temp.length();if (this.originalTouchDistance == -1) {// 双指初始间距this.originalTouchDistance = distance;// 摄像机初始位置this.originalCameraPosition = this.nodeCamera.position.clone();// 摄像机初始距离this.originalCameraDistance = this.originalCameraPosition.length();}let scale = this.originalTouchDistance / distance;// 摄像机机当前距离let curCameraDistance = this.originalCameraDistance * scale;// 约束摄像机距离curCameraDistance = clamp(curCameraDistance, this.minLength, this.maxLength);// 降维 可以将 z 视作二维平面中的 xtemp = v2(this.originalCameraPosition.z, this.originalCameraPosition.y);// 计算两点间的角度let angle = this.getAngle(temp, Vec2.ZERO);// 根据角度计算弧度let rad = misc.degreesToRadians(angle);// http://c.biancheng.net/ref/sin.html// sinA = 对边 / 斜边 可得 对边 = sinA * 斜边let y = Math.sin(rad) * curCameraDistance;// http://c.biancheng.net/ref/cos.html// cosA = 临边 / 斜边 可得 临边 = cosA * 对边let z = Math.cos(rad) * curCameraDistance;this.nodeCamera.setPosition(v3(this.nodeCamera.position.x, y, z));}}}
生命游戏(康威的生命游戏) Game Of Life - Conway Cocos Creator 3.x版实现相关推荐
- App Store游戏付费榜前三,推荐一款Cocos Creator制作的文字类游戏
不靠怒刷,不喜宣传,这款基于Cocos Creator制作的文字类游戏「荒野求生」就这样默默无闻地一跃而上,取得了App Store游戏榜前十的好成绩.而且上周还一举挤入游戏付费榜第三.文字类游戏排行 ...
- 初识cocos creator,做一款H5小游戏
分享内容预览 小游戏体验. cocos creator 前世今生. 基本开发环境的了解. 小游戏场景制作相关知识. 基础语法讲析. sunlands-cow demo的讲解. 构建,发布.(h5, 微 ...
- 【Cocos新手入门】cocos creator + Visual Studio 做游戏开发的基础教程
本篇文章主要讲解cocos 开发游戏之前所需准备的开发环境和idea使用方法教程 适用人群:刚开始学习cocos游戏引擎的同学 材料版本信息: 1.cocos creator V3.4.2 2.Vis ...
- 3D 小游戏《欢乐贪吃龙》关键技术盘点 | Cocos 技术派第13期
<欢乐贪吃龙>是由 SK2GAME 基于 Cocos Creator v2.2 研发的一款 3D 休闲小游戏,游戏画面卡通精美,玩法简单,玩家将扮演一只"贪吃龙",在 ...
- 【Cocos Creator游戏开发教程】仿微信趣味画赛车小游戏(三)代码实现
[Cocos Creator游戏开发教程]仿微信趣味画赛车小游戏(一)前言,界面UI [Cocos Creator游戏开发教程]仿微信趣味画赛车小游戏(二)物理刚体关节 项目地址已放到 github ...
- 【Cocos Creator 实战】03 - 如何「拿起」拼图游戏的每块图片
文章目录 概览 主要内容 项目资源 开搞 什么是 zIndex 关于 zIndex 的注意事项 需求分析 核心代码 效果 总结 知识点 下一步 好了,书接上回,继续给我们的拼图游戏添枝加叶. 上一篇地 ...
- 麒麟子Cocos Creator 3D研究笔记零:从零开始入门并发布微信小游戏
编辑器状态截图 不要在意名字,我临时借用的小游戏APPID 一.前言 Cocos Creator,我回来了. 2016年6月,大家都觉得Cocos Creator 2D不够成熟的时候,我就开始商用了. ...
- 生命游戏代码_生命游戏 the Game of Life
引言 群居性昆虫是一个生命,鱼群.鸟群是一个生命,社会.城市是一个有机体,人类的语言是活的,人类的集体行为也是活的.这些复杂系统是如何设计出来的?世界上最著名的游戏之一,Game of Life生命游 ...
- [转载] 康威的人生游戏与轻量级模式
参考链接: 康威的人生游戏(Python实现) 从功能和技术的角度来看,Conway的"生活游戏"都非常有趣. 这可以解释为什么它经常用于代码撤退 . 代码撤退是一种有趣的学习方法 ...
- cocos游戏源码怎么用_亲子游戏怎么玩?游戏方式用对了,才会事半功倍
孩子的出生对于一个家庭来说都是至关重要的大事.如何将孩子抚育好也是父母最关注的问题.从早教到兴趣辅导班.我们变着法子让孩子可以发展的更全面更优秀,请最好的老师.上最好的学校.住着大房子.我们忙着给家人 ...
最新文章
- 算法试题 - 找出最小 k 个数
- Android Monkey(转载)
- 糖豆人服务器要维护多久,糖豆人刚上四天,紧急维护9小时后又延长,玩家:从中午到现在了...
- android带方框倒计时,简单漂亮的彩色方块计时器和倒计时js代码
- mysql手册02_事务
- 有意思的域名Hack网站
- eJOI2019 简要题解
- 如何用个人电脑打造量子模拟器
- 程序员月薪过7万,可以落户北京了
- Livid : 在 26 岁时写给 18 岁的自己
- 佳能(Canon)打印机初始化备忘录
- QGIS制图中面积小的区域不显示注记
- OSI模型 四层发现-nmap(诸神之眼)工具介绍
- k8s UAT改环境
- matlab之常用命令整理(持续更新中...)
- 华为鸿蒙系统界面亮相,比Android操作更简单。
- [内附完整源码和文档] 基于Android网络聊天室的设计与实现
- TAG-9F10 发卡行相关数据(转)
- 【备战蓝桥】JavaB组算法小讲解——GCD和LCM
- SAP CRM系统中的电子商务功能面面观
热门文章
- linux+软盘启动程序,红旗Linux桌面版 4.0软盘启动硬盘安装过程图解 (Red Flag Linux 4.0)...
- EXCEL【数据处理之数据抽取——字段拆分】
- 通过修改dat文档对植物大战僵尸关卡数进行修改
- LAMMPS分子动力学模拟技术与应用 第一性原理计算方法及应用
- AutoCAD2020简体中文语言包
- java adt包_adt下载(Android开发工具)adt离线安装包大集合下载 - 3322软件站
- pdf转换成word转换器注册码
- 弹簧设计计算软件简介
- 还来得及,快来拯救网易相册上的老照片吧!
- 三菱FX3U-PLC 前馈+PID闭环调节实现液压同步控制(比例换向阀)