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

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

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

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

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

 
このsaturn_voyagerというゲームは、疑似3Dとなっており、
迫りくる隕石群を避けるというものになっている。
(saturnということなので、土星の輪っかに迷い込んだという設定か?)



隕石を避けるだけ(ビームとかは出ない)の単調な内容で、
ゲームとしては正直、あまり面白くはない。

隕石との当たり判定も分かりづらく、
当たりに行こうとして当たらず、
気を抜くと当たってしまっているという感じである。



ただ、プログラムとして、100行程度でこのようなゲームが作れるというのが、
また、興味深い。

ちなみに、ダウンロードしたプログラムには、使われていないmp3やpngファイルが含まれていているのだが、
実際どのように使おうとしていたのか、気になるところだが。

発展としては、これらをプログラムに組み込むといったところか?

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

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

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

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

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

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

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


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

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

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


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

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


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

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

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

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

ちなみに、プログラム(スクリプト)は写経しなくても、
著書に示されたURLからダウンロードすることができるので、
すぐに実行することも可能である。

 
Pythonのプログラミング環境が整い、
ようやくゲームが作れると思ったら、
意外に基礎編が6章からなり、Pythonの基礎がみっちり叩き込まれることになる。
Pythonに関しては、ちょいちょい使ってはいたが、
よく知らなかったことについても書かれており、結構勉強になった。

そして、ようやく最初のゲームCaveという横スクロールゲームを写経して実行してみた。

真ん中のスペースシャトルをスペースキーで操作するゲームだ。
スペースキーを押しっぱなしにすると、上方向に加速度がかかり、
スペースキーを離すと、下方向に加速度がかかるようになっている。
上や下の緑の部分(これがCaveつまり洞窟の壁)にぶつかるとゲームオーバーで、
スペースキーを押す長さで壁に当たらないように調整する。
ぶつからずに長く進むほど、右上のScoreも増えていく。


このCaveは、実行と同時にゲームが始まるので、
最初からスペースキーを押しておかないと、
すぐに下に落ちてゲームオーバーとなってしまう。
そして、ゲームオーバーになったらWindowを閉じて、
再度Pythonスクリプトを実行しないといけない。

とはいえ、Pythonでこのようなゲームが作れるのがわかったので、
なかなか楽しいものである。

今後のアレンジとしては、リスタート機能を付けてみるなどすれば、
より勉強になるだろう。

「ゲームを作りながら楽しく学べるPythonプログラミング」をやってみた(その1:Ubuntuでの環境構築)

2020-08-07 20:58:14 | Python
昨日書こうとして、やはり先延ばしになってしまったが、
田中 賢一郎氏著「ゲームを作りながら楽しく学べるPythonプログラミング」
を写経して作成したゲームについて書いてみる。


先日久々に起動したデスクトップのWindowsマシンのHDDがクラッシュしてしまったので、
うちにあるWindowsマシンは、非力なノートPCしかない。

非力なノートPCでプログラミングするのも大変だと思い、
デスクトップPCのHDDをSDDに換装したものの、
Windows OSのリカバリディスクがどこにあるのかよく覚えていない。

折角のいい機会なので、このデスクトップPCに、
Ubuntu 20.04 LTSを入れてみた。
設定で色々わからないことも多いが、
最近のLinuxは使いやすくなってきたと思う。

そして、Pythonのプログラミング環境を構築するため、
を参考に、Anacondaをインストールしてみた。
Windowsの場合は、Anacondaをインストールすると、
Navigatorという管理GUIもインストールされ、
PythonのIDEであるSpyderもインストールされたはずである。
Ubuntuの場合は、管理もCUIで行う必要があるし、
Spyderも別途インストールする必要があるみたいだ。
といってもインストールは、簡単で、
sudo apt intall spyder
をターミナルで実行すればよい。

とりあえずこれでPythonのプログラミング環境は整ったが、
ゲーム開発用Pythonの仮想環境をAnacondaで作ってみた。

conda create -n pygame-env python=3.6 anaconda

を実行して、pygame-env という仮想環境を構築した。
Anacondaにどのような仮想環境が存在するかは、以下のコマンドで確認できる。

conda info -e
>>
# conda environments:
#
base * /home/username/anaconda3
openai_gym /home/username/anaconda3/envs/openai_gym
pygame-env /home/username/anaconda3/envs/pygame-env

pygame-envが構築されていることや、
baseに*がついていてこれが今アクティブであることがわかる。
そこで、仮想環境を切り替えるため、以下のコマンドを実行する。

conda activate pygame-env

これでようやくスタートラインに立つことができた。

継続は力なり!

2020-08-06 12:59:52 | 日記
とは言うものの、ブログを全然更新できていない。

とりあえず、今勉強中の
田中 賢一郎氏著「ゲームを作りながら楽しく学べるPythonプログラミング」
について、今夜から書いてみようか?

昨日までに、CaveとMinesweeperまで作ってみた。

ちなみに、上記の本は、Kindle Unlimitedで、現在借りている本である。
(Kindle Unlimitedは、一度に10冊まで本を借りることができ、
それ以上借りるには、その都度返却する必要がある)