17日目:pygameでゲーム作ったお^^


前書き

初めまして1回生のRennka(Twitter:@rennka0831)です。

やりたいことが右往左往しているのですが、今回は大学の授業にて「pythonを使って何かプログラムを作る」ということでそれに関して書かせていただきます。

事前に忠告しておくと私はコードを書くのが初めてなのでこれ以降に載せるコードに多々残念な部分があるとは思いますが、ご容赦ください。では、どうぞ。

中身

今回私が作成したものは、「キーボードを操作してキャラを道通りに進め、自分の限界に挑む、自動スクロール型アクションゲーム」です。

ゲームの概要

道が上・中央・下の三か所にランダムで生成されるので、道の生成位置にプレイヤーの位置を移動させるというゲームです。(図1)

図1.実際のゲーム画面(道は上と中央のみ映っている)

操作は上移動が「↑・→・d」下移動が「↓・←・a」となっています。

道から外れてしまうとゲームオーバーとなり、それまで進んだ道がスコアとなります。(図2)

図2.ゲームオーバーの画面

苦労点

今回書いたコードについては私のGitHub(RENNKA08)に載せていますので気になる人はどうぞ。

前提として私は今回初めてコードを書いたのでクラスとか関数とかわからず書き始めました。そのため完成したコードを後に丸々クラス等を使って書き直しています。

その1 道の描画について

道が右から流れてくるように描画するというのが今回一番悩んだ点です。初めは何度やっても横一本道が生成されてしまいうまくいきませんでしたが、試行錯誤の上、リストを用いてピクセルごとに値を持たせ左から順に右隣の値を持たせればよいと考え実装した結果上手く描画することができました。(図3、図4)

図3.道の描画に関するコード

図4.視覚的にわかりやすいようにしてみました

各四角がピクセルと考えると

1.四角4にrandom()を使用して位置をずらす。

2.左のピクセルから順に右のピクセルの位置をコピーする。

3.一周したら描画する。

4.1~3を繰り返す。

 

その2  全てのコードを関数等を用いて書き直す

これについてはGitHubでのコード管理が便利であることと関数等を使って書くことにより、見た目の読みやすさはもちろんのこと、デバックもし易くなるということを学びました。イメージ図を載せておきます。(図5、図6)

 

図5.変更前                                                       図6.変更後

 

まとめ

今回初めて授業ではあるものの実際に何かを作るということをして、さらに別のものを作っていきたいと感じました。実際に作っていく中で新しいことを学んでいくことも重要だと思いました。今まで「力がないから」と避けながら過ごしていましたが今後は自発的に取り組んでいき、その都度新しいことを学んでいくのもいいのかなと思いました。

最後まで御付き合いいただきありがとうございました。

 

参考

PyCharmの環境構築について:今からWindowsで初心者にとってベストなPython開発環境を構築する手順メモ

pygameの技術習得について:人工知能に関する断創録

カテゴリー: 2018年度, アドベントカレンダー パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です