Archive for the ‘Game [游戏]’ Category

Page 1 of 11

元包自动机Cellular Automata)这里就不介绍了,可以在我的其他博文中了解到,有兴趣的朋友也可以去百度一切。这里利用元包自动机进行森林火灾蔓延模拟,当然这肯定不是基于物理的模拟了。最简单的基于元包自动机的森林火灾模型(Cellular Automata Forest Fire Model)大家可以在这个网站 Cellular Automata Forest Fire Model 了解到,作者用Java写了小程序进行模拟。

森林火灾模型介绍(The rules of Cellular Automata Forest Fire Model

  • 燃烧的树(红色格子)会在下一步变成空地(白色格子)。A burning tree (red cell) becomes an empty site (white cell)
  • 如果一颗非燃烧的树(绿色格子)周围有树燃烧,那么它会在下一步变成燃烧的树(白色格子)。A tree (green cell) becomes a burning tree (white cell) if at least one of its nearest neighbors is burning.
  • 一片空地(白色格子)以概率 pGrowth 变成树木(绿色格子)。At an empty site (brown cell), a tree grows with probability pGrowth .
  • 如果非燃烧的树(绿色格子)周围不存在树燃烧,那么它将以 pLightening 的概率遭受雷击( lightening strike)并变成一颗燃烧的树(红色格子)。A tree without a burning nearest neighbor becomes a burning tree with probability pLightening (e.g. lightening strike).

根据以上规则,编写小程序(Following the above principle, we can programme the Cellular Automata Forest Fire Model

CAFire_Begin

CAFire_1

CAFire_2

CAFire_3

CAFire_4
说明 Help

  • pGrowth = 0.02 ;  pLightening = 0.00006;
  • 鼠标/空格键 停止或者开始。(Press SPACE BAR / Click Mouse to pause or to begin.)
  • 键盘”R”键 重新随机生成生命。(Press R to randomly reset the state of all the cells.)
  • 红色表示新增加的生命。(Red Cell means the cell is born.)

参考(Reference):

下载(Download

PS.

  • 可以发现,在一开始,树木(绿色)疯狂的生长。过一段时间后,由于雷电的打击,导致火灾发生。火灾会迅速蔓延,并将树木成群燃烧掉。火灾过后,新的树木又会生长出来。(At the start of this model, you will see trees growing uncontrollably. After a while, lightening strikes will start fires. The fires will spread, destroying trees in big swaths. Behind the fires, new trees will grow up again.)

1 0

最近在微信上有一个很火的小游戏——Core Ball(核心球,又名见缝插针游戏。游戏有很多个不同的版本,不同人编写。游戏玩法很加单,就是一个轮盘不断的转,轮盘上插满了球,然后点击鼠标,发射球(针头)到轮盘上,每一个关卡需要发射不同数量的球,发射完则通关。但发射出去的球不能和轮盘上已有的球发生碰撞,碰撞则重新玩该关卡。游戏玩点:寻找合适的时机发射球,考验你的耐性,考验你是否眼疾手快。

趁着休息时间,我也来编写一个:CJD Core Ball。来到工作室,迫不及待地给同门玩了一下,前面几关大家玩得好开心,完到第10关大家就发疯了,几乎要砸电脑。废话少说,小伙伴们也来试玩一下吧! :-P  :lol:

游戏界面(Game Interface):

CoreBall-1

CoreBall-2

CoreBall-3

游戏说明 (Game Help):

  • 鼠标点击 发射球。(Click you mouse to fire.)
  • 空格键  暂停或者继续。(Press SPACE BAR to pause or continue.)
  • 键盘”R“键 重新从第一个关卡开始。(Press R to restart rome Level 1.)

游戏下载 (Game Download):

Download : CJD Core Ball


12 0

生命游戏其实是一个零玩家游戏(百度百科),这个小游戏是一个简单的二维元包自动机(Cellular Automaton),1970年由英国的数学家 John Horton Conway 提出,关于生命游戏的介绍参考 Wikipedia 的 Conway’s Game of Life

游戏中生命的演化规则(The Law of Life Evolution)

  • 如果原先为活的细胞,其周围活的细胞总数少于2个,则该细胞死去。(Any live cell with fewer than two live neighbours dies, as if caused by under-population).
  • 如果原先为活的细胞,其周围活的细胞总数为2个或者3个,则该细胞保持生命。(Any live cell with two or three live neighbours lives on to the next generation).
  • 如果原先为活的细胞,其周围活的细胞总数大于3个,则该细胞将死去。(Any live cell with more than three live neighbours dies, as if by overcrowding).
  • 如果原先为死的细胞,其周围活的细胞总数刚好为3个,则该细胞将重新获得生命。(Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction).

简单来说就是太拥挤会死,太寂寞会死,给你点阳光你就灿烂!

依据以上规则,编制小游戏,其中初始生命体密度设置为0.1 (Density of Initial Life were 0.1 )



游戏说明(Game Help)

  • 鼠标/空格键 停止或者开始。(Press SPACE BAR / Click Mouse to pause or to begin.)
  • 键盘”R”键 重新随机生成生命。(Press R to randomly reset the state of all the cells.)
  • 红色表示新增加的生命。(Red Cell means the cell is born.)

PS.
很有趣的是,从一开始杂乱无章的状态,经过一段时间后,细胞会达到一种稳定平衡状态。


1 0

著名的几何概率问题——蒲丰投针问题Buffon’s Needle problem),最初由数学家Georges-Louis Leclerc, Comte de Buffon于18世纪提出。问题可表述为:假定长度为L的的针,随机投到画满间距为T的平行线的纸上,求针和平行线相交的概率。同时有趣的是,该概率值和圆周率(PI)有关系,因此,我们可以利用投针试验来计算圆周率(PI)的值。实际上,这个试验更有价值的地方在于:我们可以设计一个试验,它的概率与我们感兴趣的一个变量有关,然后通过大量试验来估算这个量,这其实就是目前使用得十分广泛的蒙塔卡罗法(Monte Carlo method)的主要思想。

接下来我们用计算机来模拟这个投针过程,并估算圆周率(PI)的值。假设针的长度为L,平行线的长度为L,针的中点可以在0~L中随机出现,投针角度为0~PI随机值,则圆周率(PI)的值则为可以通过公式:(2*Total drops/Num of Hits)来估算。Total Drops为投针数量。Num of Hits为针与平行线相交的次数。

投针次数10的模拟实验:



投针次数100的模拟实验:

投针次数10000的模拟实验:


PS.
(1) 随着投针数量的增加,圆周率(PI)值趋向于精确值。
(2) 点击图片可以重新进行试验!体验一下!


14 0

Page 1 of 11