不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

「ゲームを作りながら楽しく学べるPythonプログラミング」をやってみた(その3:mine_sweeper)

2020-08-13 22:45:04 | Python
田中 賢一郎氏著「ゲームを作りながら楽しく学べるPythonプログラミング」
を写経して作成したゲームのつづきである。

※プログラム(スクリプト)は著書に示されたURLからダウンロード可

 
マインスイーパーって意外にハマって、何時間もやってしまうゲームであるが、
これがPythonで作れるってのは驚きである。

100行を超えるなかなかの大作ではあったが、
本にあるとおりにコードを打ち込んでいけば問題なく作れた。

ただ、私の場合は、Kindleで表示させているのだが、
どうやらKindleだと掲載されているソースコードのインデントがずれてしまうらしく、
インデントが意味を持つPythonの場合に、なかなかこれが厄介であった。

起動すると次のような画面が表示される。


このマス目のどれかを適当に選んで、左クリックすると、
爆弾(mine)がなければ、マス(タイルというらしい)がどんどん空いていくことになるのは、通常のマインスイーパーと同様である。

しかし、このマインスイーパは、かなり親切設計になっていて、
周囲に埋まっている爆弾を数を表す数字を適当に左クリックしていけば、
爆弾のないマスが勝手に開いていってしまう!!

どんなに爆弾の数を増やしても、最初で爆弾を引かない限り、
簡単にクリアできてしまうのだ。


これじゃあちょっと、ゲームとしてはどうかと思うが、
やはりPythonでマインスイーパーを比較的簡単に作れてしまうということに、
改めて感動を覚える。
(あまり理屈までは理解できていないが・・・)

Ubuntuにデフォルトで入っているGNOMEマインスイーパーであれば、
爆弾が埋まっているだろうと推測される箇所に旗を立てていれば、
その周辺の数字をクリックすることで明らかに爆弾がないところは、
勝手に開くようにはなっている。


ただ、その推測が間違っていると、クリックした瞬間に爆弾が炸裂する場合があるので、

Pythonで作ったマインスイーパーも旗のギミックを実装するというのが、
発展として想定されるだろう。
私は無理だが・・・