首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态的如果声明?

动态的如果声明?
EN

Stack Overflow用户
提问于 2012-01-18 14:01:26
回答 7查看 1.8K关注 0票数 4

我正在做一个生命游戏克隆(不能链接wiki,因为它已经关闭)。基本功能已经完成,但我想让用户也可以选择定义自己的规则。生活规则的标准游戏是:

有2个或3个邻居的

细胞继续存活。

0-1和4-8相邻的细胞死亡。

有3个邻居的死细胞活了下来。

这很容易用2个if-语句来完成.但是,用户也可以定义如下内容:

1-3或5-7邻接的

细胞继续存活.

另一个号码的细胞死了。

有两个或四个邻居的死细胞会活下来。

我如何在if-语句中实现这一点?我能用某种清单来核对吗?

编辑:我在这里看到了一些很好的解决方案。必须确定什么最适合我的代码。对于任何还在回答的人:我可以正确地处理用户输入,不要担心;)

我可能会有一个窗口来询问How many neighbors to stay alive?How many neighbours to become alive when dead?,以及一些文本框。它们还将检查输入是否有效。

(这里是C# in Unity3D)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-18 14:11:51

我只会检查那些会导致细胞死亡的条件。我会按照这样的思路来构造我的功能:

代码语言:javascript
复制
bool CalculateIfDead(Cell c, int[] deadlyCountRules)
{       
   foreach(int n in deadlyCountRules)
   {
      if(c.NeighbourCount == n)
      {
         return true;
      }
   }
   return false;
}
票数 1
EN

Stack Overflow用户

发布于 2012-01-18 14:05:25

我会定义一个带有适当值的枚举,Die,NoChange。

然后创建一个列表/数组,并为每个可能的邻居(0到8)创建一个该类型的元素。然后,用户可以以何种方式设置这个列表(可能是将枚举分隔为字符串的逗号分隔列表,然后将其拆分为枚举类型)。

然后,你所要做的就是数数邻居,并执行查找和相应的行动。

代码语言:javascript
复制
var UserActionList =
    "Die, Die, NoChange, NoChange, Propogate, Propogate, Die, Die, Die"
    .Split(',').Select(s => Enum.Parse(typeof(CellAction), s).ToArray();

// Count neighbours

swtich(UserActionList[NeighboursCount])
{
    case Die:
    /////

    case Propogate:
    /////
}
票数 1
EN

Stack Overflow用户

发布于 2012-01-18 14:09:02

试试解决方案matix。

代码语言:javascript
复制
bool life[] = new bool[] {false, false, true, true, false, false, false, false, false};
bool die[] = new bool[] {true, true, false, false, true, true, true, true, true};
bool alive[] = new bool[] {false, false, false, true, false, false, false, false, false};

bool shouldLife=live[count];
bool shouldDie=die[count];
bool getAlive=alive[count];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8911405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档