KUNISAN.JPブログ - 318 / 1692 ページ

新規書き込み
ページ:1 ... 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 1692

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 ... 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 1692