読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、Deep Learning、Kerasに関する記事が多いです。



Pygame

マップチップの描画

今回は、マップチップを描けるようにしてみます。マウスの左クリックでマップチップを描画します。の上にを描画して陸地を作ってみます。pymap02.zip マップチップの描画 マウスでクリックした場所のマップチップをに変更しているのはMapのupdate()です。 de…

カーソルの移動

マップを作る(2008/5/24)やマップのロード(2008/6/1)のようにマップのデータを数値で打ち込んでいくのは大変です。マップエディタ編では、お絵描きするような感じで簡単にマップを作成できるマップエディタを作っていきます。今回はマップ内をカーソル(…

流れるメッセージ

MessageWindowをもう少し改良してドラクエのようにメッセージが流れるようにアニメーションで表示されるようにします。これは思ったより簡単です。今までアニメーションするときどうしてたか思い出してください。フレームごとに状態を更新するupdate()があれ…

会話する

キャラクターイベント(2008/6/22)で作ったイベントファイルに各キャラクターのメッセージを登録したの覚えてますか?今回は話しかけたときにそのメッセージを話すようにしてみます。メッセージウィンドウの表示(2008/6/28)ではすべてのウィンドウの基礎…

メッセージエンジン

画面の好きな位置にウィンドウを表示できるようになったので今度は画面の好きな場所に文字を描画できるようにします。今回は画面の好きな位置に文字列を描画できるメッセージエンジンの作り方を説明します。pyrpg14.zip 文字画像 画面に文字を表示する方法と…

メッセージウィンドウの表示

今回から4回にわたってメッセージウィンドウを実装します。まずは、ドラクエのような黒い背景に白い枠のウィンドウを表示してみることから始めます。今回作成するWindowクラスはメッセージウィンドウだけではなく、コマンドウィンドウ、ステータスウィンドウ…

キャラクターチップとマップチップ

これからRPGを拡張していくにあたって使用できるキャラクターチップやマップチップを整理しておきます。今回作成するサンプルRPGではここにある素材しか使いません。すべてのキャラクターチップ、多くのマップチップは、下のDotWordさん(リンク切れ)からお…

キャラクターイベント

簡単イベントを導入します。キャラクターイベントです。今までは王様や兵士などの作成、追加はmain()に直接書き込んでいました。今回は、キャラクターを外部のイベントファイルから読み込んでキャラクターを簡単に追加できるようにします。pyrpg12.zip イベ…

フルスクリーンモード

ゲームはフルスクリーンでやると臨場感がありますね。Pygameはウィンドウモードとフルスクリーンモードの切り替えがものすごく簡単にできます。F2キーを押すたびにウィンドウモードとフルスクリーンモードが切り替わります。このスクリプトはスプライトグル…

キャラクターを追加

プレイヤー1人のさびしい世界でしたがついに王様の登場です。ついでに王様の側近の大臣と王様のまわりをぶらぶらしている護衛である兵士も登場させましょう。今回はこの3人を追加します。プレイヤーを表すPlayerクラスを流用してCharacterクラスを作ることで…

ピクセルベーススクロール

今回は、ピクセル単位のスクロールを実装してよりドラクエっぽいスクロールを実現します。前回までのようなかくかくした移動ではなくなめらかな移動になります。イメージがわかない方はスクリプトを実行してみてください。ここまでできれば移動に関してはほ…

タイルベーススクロール

前回までのプログラムは何かよくあるRPGと違うような違和感ありませんでした?実は一般的なRPGではプレイヤーはつねに画面の真ん中にいてマップの方がスクロールする方法をとっています。たとえば、ドラクエなんかはそうです。今回はドラクエのようにプレイ…

マップのロード

今までマップはスクリプト内に書いて固定されていましたが、ファイルからさまざまなマップを読み込めるように変更してみます。スクリプトを全文掲載すると長くなるので、ここからは主要部分のみ掲載することにします。スクリプトファイルはダウンロードして…

オブジェクト化

今回は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と効果音の再生

効果音やBGMを鳴らす方法を紹介します。Pygameでは、効果音用にwavとogg、 BGM用にmp3とoggをサポートしています。midiも鳴りましたがループ再生しないなど問題があるようです。midiはiTunesなどでmp3に変換してから使った方がよさそうです。ただ鳴らすだけ…

キーイベント

ゲームの入力インタフェースとしてキーボードとマウスは欠かせません。マウスに関してはマウスイベント(2008/5/6)で紹介しました。ここでは、キーボードの入力を検出する方法を紹介します。 Pygameでキーボード入力を検出する方法は、マウスと同じく主に2…

画像の移動と跳ね返り処理

パイソンが画面の中を跳ね回るアニメーションのサンプルです。アニメーションの原理とPygameでの実現方法を解説します。絵が動き回るとゲームって感じが出てきます。bound_image.zip サンプルスクリプト1 #!/usr/bin/env python # -*- coding: utf-8 -*- imp…

Pythonでゲーム作りますが何か?

このサイトでは、プログラミング言語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…

テキストを描画する

画面上にテキストを描画します。テキストを描画するにはpygame.fontモジュールを使います。pygame.fontは、TrueTypeフォント(TTF)を使って描画します。テキストの描画は、 Font オブジェクトを作成 Fontオブジェクトを使ってテキストを描画したSurfaceを作…

ウィンドウを表示する

まずは、すべてのゲームのひな形となるウィンドウを作成するプログラムです。ここでは、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…