人工知能に関する断創録スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。Learning、Kerasに関する記事が多いです。2008-07-20宝箱と扉を開けるPygame今回は3つのイベントを追加します。宝箱と扉と一般オブジェクトです。宝箱と扉はスクリーンショットで見えますね。扉は前に立ってスペースキーを押すと開きます。宝箱は上に乗ってスペースキーを押すと調べます。一般オブジェクトとは玉座・いす・机などの特にアクション(開くとか)はないけどマップ上にある物体を表すイベントです。見ると王様がちゃっかり玉座に座ってますね(笑)この3つのイベントは、キャラクターイベント(2008/6/22)と同じようにイベントファイルに書きます。pyrpg22.zipイベントファイルとロードまず、お城のイベントファイルを見てみます。BGM,castleCHARA,king,7,2,0,0,そなたにほうびをつかわす。たからばこは/じゆうにあけてよいぞ。スペースキーで/あけられます。TREASURE,2,6,100ゴールドTREASURE,3,6,はがねのつるぎTREASURE,4,6,やくそうDOOR,3,8OBJECT,7,2,44OBJECT,8,2,44MOVE,7,15,3,field,5,6MOVE,8,15,3,field,6,6BGMとCHARAとMOVEは前にやりました。今回は、宝箱イベントTREASUREと扉イベントDOORと一般オブジェクトイベントOBJECTが追加されています。TREASUREは、宝箱の座標とアイテム名が引数です。DOORは扉の座標が引数です。一般オブジェクトは、座標とマップチップIDが引数です。宝箱と扉はマップチップが決まっているので指定する必要がありませんが、一般オブジェクトは机やいすになったりするので指定します。このイベントファイルをロードするのはMapのload_event()です。fp.close()TREASURE、DOOR、OBJECTイベントのとき、対応するオブジェクトを作成するメソッドを呼び出しています。3つともほとんど同じなのでここではcreate_treasure()だけ見てみます。self.events.append(treasure)引数のdataから座標とアイテム名を読み取って、Treasureオブジェクトを作成しています。Treasureオブジェクトは、Mapのeventsに追加しています。次に宝箱を表すTreasureクラスです。self.item)マップチップIDは46番の宝箱の画像で固定し、imageをロードしてます。itemにアイテム名を格納しておきます。open()はプレイヤーが宝箱を開けたとき呼び出されるメソッドです。今は宝箱を開ける効果音を鳴らしているだけですが、後でプレイヤーの持ち物にアイテムを追加する処理も入れるかもしれません。draw()は宝箱の画像を座標に描画してるだけです。self.y)宝箱とほとんど同じですね。一般オブジェクト次に一般オブジェクトです。mapchip)これも宝箱や扉とほとんど同じです。このように中身がほとんど同じ場合は継承というテクニックが使えます。Treasure、Door、ObjectのスーパークラスとしてEventを用意し、TreasureとDoorとObjectはEventのサブクラスにするわけです。ここではまだ使いません。調べると開ける最後にプレイヤーがスペースキーを押すと宝箱や扉が開く処理を見てみます。main()のイベントハンドラを見てください。