ヌルポインター親衛隊

社内でひとりエンジニアやってます。

Python学習8, 9, 10日め(オセロ完成!)

ここ3日くらい少し慌ただしく、合間の時間にプログラムを改良していました。テストコードを発展&抽象化し、オセロの反転機能のテストを動かし、クラスに実装する。オセロなんて簡単に作れると思っていましたが、Pythonの基礎学習と合わせて10日かかってしまいました。

作ったもの

f:id:ell_sub2:20190316221957p:plain

ごくごく簡単なオセロで、十字方向と斜め方向の判定・反転(挟んで裏返す)が可能です。今のところ8近傍にコマが置かれていなくても新たにコマを置けてしまいますが、その判定は簡単に実装できそうです。

ソースコード

初めて扱うオブジェクト指向で、かなりの駄作です。世の中には7行でオセロ(紹介ページ)を書いている方もおられますので、もっと短く簡潔に書けるはず。しかもCPU対戦だぜこれ...。
使い方の練習も兼ねて、一先ずソースコードGitHubに上げてみました。公開するのも恥ずかしいですけど、そのままじゃいつまで経っても恥ずかしいプログラムしか書けない気がするので、自戒の意味も込めて公開します。

github.com

感想

これまで学校で習ったC言語を使ったりしてプログラムを書いたり書かなかったりしてきましたが、思えば大きく達成感を感じたのはOpenCVでおもちゃの時計の時間を認識させるプログラムを書いたときだけでした。パターンマッチングや機械学習等を使わずに、「時計の外周円を認識して、外側の縁で傾きを検知・補正して、外周円の中心から長短両方の針の先端位置を走査して...」と、とても泥臭い方法で、学友と夜通し実装したことを覚えています。
今回は、Pythonの文法以外一切の参考資料無しで、自分の頭の中にある「オセロゲーム」の動きを実装することができて、とても充実感を感じます。あぁ、これがプログラムを書くための純粋な原動力なんだ、と忘れていた感情を取り戻すと共に、その感情を絞り出すにはもっと難しい課題をこなす必要があるな、と感じます。

まだオブジェクト指向プログラミングに慣れていないこともあるので、今後も簡単なゲームプログラムづくり等を通して鍛えていきたいです。