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を鳴らす方法を紹介します。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…