>我之前曾在这里寻求帮助查看我的生命游戏代码:生命游戏代码方法的问题?(用户界面是完整的,但实际的 GOL 方法没有生成它们应该生成的内容)并收到了反馈(除了我的最后一个问题,它构成了这个问题的基础),但我不确定如何使用我的代码正确格式化发布更新的问题回复。
这是我更新的代码,仅适用于生活游戏的规则。我试图考虑我需要区分出生和生活条件的建议。但它仍然不起作用,甚至比以前做得更少(现在它在第一代之后空白而不是产生废话)。如果有人可以查看它并告诉我我的逻辑是否正确,那将非常有帮助,因为考虑到以下格式,它似乎应该有效:
if ((map = true) && ((count == 2) || (count == 3))){
map2 = true;} else {map2 = false;}
if (map = false) && count == 3)
map2 = true;
.
.
.
update map = map2;
法典:
for (int j = 0; j < y; j++) {
for (int i = 0; i < x; i++) {
if ((map[j][i] = true) && ((neighborCount[j][i] == 2) || (neighborCount[j][i] == 3))){//alive/dead
map2[j][i] = true;
} else {map2[j][i] = false;
}
if ((map[j][i] = false) && (neighborCount[j][i] == 3)){//birth
map2[j][i] = true;
}
}
}
map = map2;
}
看看这个条件:
if ((map[j][i] = true) && ... ) {
请注意,您正在编写
(map[j][i] = true)
这意味着"将map[j][i]
设置为真,然后评估为true
"。换句话说,这会更改map[j][i]
的内容(哎呀!),然后继续执行 if 语句的其余部分。
我相信你的意思是写类似的东西
if ((map[j][i] == true) && ... ) {
或者,更好的是,
if (map[j][i] && ... ) {
这意味着同样的事情,并且不会冒意外分配的风险。
同样,你在这里写
if ((map[j][i] = false) && ...
哪些更新map[j][i]
为假的(哎呀!我想你的意思是
if ((map[j][i] == false) && ...
或者,更好的是,
if (!map[j][i] && ...
请注意,许多编译器在看到与您编写的代码类似的代码时会发出警告,因为这几乎总是错误的做法。您可能需要检查是否有此类警告。如果是这样,现在你知道这意味着什么了!如果没有,您可能希望提高编译器上的警告级别,以便将来不太可能犯这样的错误。
也许有更多的括号:
if ((map[j][i] = true) && ((neighborCount[j][i] == 2) || (neighborCount[j][i] == 3)))