(не могу придумать лучшего заголовка, не стесняйтесь редактировать его для заголовка, который лучше описывает вопрос)
У меня есть следующий метод:
bool CalculateNewState(int adjacent, bool currentState)
{
if (currentState == true)
{
foreach (int n in liveRule)
{
if (adjacent == n)
{
return true;
}
}
return false;
}
else
{
foreach (int n in becomeAliveRule)
{
if (adjacent == n)
{
return true;
}
}
return false;
}
}
Этодля игры о жизни клона.Я хочу реализовать то, что пользователь может создавать свои собственные правила.
bool currentState
сообщает методу, жива ли ячейка или нет.int adjacent
сообщает методу, сколько живых соседей имеет ячейка.
Что я хочу достичь, так это когда пользователь говорит: 2,3 and 5 neighbors keep the cell alive
.Что он будет перебирать массив (liveRule
), который содержит 2,3 and 5
.когда происходит какое-либо совпадение, оно должно возвращать true
, иначе false
.
. Здесь происходит то, что после возврата true он продолжает повторяться и в конечном итоге возвращает совпадение с последним элементом в liveRule
.
Что мне нужно сделать, чтобы прекратить итерации после того, как произошло совпадение?
Конечно, возможно, я неправильно подхожу к этой проблеме.Я начал с предложений здесь .
(пытался описать это в меру своих способностей, но все еще кажется довольно неясным)
Это C # в Unity3D.