blog.hekt.org

オセロ(3)

バージョン0.3(初期状態がデバッグしたときのままだった!)

  • xとyのどっちが端に近いかを調べるときに勘違いで式を逆になってたのを修正
  • 置けるかどうか調べる関数と実際に置く関数を分けてみた
  • ついでにエラーも一つの関数にまとめてみた

置ける場所が見つかるまでひたすらランダムで座標を生成する、というCPUを作ってみようかな、と。あるいは総当りで置ける座標を調べて、その中から取れる石の数が一番多いものや一番少ないものを選択する、というようなちょっと賢い?CPUもそのうち。残りの空きマスの数を調べて、ある程度減ったらたくさん取ろうとするとか、角に置けるときは何を捨てても置きに行くとか。

それにはまず座標を調べる関数の挙動を少し変えて、置けない場合にエラー文を出す現在の仕様から、置けない場合にFalse(あるいはエラーナンバー)、置ける場合にはそれによって取れる石の座標のリストを返すようにしないと。その前段階としてとりあえず分けてみたのです。(それが物凄い遠回りをしなきゃならない原因になったのですが、それはまた次回に。)

まあ、今の仕様のままランダムで生成した座標をひたすら突っ込んでも、実際に置ける座標に当たるまでのエラー文が延々とプリントされるだけでプログラムの流れとしては問題ないのですが、さすがにそれは何をやってるのかわかっていても怖いので。