人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

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

効果音や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と 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の使い方(2)

OpenBayesの使い方(1)の続き。今回はデータからCPTを学習する方法を紹介します。当然ながらSprinklerの元データは手に入らないので前回のBNからCPTの確率値に従ってサンプルデータを1000個生成し、新しく作ったBNのCPTをこの1000個のサンプルデータから学…

テキストを描画する

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

OpenBayesの使い方(1)

ベイズネットワークのゲームへの応用(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…