QClub 太原,2014年11月15日 Global Day of Coderetreat

Stella981
• 阅读 828

QClub 太原,2014年11月15日 Global Day of Coderetreat

活动时间: 2014年11月15日星期六,全天(9:00-18:00)

活动地点: 高新区体育路科技街口,大豪益达402(从KK这边的巷子进去,统一这面的4层)

活动主题: 编程道场,Global Day of Coderetreat 2014

报名地址: https://jinshuju.net/f/Jdh7pb

活动简介:

QClub 太原社区再次参与Coderetreat 全球活动。你希望锻炼自己的编程技巧吗?希望体验测试驱动开发和结对编程是什么样的吗?那就来参加这个免费的编程练习吧。在这里没有工作的压力和无奈,有的是你对编程技巧的追求以及和其他志同道合者的交流。这是软件工艺者(Software Craftsmanship)的聚会。请自带电脑并安装好开发环境和单元测试框架(保证两人一台即可)。

活动以40分钟为一个小节,中间会穿插各种限制条件来锻炼编程技巧。

什么是CodeRetreat? CodeRetreat是一个一天的集中练习的活动,专注于软件开发和设计的基础。通过给开发人员提供专注练习的机会并远离完成工作的压力,CodeRetreat这种形式已被证明是提升编程技能的有效方法。通过练习模块化和面向对象的基本原则,开发人员可以提高他们编写代码的能力并使变更成本最小化。

考虑到本地行情,笔者特地做一番剧透来吸引到在座各位。我们此次编程练习的内容是“生命游戏”(中文介绍英文介绍),用程序代码来实现一个“细胞自动机”。当然,为了增加挑战性,每次完成任务时会添加限制条件,提高趣味性。

这个细胞的世界是由“二维数组”组成的世界,玩家扮演的是世界之外的“上帝”,数组每个元素都视为一个“细胞”,它有两个状态:生存和死亡。每个细胞与以自身为中心的周围八格细胞产生互动。对于任意细胞,规则如下:

  • 当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态(模拟生命数量稀少);
  • 当前细胞为存活状态时,当周围有2个或3个存活细胞时, 该细胞保持原样;
  • 当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态(模拟生命数量过多);
  • 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态(模拟繁殖);

可以把最初的细胞结构定义为种子,当所有在种子中的细胞同时被以上规则处理后, 可以得到第一代细胞图。按规则继续处理当前的细胞图,可以得到下一代的细胞图,周而复始。

需要注意的是“同时处理”,一次性对当前状态的数组进行处理,完毕生成另一个新的数组为下一组状态(单个细胞处理的结果不会重新参与下个细胞的运算)。

以附件的HTML版(演示例子)为例,用<td>来表示一个个细胞,用单元格的样式名表示细胞的存活,当网页载入的时候创建好一个表格并随机的设置一些细胞的初始状态。 设表格为正方形,表格行的数量为length,则计算一个细胞cell(i,j)的状态可以用table.rows(i).cells(j).className来判断。计算其周围8格的状态对(i,j)做加减就可以,如果单元格处于边界上,则计算另一条边界上的细胞『cell(0,0)的左上角是,cell(length-1,length-1)』,这样每个细胞都有8个邻居了。

为了进行循环迭代,还要用到网页的setIntervalclearInterval函数。

<!-- lang: js -->
/**
 * 周期性地调用一个函数(function)或者执行一段代码。
 *
 * @param {Function} func 要重复调用的函数
 * @param {Number} delay 时间间隔,单位是毫秒
 * @return {Number} 此重复操作的唯一辨识符,可以传递给clearInterval
 */
function setInterval(func,delay);
/**
 * 取消掉用setInterval设置的重复执行动作.
 *
 * @param {Number} flag 重复操作的唯一辨识符
 */
function clearInterval(flag);

相信各位对这个游戏有了初步的印象,那么欢迎报名参加!

最后感谢活动赞助:北京博微志远信息技术有限公司。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这