読者です 読者をやめる 読者になる 読者になる

うまか日記(仮)

とりあえずプログラミングを勉強しながら、その他のことにも随時書き込んでいこうと思うのである。

インベーダーゲーム その1

正月が明けてから、仕事が始まりどたばた、としている間にすっかり時間が経ってしまった。
こんな調子ではいつまでたっても身に付きやしないぞ。いかんいかん。
といいつつ、今回も教本(↓)に従いながら、インベーダーゲームの再現を行う。
 
 
・左右のキーで自機を移動
・スペースキーでビームを発射
・発射したビームと敵が接触するとその敵が消滅
・敵は時間とともに自機に向かって進行
・敵に進行が進み、自機に接触するとゲームオーバー
 
ざっくり以上のような仕様になる。
 
先ずは、左右キーの入力で自機を操作できるようにするところから。
これは割とすんなりできた。
自機のy軸は固定にしながら、左右のキーの入力があった場合に、x軸を10ずつ変える。
これをずっと繰り返す。
いいぞいいぞ。
やればできるじゃないか、勉強した成果がでているぞ、と悦に入っていたのだが、
その次に、敵の動きを作るところが非常にムズカシイ!
以下に、製作途中のものを貼っておく
 
 
 
緑の旗をクリックするとゲームが始まる。
開始と同時に敵キャラクターがずらずらずらりと縦横に順番に出現したのち、
水平方向に移動を開始、端まで来たら反転して逆方向に移動するのだが、
これは中身としては下記のような命令になっている。
 

f:id:unkumk7284:20170129233247p:image

 
 
敵のキャラクターを50回繰り返しで表示させる。
その際、表示させる座標は、等間隔で順番に表示させるため、
Y座標は敵の数から1を引いて10で割り、小数点以下を切り下げにした数値に37を掛け、そこから30を引いた位置に、
X座標は敵の数から1を引いて10で割った余りの数に、30を掛け、そこから155を引いた位置にする処理がされている。
何を言っているのか自分でも意味不明なのだが、要するに、こうすることで、よこは37、たては30の間隔をあけて敵を並べ、1列が10匹になったら、次の列、、、という動きで50匹の敵を並べることができるらしい。
 
敵を表示させるだけで非常に苦労したのだが、さらにこれを左右に移動させるには反転指示・進行方向という変数を用いて、
0・1のフラグによってその方向を管理している。
これについては気力がなくなったので説明は割愛する。
 
見ているとわかるが、バグがあるようで挙動不審だ。
右の反転位置がおかしいのと、開始直後になぜか1度だけ右方向に動く。
なぜでしょうね。
うーむ。
 
というわけで次回はバグとりをするところから始める、、、
 
疲れたのでおわり。