人工知能に関する断創録

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

2008-01-01から1年間の記事一覧

マップの新規作成

今回は新しいマップを作れるようにします。新しいマップを作るときはマップの名前、行数、列数、デフォルトマップチップを指定します。これらの情報を入力する必要がありますが、Pygameにはテキストボックスが用意されていません。自作する必要があります。R…

選択マップチップの表示

今回はちょっとした修正です。画面の左上に現在選択中のマップチップとマウスの座標を表示してみます。また、Gキーを押すとグリッドが表示されるようにします。pymap04.zip 選択中マップチップとマウス座標の表示 main()の下の部分です。 while True: clock.…

マップチップパレット

前回は草地マップでしか描画できませんでしたが、今回はいろんなマップチップが使えるように拡張します。スペースキーを押すと下図のように画面がマップチップパレットに切り替わり、マウスクリックで使いたいマップチップを選択できるようにします。またマ…

マップチップの描画

今回は、マップチップを描けるようにしてみます。マウスの左クリックでマップチップを描画します。の上にを描画して陸地を作ってみます。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に変換してから使った方がよさそうです。ただ鳴らすだけ…

バベッジの階差機関

160年を経て完成した『バベッジの階差機関』:動画で紹介 かのチャールズ・バベッジの階差機関を160年ぶりに復元したというニュースがありました。昔は半導体なんてなかったから全部機械式だったんですね。見に行きたいなぁ。そのうち解析機関も作るつもりな…

キーイベント

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

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

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