2008-05-01から1ヶ月間の記事一覧
今回はPythonのオブジェクト指向機能を活用して、プレイヤーを表すPlayerクラス、マップを表すMapクラスを作ります。これにともない、プレイヤーに関連した変数や関数をPlayerクラス、マップに関連した変数や関数をMapクラスに移動させました。このように変…
前回までのプレイヤーはどの方向に移動してもこっちを向いていました(こっち見んな!)。これはドラクエ1と同じ移動方式です。これだとあまりかっこよくないので移動する方向をちゃんと向くようにしてみます。pyrpg06.zip サンプルスクリプト #!/usr/bin/en…
前回のプレイヤーは移動はできますが足踏みしてませんね。足踏みってのは言うまでもないと思いますがのことです。こういう足踏みはキャラクターアニメーションって言います。基礎編のキャラクターアニメーション(2008/5/18)でも詳しく解説しているので参考…
前回のスクリプトでは、プレイヤーは海のマスにも移動できてしまいました。今回はプレイヤーが海のマスに移動できないようにしてみます。こういう特定のマップチップ(たとえば、海、山、壁など)に移動できないようにする処理をマップとの当たり判定と呼び…
マップにプレイヤーを乗せてキーボードの上下左右キーで移動できるようにしてみます。pyrpg03.zip サンプルスクリプト #!/usr/bin/env python # -*- coding: utf-8 -*- import pygame from pygame.locals import * import sys import os SCR_RECT = Rect(0, …
前回、背景は青く塗りつぶしていただけだったので、今回は簡単なマップを作って表示してみます。ここで書いたスクリプトは拡張性をまったく考慮していません。本当はマップ専用のクラスを作って処理をきちんと分離し、マップもファイルから読み込むところで…
まずは一番簡単なところから作ります。プレイヤーを画面に描いてみます。プレイヤーですが、を使います。この素材は、DotWorldさん(リンク切れ)からお借りしています。ここの素材はドラクエのような旧き良きRPGっぽくてすごく好きです。RPGでは、マップ、…
キャラクターアニメーションの作り方を紹介します。画像の移動と跳ね返り処理(2008/5/9)で紹介したような位置が変わるアニメーションではなく、こういうやつです。他にもシューティングの爆発なども同じ方法でできます。画像はDotWorldさん(リンク切れ)…
スプライトの使い方(2008/5/17)の続きです。スプライトグループを使うと複数のスプライトをまとめて管理、更新、描画できるようになります。大量のスプライトを使うゲームでは非常に便利な機能です。サンプルコードは、スプライトの使い方(2008/5/17)と…
スプライトとは、おいしい炭酸飲料ではなくて、ゲーム背景とは別に動く画像を指す言葉です。たとえば、RPGのキャラクター、ブロック崩しのブロック、ボール、シューティングの飛行機、ミサイル、爆弾などは全部スプライトです。Pygameにはスプライトを表す便…
効果音やBGMを鳴らす方法を紹介します。Pygameでは、効果音用にwavとogg、 BGM用にmp3とoggをサポートしています。midiも鳴りましたがループ再生しないなど問題があるようです。midiはiTunesなどでmp3に変換してから使った方がよさそうです。ただ鳴らすだけ…
160年を経て完成した『バベッジの階差機関』:動画で紹介 かのチャールズ・バベッジの階差機関を160年ぶりに復元したというニュースがありました。昔は半導体なんてなかったから全部機械式だったんですね。見に行きたいなぁ。そのうち解析機関も作るつもりな…
ゲームの入力インタフェースとしてキーボードとマウスは欠かせません。マウスに関してはマウスイベント(2008/5/6)で紹介しました。ここでは、キーボードの入力を検出する方法を紹介します。 Pygameでキーボード入力を検出する方法は、マウスと同じく主に2…
パイソンが画面の中を跳ね回るアニメーションのサンプルです。アニメーションの原理とPygameでの実現方法を解説します。絵が動き回るとゲームって感じが出てきます。bound_image.zip サンプルスクリプト1 #!/usr/bin/env python # -*- coding: utf-8 -*- imp…
このサイトでは、プログラミング言語Pythonと Pythonのゲーム用ライブラリPygameを用いてゲーム制作の過程やテクニックをまとめています。主に自分の知識の整理に使うつもりですが、これからPythonを学んでゲームを作ってみようという方の参考になれば幸いで…
ゲームの入力インタフェースとしてキーボードとマウスは欠かせません。ここでは、マウスのクリック、長押し、移動を検出する方法を紹介します。 Pygameでマウス入力を検出する方法は、主に2つあります。1つめは、イベントハンドラ(今まではQUITイベントで使…
BMP、GIF、PNG、JPGなどのイメージを画面に描画する方法です。pygame.imageを使います。GIFやPNGなどはお絵描きソフトで透明色(アルファ値)を指定して保存できますが、透明色が指定されていないときにスクリプト中で透明色を指定する方法も説明します。ま…
pygame.drawを使うと四角形、円、楕円、直線などを基本的な図形を描画できます。ゲームでは画像を使うのが一般的ですが、テスト用に図形を描画する方法を知っておくと便利です。 サンプルスクリプト draw_figure.py #!/usr/bin/env python # -*- coding: utf…
OpenBayesの使い方(1)の続き。今回はデータからCPTを学習する方法を紹介します。当然ながらSprinklerの元データは手に入らないので前回のBNからCPTの確率値に従ってサンプルデータを1000個生成し、新しく作ったBNのCPTをこの1000個のサンプルデータから学…
画面上にテキストを描画します。テキストを描画するにはpygame.fontモジュールを使います。pygame.fontは、TrueTypeフォント(TTF)を使って描画します。テキストの描画は、 Font オブジェクトを作成 Fontオブジェクトを使ってテキストを描画したSurfaceを作…
ベイズネットワークのゲームへの応用(2008/5/2)の続き。というわけでPythonのベイズネットのライブラリであるOpenBayesの使い方をちょっとまとめておきます。ここでは、OpenBayesのチュートリアルにあるSprinklerというベイズネットを作成してみます。この…
まずは、すべてのゲームのひな形となるウィンドウを作成するプログラムです。ここでは、Pygameの初期化、メイン画面の作成、ゲームループなどを解説します。 サンプルスクリプト window.py #!/usr/bin/env python # -*- coding: utf-8 -*- import pygame fro…
まずは、PythonとPygameとPyOpenGLをインストールします。とりあえず2DゲームだけならPythonとPygameだけインストールすればOKです。 Pythonのインストール Pythonは、フリーで配布されていて簡単にインストールできます。Python Programming Language -- Of…
「ゲーム開発者のためのAI入門」って本にベイズ推定とベイズネットワーク(ベイジアンネットワークとか信念ネットワークとも呼ばれますね)をゲームに応用する方法が書いてあった。ゲーム領域が不確定な状況下にあるときにプレーヤー以外のキャラクター(NPC…