第2.9話 共同作業
隆也は頭を抱えていた。机に両肘を乗せ、手で頭を覆っている。耳を塞いでいるようにも見えた。
昼休みが過ぎた。普段なら、クラスメイトの大半が、眠気との戦に神経を集中している頃であるが、今日はまるで、第三勢力が現れ敵が跡形もなく消し去り、それが自分達に刃が向くのかを見極めるように、目を凝らして、耳を凝らして、授業を聞いていた。
昨日の一時間目、担任の先生が遅れて来た。それを使えると思ったのだろう。隆也の席の近くの女子達が、高校デビューを目論んだ。それはあっけなく撃沈。すぐに教室は平常運転に戻った。
今、彼女らは静かであった。彼女らは隆也の前の方の席に座っていた。問題は後ろの席である。昨日の弔い合戦であろう、次は男子達が声を出していた。昨日の今日であり、授業を妨げるような内容ではない。むしろ、授業に関しての質問を多くしていて、順調に進んでいた。
それでもクラスメイトが気にしていたのは、彼ら彼女らが、このクラスの中心グループとして足るかどうかだ。大事なたった一年を左右するのは、今と言っても過言ではない。一度出来上がったものを崩すことは難しく、今のうちに見極める必要があった。
しかし、他の生徒たちが、あのグループを相応しくないと判断しても、何かできるわけでもない。せいぜい、あからさまな溜息を出すくらいであり、それに気づかれれば、そんなつもりはないと目をそらすくらいである。見極めるというよりも、祈ると言った方が、しっくりくるだろうか。
学校行事にあまり関心の無い自分にとって、クラスに中心グループが出来るのは悪い事ではない。
小学生の時も、中学生の時も、みんなでいっしょにかんがえよう、などという、自分には荷が重たいものがあったが、いつも黒板を眺めているだけで済んだ。適材適所を考えれば、クラスにはああいうグループが必要なのである。
昼以降の授業は問題無く終わった。隆也の前に座る女子達も、最後の方では黒板に書かれた問題に積極的に取り組んでいた。昨日よりも楽しそうに見えた。不安そうだった隆也も、今は一緒になって声を出し、笑っていた。適当に答えて正解だったときは、他の生徒からも少し笑いが起きた。
帰りにハンバーガー屋に寄るらしく、隆也達はホームルームが終わると同時に教室を出ていった。あのグループは隆也以外も、部活には入っていないらしい。
今度俺らもどっか食べに行くかと言いながら、前の席に座る山岳部の芝竹君が、席を立ち教室を出ていった。それに習って俺も部室に向かう。すでに授業の内容と風景は頭から抜け、シューティングゲーム制作のことで埋められていった。
いつものように職員室に鍵を取りに行き、第二コンピュータ室の前で秋晴さんと挨拶をして、シューティングゲームの製作に取り掛かった。岡林先生は来ていない。
弾を作る前に、やることがあった。弱い敵である羽が生えた蛇は何体も出てくる。同じ動きをするキャラのプログラムを、いくつも書くということはもちろんしない。そのかわり、敵全体を扱うためのプログラムが必要だ。
早速、シューティングゲームのプロジェクトを開いて、プログラムを書くファイルを作成する。
敵の管理者という意味で、EnemyManagerと名付ける。エネミーマネージャーの持つ情報として、羽が生えた蛇を入れる。ここで配列を使う。羽が生えた蛇の数はあらかじめ決まっているわけではないので、要素数を変更出来る動的配列だ。
次にアップデート関数と、描画関数を作る。複数の羽が生えた蛇を扱うために、アップデート関数と描画関数の中で、繰り返し処理を行う。もちろん繰り返す回数は、羽が生えた蛇の数だけだ。エネミーマネージャーのアップデート関数の中で、羽が生えた蛇のアップデート関数を呼び出す。描画関数も同じだ。
そして、敵というのは、出現してからずっとゲーム中にいるわけではない。プレイヤーに倒されたり、画面の端を超えたりすれば、消す必要がある。
プレイヤーに倒されたか、画面の端を超えたかの判定は、羽が生えた蛇のプログラムで行う。倒されたということは、HPが0になったということなので、判定はHPが0以下かどうか、画面の端を超えたという判定は、横の座標が画面の左端である0より小さいかどうかである。
二つの判定をそれぞれ関数化して、エネミーマネージャーで呼び出せるようにする。
新たに作った関数を、マネージャー側のアップデート関数で呼び出す。羽が生えた蛇のアップデート関数を書いている繰り返し処理の中だ。
順序としては、エネミーマネージャーのアップデート関数が呼び出され、羽が生えた蛇のアップデート関数が呼び出される。そして、HPや画面の端を超えているかを確認し、判定次第で削除。繰り返し処理のため、また別の羽が生えた蛇のアップデート関数が呼び出され、削除するかの判定に入る。敵のアップデートが全て終わったら、次はエネミーマネージャーの描画関数を呼び出し、その中に書いてある羽が生えた蛇の描画関数が呼び出されて、アップデートでの変化が画面に反映される。
また、羽が生えた蛇を生成するタイミングを設定するために、EnemyManagerの情報として、羽が生えた蛇用の経過時間と生成するタイミングの二つを新たに追加した。そして、アップデート関数の中の羽が生えた蛇の繰り返し処理の上に、経過時間のカウントと、経過時間が生成するタイミングを越したかどうかの判定を書き、超えていた場合、新たな羽が生えた蛇の生成し、経過時間を0に戻す処理を書いた。メインループの中に、エネミーマネージャーのアップデート関数と描画関数を書くことも忘れない。
羽が生えた蛇が画面の左側を過ぎた時に消されているかを確認するために、羽が生えた蛇の数を表示させるようにする。メインループのエネミーマネージャの描画関数の下に、文字列を描画する関数を書く。この関数もライブラリにあるものだ。
早速実行してみる。羽が生えた蛇は指定したタイミングで出てきたが、画面を超すよりも少し早い段階で消えてしまっていた。
このライブラリの場合、画像の原点というのは左上らしく、原点が画面の左側を超えたかで判定した場合、まだ画像が画面に表示されている間に消されてしまうのだ。
対処として、まずは原点を画像の真ん中にする。描画する位置に、画像のサイズの半分を引けばいいのだ。画像のサイズとは、元の画像サイズに、ゲーム内でのサイズを掛けたものだ。ただこれだけでは、画像の真ん中が画面の端を超えた段階で消えてしまう。次に変更する部分は、画面を超えたか判定する関数だ。判定を、羽が生えた蛇の位置よりも、画面の左側から画像サイズを引いたものの方が値が大きいときとする。
実行して、羽が生えた蛇が最後まで表示されてから消えているかを確認する。
次に弾の作成だが、少し疲れた。立って何度か腕を大きく回す。座り直してから、目を瞑り軽い瞑想に入る。股を大きめに広げ、腕を組む。教室では出来ない格好だが、これが一番落ち着くのだ。
しばらくすると、睡魔の気配がしたので、目を開ける。
秋晴さんはペンタブを使って絵を描いている。横目で見ただけなので、何を描いているのかはわからないが、全体的に緑色だったので、前に言っていた遺跡の絵だと予想する。
自分も頑張らないとなと、パソコンに向かう。画面は黒くなっていた。一定時間操作が無いと、勝手にスリープ状態になるのだ。マウスを動かしてパソコンを起こす。
今日中には、弾を撃てるようにしよう。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます