珈琲焙煎者の観察

地下部屋の珈琲焙煎者

Pythonでのプログラムの最初。インベーダーゲームをつくる。

Pythonを勉強始めるにあたって、全くわからないところからのスタートなので、「インベーダーゲームのつくり方」を理解することを目標に、やっていくうちにわかるだろうということを記していく。

f:id:honda-satoru:20191212235354p:plain
figure 001: window

まず、数日かけてpythonで書かれたインベーダーゲームソースコードを検証した。自分のイメージするインベーダーゲームに近いコードは1つしか見つけることが出来なかった。

github.com

人がインベーダーゲームをイメージしたとき、それはいろんな感性があり、違いがあるが、今回その要件としたことは、以下だ。

・トーチカ(エイリアンとプレーヤーの間にある防護壁のようなもの。)がある。また、トーチカは、エイリアンの攻撃によっても、プレーヤーの攻撃によっても弾との当たり判定によって、段階的に破壊される。また、エイリアンと接触しても破壊される。

・エイリアンが横動きする時、画面の端まで移動する。エイリアンの数が減れば、最終的にどのエイリアンが1つ残っても、この一つが、画面の端から端まで移動しつつ下降してくる。

この2つだけが要件だが、これを満たすソースコードを探して検証したところ、1つしかなかった。とりあえず、動作だけ確認していく過程で、解ったこともある。プログラムコードを書く(コピー&ペーストです)エディター、pythonコードの実行のさせ方、それはつまり開発環境というものだ。これは、後からまとめることにする。

このソースコードから実行しているインベーダーゲームが動作しているのは、このような感じ。作成者によってyoutubeにアップロードされている。

www.youtube.com

何日かかけていくつかのコードを読んで、全体に目を通すことによって、最終的に選んだプログラムのコードの中に、python特有の構文、オブジェクトオリエンテッドのクラス継承、スタティックメソッドなど含まれていて、このコードを見ていくことでpythonの学習は一通りできそうだと感じた。かなりきれいにコーディングされている(洗練されているというべきか)ので、逆にpython初めての自分には、わかりにくいわけだが、5年以上前に公開されているにもかかわらず作者によってコードが推敲されていて、python3で正常に動作するとも含めて好都合なのでこれをベースに学んでいくことにする。

後ほど、このソースコードを元に編集していくが、コード自体をこの場で読めるように貼っておく。

そして、その後の過程を経て変形したのはこちら。 インベーダーゲームのつづき - 珈琲焙煎者の観察

spaceinvaders_copy.py

gist.github.com

ファイルの用意

一つ空っぽのフォルダを用意して、その中に上記のソースコードファイルと、 fonts, sounds, images という3つのフォルダを作り、

fontsフォルダの中には、 以下のURLからダウンロードしたフォントファイルを収納する。 https://github.com/leerob/Space_Invaders/blob/master/fonts/space_invaders.ttf

soundsフォルダの中には、 以下のURLからすべてのサウンドファイルをダウンロードして収納する。 https://github.com/leerob/Space_Invaders/tree/master/sounds

imagesフォルダの中には、 以下のURLからすべての画像ファイルをダウンロードして収納する。 https://github.com/leerob/Space_Invaders/tree/master/images

これらの収まったフォルダは、SpaceInvadersという名前にすることにする。

画面の位置やサイズ、Figure 002、Figure 003のようになる。

f:id:honda-satoru:20191214014236p:plain
Figure 002

f:id:honda-satoru:20191213034136p:plain
Figure 003

ここまでで、「こういうものをつくりたい」と、そういうこと。材料はそろったので、ではどういう風に考えられて、上記のコードになったのか勉強していく。