KUNISAN.JPブログコメント書き込み



Python + Pygameのミニゲーム第二弾 『たけのこ狩り』

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月16日
Python + Pygameのミニゲーム第二弾 『たけのこ狩り』先日の『DOG & BURGERS』に引き続き、Python + Pygameのミニゲーム第二弾『たけのこ狩り』が完成しました。今回も制作期間は1週間でしたが、これまでに作ったプログラムからコピペで流用したものも多く、『DOG & BURGERS』より3割ほどプログラムが長くなっています。

今回新たに試してみた機能は以下の通りです。

・マウスでの操作
・スプライト(オブジェクト、半透明処理、重ね合わせ、衝突等)
・三角関数の応用(角度と動きの連動)

そんな感じで、ゲームの動画です。


プログラムもどうぞ。


ファイル一式はこちらからダウンロードできます
※本プログラムやファイルの二次配布や二次掲載はご遠慮ください。個人的なプログラム改造はご自由にどうぞ。ただし、本プログラムに関するご質問等はお受けしません。

ゲーム自体は「日本らしさ」に加えて、少し「薄気味悪さ」もあります。手のキャラクターは私の右手の写真から切り取ったもので、これをそのまま使うか少し迷いましたが(薄気味悪いので…)、「よりインパクトが強い方がいいだろう」ということでそのままにしています。カメムシとカマキリの敵キャラも、モノクロで可愛さゼロです。

スプライトについては、当初"Sprite Group"の機能を使っていっぺんに表示させたり、衝突処理もスプライトのCollision機能を使用したりする予定でいました。しかし、Sprite Groupを使うとキャラクターの重ね合わせの順番を制御する処理が煩雑になってしまう上、Collision機能もいろいろやってみたものの自分の思っていた精度が出ずに、どちらも断念しました(私の使い方が悪かっただけかもしれませんが…)。そのため、各キャラクターのオブジェクトは形だけSpriteオブジェクトを継承していますが、普通に画像を貼り付けるのと全く変わらない処理に落ち着いてしまっています。

三角関数については、前回のサンプルプログラムのように、サイン(sin)とコサイン(cos)の結果をリスト化して、たけのこの円運動、波状移動などに使用しています。加えてカメムシの移動には「手」とカメムシの座標の違いから、アークタンジェント(atan2)でラジアン(角度)を算出して方向をコントロールしています。

正直なところ、私は数日前までatan2という関数を知りませんでした。当初は「2」が付いていないatan関数を使って、タンジェント値からまずはラジアン-1/2π~+1/2π(-90°~ +90°)を算出した後、座標によって正確なラジアン-π~+π(-180°~ +180°)を決定することを考えていました。「2」の付いているatan2関数はx, yの2つの引数を取ることから、座標からダイレクトに正確なラジアンを得ることができます。

今回もミニゲーム制作という形になりましたが、やはりコンピューター言語を学んでいく上では、実際に何か形になるものを作っていく方が理解できます。今、頭のなかに2点ほど作ってみたいものがあるので(サンプルプログラム程度ですが)、また時間を見て制作に取り掛かろうと思います。



Python関連記事(リンク一覧): Python + Pygameの疑似3Dゲーム (ミニゲーム第三弾) / Python + Pygameで擬似3Dサンプルプログラム / Python + Pygameのミニゲーム第二弾 『たけのこ狩り』 / Python - リスト内包表記とPygameのスプライト機能 / Pythonの学習とPygameを使ったミニアクションゲーム作成 / ...(記事連続表示)

ゲームを作りながら楽しく学べるPythonプログラミング (Future Coders(NextPublishing)) eBook
ゲームを作りながら楽しく学べるPythonプログラミング (Future Coders(NextPublishing)) eBookをAmazon.co.jpでチェック


1)商品の宣伝、宗教や政治活動の勧誘など、本サイトの趣旨に合わない書き込みはご遠慮ください。
2)個人、団体への誹謗中傷や、差別的な発言、公序良俗に反する表現は禁止します。
3)本ブログへの書き込みによって何らかの問題が発生した場合、KUNISAN.JP管理者までご連絡いただければ、内容の修正、削除を行います(その他の責任については負いかねます)。
4)製作者サイドの都合により、予告無く書き込みの一部または全てが削除されることがあります。あらかじめご了承ください。
5)迷惑メールやコンピュータウィルス被害を防止するため、必要な場合以外にはメールアドレスを書き込まないことをお勧めします。

タイトル
お名前 (※必須)
Eメール
ホームページ

コメント (※必須)


画像ファイル(サイズ:10MB以下 形式:gif,jpeg,jpg,png)