前回までの状況はこちら。
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/HokkaidoWar
さて、現在のソースでは、ターンが飛ばされる都市がある事が分かりました。
原因はこの_citiesを一つで存在する都市と行動する都市を管理していたためです。
ここで行動済みの都市を削除すると(図の真ん中)、
図の右のように行動順が二つズレてしまうんですよね。
なので、次に行動するはずだった都市が飛ばされてしまいます。
なので、存在する都市と行動する都市を分けて管理する必要があります。
List<City> cities = null;
List<City> aliveCities = null;
必要になるのは、List<City>をコピーする処理。
このとき、Listの部分だけを複製して、中の都市オブジェクトは共有で管理します。
private List<City> copyCity(List<City> cities)
{
List<City> ret = new List<City>();
foreach(var c in cities)
{
ret.Add(c);
}
return ret;
}
こんな感じで修正してみました。
これで、順番が飛ばされることはなくなるはず。