5

姓名or花名:@冒泡的马树

独立项目名称:基于 JSXGraph 的生命游戏在线演示网站


SegmentFault 思否社区的小伙伴大家好!我是沉迷于赛博朋克编程世界的新手村菜鸟马树菌,目前在深圳大学电子科学与技术专业读大四。如果谈到梦想的话,因为深受《硅谷》影响,将来想要在互联网领域里闯出一片天地,并深耕某个细分领域做到最强!不过目前面临留学或工作的选择,还是想找到一个东家先养活自己.....

从去年四月份开始到今年四月份,自己开发了一个使用 JSXGraph 动画库实现的生命游戏在线演示网站。项目初衷是实现一个可以立即在 WEB 端运行且用户体验友好的生命游戏方案,降低对生命游戏自动机模型感兴趣的人们体验的门槛,也可以说是更好的进行数学科普。

值得一提的是,项目得到了 GitHub Education 团队的嘉奖,还在 GitHub Education 的学生作品页面得到展示。


  项目介绍

立项日期:约2019年4月份开始

项目背景:基于自己实现的生命游戏JS算法代码构建一个优雅的界面

面向群体:对生命游戏感兴趣的人群

建立目的:折腾出一个跟网上见到的黑白格子模式的生命游戏实现都不太一样的生命游戏在线演示网站

生命游戏

生命游戏

生命游戏传送门

生命游戏又称细胞自动机。反映了生命演化的规则。它由剑桥大学的数学家约翰·康威所提出,并且借由 1970 年发表在《科学美国人》上的文章而变得出名。 生命游戏原理:生命生活在二维环境中,每个生命生活在一个方格中,每个细胞在下一个时刻的状态取决于周围 8 个细胞的活着或死了的状态。

算法描述:

对于一个存在活细胞的方格:

周围有 1 个或无活细胞的话,由于孤独,细胞死亡;

周围有 4 个以上活细胞的话,由于拥挤, 细胞死亡;

周围存在 2 或 3 个活细胞的话,活细胞存活。

对于一个空方格或存在死亡细胞的方格:

周围有 3 个活细胞的话,方格有活细胞生成。

技术栈:

前端:

JSXGraph、Bootstrap、EJS、JQuery;

后端:

Heroku Serverless、Node、Express。

功能描述:

用户可以在画布上点击激活或取消细胞,选择一些知名的预设细胞模式,还可以切换中英文模式。游戏开始后用户可以暂停、继续或重置,以及选择不同的演化速度。

快问快答

Q:思否技术编辑:@宗恩

A:@冒泡的马树

Q:如何定义“独立开发者”?

A:“独立开发者”定义的着重点应该是项目的独立性,自始至终完全凭开发者的个人意志,臻于至善,不受纯粹商业气息的浸染以至缺乏了灵性。项目的独立方才彰显开发者的独立精神,但并不应该就据此绑架了开发者,要求其一定得实现所有项目的独立。

Q:为什么选择成为一名独立开发者?
A:只是凭借个人的兴趣爱好独立捣弄一些项目罢了,所谓“独立开发者”称号仅是副产物。兴趣才是第一性驱动力。

Q:独立开发过程中遇到过哪些困难?最难搞定的是什么?
A:最主要的还是拖延症吧。这个时候开发进度实在感人。

其他使自己十分刻骨铭心的困难的话我想提及一下自己刚开始使用 JSXGraph 动画库的时候遇到的问题。自己选用 JSXGraph 来实现生命游戏界面的的一个很重要的因素就是自己十分喜欢它的红点元素,让人觉得很有细胞的感觉,而且 JSXGraph 是一个十分成熟完整的框架了,有着十年多的历史,文档方面都十分完善,不过国内没能找着几个使用它的项目作为参考,15 年的时候倒有个方正公司的工程师用它搭了一个数学演示网站。

所以自己也就只能咬着牙啃官方文档了。刚开始的时候在如何创建红点并通过鼠标点击事件取消红点这个技术细节上耽搁了好久,因为官方文档并没有直接给出介绍。自己无计之下只能去 StackOverflow 的 JSXGraph 主题下求助,也去 JSXGraph 的仓库里提了 Issue。最终的话自己是翻遍了官方文档的示例才在一个例子中找到了与这个技术细节有关的蛛丝马迹。后来 JSXGraph 的核心维护者在 StackOverflow 上帮忙回答了下这个问题,自己从而第一次与他相识,某所德国大学的数学教授。几个月后自己的网站总算可以拿出台面了,再次浏览 JSXGraph 的官方网站时,了解到他们正准备举办第一届 JSXGraph 国际会议,对自己的作品还算颇有信心的我也便用 LaTeX 写了篇演讲简介发过去了,没想到得到了他们的赞赏。自己激动的小心情呐!不过由于疫情因素,他们当时还没有决定线下举办还是全程线上。不过,前两天这位德国教授来了邮件说他们最终决定将会议全程搬到线上,也邀请每一位与会者都发表自己的演讲或准备工作坊。自己看来还是得提前准备一下,到时候还得全英演讲,推销阐述下自己的生命游戏作品,以及其中的哲学——

呃!好像有些跑题了,战胜困难后的喜悦也不算离题吧(^-^)V~~

Q:推荐你最喜欢的一款产品 / 游戏 / App?并说明原因
A:Microsoft To Do. 每天一个小目标。

Q:分享一下你的技术栈?
A:目前都是Python + JavaScript,先前的话也捣弄过PHP。

Q:分享一下你日常的工作流?
A:疫情影响,一直待在家里。Microsoft To Do每日提醒戴尔卡耐基的名言“只生活在今天的密封舱里”,检查邮箱,在Cousera、Frontend Masters上充充电。依具体的项目,打开Vscode、Pycharm、Jupyter Notebook或微信小程序IDE,沉浸其中,遁入虚空。

Q:日常兴趣爱好
A:散步、撸猫、听古典及一些技术播客

生活照和工作台的照片

冒泡的马树

右侧为@冒泡的马树

工作台


给小白开发者的建议

自己也是走过很多弯路过来的,对于小白的话,还是从成功部署一个博客网站或其他项目开始吧,感受到编程带来的快乐和成就感,然后借助这份快乐,去深入钻研某一门语言,并了解一下算法和数据结构,练手一些项目,持续提升自己的编程能力,最终达到一定的水平。

(我不是科班出身的,专业的课程也都是些硬件、物理方面的,一直都是坚持自学享受编程快乐走过来的,相信你也可以……)

自荐一下

基于JSXGraph实现的约翰康威生命游戏在线演示网站,网站 UI 设计优雅,功能齐全, 是体验生命游戏的好选择。:)


该内容栏目为「SFIDSP - 思否独立开发者支持计划」。为助力独立开发者营造更好的行业环境, SegmentFault 思否社区作为服务于开发者的技术社区,正式推出「思否独立开发者支持计划」,我们希望借助社区的资源为独立开发者提供相应的个人品牌、独立项目的曝光推介。

有意向的独立开发者或者独立项目负责人,可通过邮箱提供相应的信息(个人简介、独立项目简介、联系方式等),以便提升交流的效率。

联系邮箱:pr@segmentfault.com

徐九名片

思否二维码


宗恩
2.9k 声望55 粉丝

关注新科技