独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< 川瀬智子。 | main | RGSS奮闘記27:アイテムを分類する9 >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSS奮闘記26:アイテムを分類する8

〜前回のあらすじ〜
そろそろ長い。


いよいよシーンクラスの作成である。
初めに全体の挙動の説明と改造点を説明しよう。
デフォルトのシーンクラスでは、ヘルプウィンドウ、アイテムウィンドウ、ターゲットウィンドウの3つを生成し、ヘルプウィンドウとアイテムウィンドウを関連付けている。今回の改造では、カテゴリウィンドウを生成するのと、アイテムウィンドウを属性IDの数だけ生成することになる。IDはウィンドウ生成時の引数として渡す。
そして、Sene_Menu⇔アイテムウィンドウ⇔ターゲットウィンドウという移動になっているものをScene_Menu⇔カテゴリウィンドウ⇔アイテムウィンドウ⇔ターゲットウィンドウという移動に変える。
どちらもあまり複雑ではないが大幅な変更だ。



シーンクラスはインスタンスを生成しないためinitializeメソッドはなく、mainメソッド内のループを実行するのが基本構造である。これはヘルプの「スクリプト入門>解読編>シーンクラス」に説明があるので見ておいてほしい。
シーンクラス自体の詳しい説明は読み解き編に回すとして、ここではScene_Itemの解説だけにとどめる。

では早速mainメソッドの説明。今回も前後編に分けて解説していく。

def main
  @help_window = Window_Help.new
  @item_windows = Array.new(IK_ItemCategorize::Categories.size) {|index|
    Window_CategorizedItem.new(IK_ItemCategorize::Categories[index])
  }
  @item_windows.each_with_index { |window, index|
    window.help_window = @help_window
    window.active = false
    window.visible = index == 0 ? true : false
    window.index = -1
  }
  @current_item_window = @item_windows[0]
  @target_window = Window_Target.new
  @target_window.visible = false
  @target_window.active = false
  @category_window = Window_Category.new
  @category_window.index = 0
  @category_window.active = true
  @help_window.set_text("使用・確認するアイテムの分類を選択")
ヘルプウィンドウの生成はデフォルトのまま。画面最上部に1行分のウィンドウが生成される。
アイテムウィンドウは、属性IDの配列を利用して複数生成する形に変更。Array#newの使い方は第2回と同じだ。IDの配列の長さを引数にしてウィンドウの配列の長さを指定し、ブロックの中でそれぞれのウィンドウを生成する。ウィンドウ生成の引数にはindexを利用してそれぞれの属性IDを渡している。これによって、Window_CategorizedItemの中で属性が判定され、各IDの属性を持つアイテムだけを格納したウィンドウが作られるわけである。
次に、各アイテムウィンドウのヘルプウィンドウと関連付ける。デフォルトではウィンドウが一つだから直接操作していたが、ここでは再びeach_with_indexメソッドを使用し配列の中のウィンドウオブジェクトに一つ一つ関連付ける。
そしてブロックの中ではウィンドウの非アクティブ化を不可視化を行っている。不可視化は既出の三項演算子を使用し、indexが0つまりカテゴリウィンドウの先頭(ここでは「消費」)でない場合に非表示にしている。
最後にウィンドウのインデックスを-1に設定し、どのアイテムにもカーソルが当たっていない状態を作ってブロック終了だ。

続いて、インデックス0のウィンドウを@current_item_windowに代入。この変数はプリセットの@item_windowと同じような扱いだ。プリセットでアイテムウィンドウを操作するような部分ではこの@current_item_windowに入ったウィンドウを操作する。

ターゲットウィンドウの生成はプリセットのままだ。続くカテゴリウィンドウの生成も特筆すべき点はない。インデックスに0を指定しているくらいか。
@help_window.set_textはヘルプウィンドウに表示する文章の設定だ。アイテムウィンドウがアクティブの時はデフォルトでそれぞれのアイテムの説明が表示されるが、カテゴリウィンドウがアクティブの時はカテゴリ選択を促す文章を表示するようにした。


次回はmainメソッドの残りとupdateメソッド。


タグ:[Ruby] [RGSS] [素材] [Scene_Item]

| 2011.02.02 Wednesday 22:03 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 22:03 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     
<< September 2019 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM