【解決済み】配列の簡単な作成方法

アバター
ONOZUKA
記事: 63
登録日時: 2015年11月11日(水) 13:31
お住まい: 幻想郷
連絡を取る:

【解決済み】配列の簡単な作成方法

投稿記事by ONOZUKA » 2016年8月27日(土) 21:33

例えば、$game_map.events[n].xをArray_Aに代入するとすればどうしたら短く済むでしょうか?
ループ構文なども試しましたがうまくいきませんでした。

例:Array_A = [$game_map.events[1].x,$game_map.events[2].x,$game_map.events[3].x.....]
最後に編集したユーザー ONOZUKA on 2016年8月28日(日) 23:31 [ 編集 1 回目 ]

=============================================================================
RPGツクールVXACEでゲームを作っているはずです!
HP:http://tenkoma.info Twitter:https://twitter.com/ONOZUKA7
=============================================================================
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 配列の簡単な作成方法

投稿記事by faida » 2016年8月28日(日) 09:40

割と基本的なことなんですけれども、RGSSでは変数名の頭が大文字だと「定数」という扱いになります。
なので、Array_Aというのは定義されると変更できなくなるんですね。

普通であれば、「ローカル変数」か「グローバル変数」に代入等するのがいいと思います(array_Aや$Array_A等)。
これらであればループ構文でも配列の作成がうまくいくのではないでしょうか。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
アバター
ONOZUKA
記事: 63
登録日時: 2015年11月11日(水) 13:31
お住まい: 幻想郷
連絡を取る:

Re: 配列の簡単な作成方法

投稿記事by ONOZUKA » 2016年8月28日(日) 20:25

教えていただきありがとうございます。配列にこのような仕様があったんですね。
加えて質問させていただきたいのですが、以下のようなスクリプトを作ってみました。

コード: 全て選択

#===============================================================================
# RGSS3 リージョンチェック Ver1.0a (2016/08/28) by ONOZUKA
#===============================================================================
# 特定の範囲のリージョンIDの個数を出力することができます。
# 改変は自由です。クレジットには制作者名のみ載せてください。
#===============================================================================
# イベントスクリプトにregion_checkといれることで起動します。
# 結果は$game_variables[n] = $count_regionなりで取得してください。
#===============================================================================
Game_Interpreter
def region_check
 $search_range = Array.new
 $search_interval = Array.new
#特定のリージョンを数える
 $search_region = 1
#コンソール画面に出力結果を表示する
 $search_console = true
#[0,100,0,200] :X座標は0から100まで,Y座標は0から200までの範囲をチェックする。
 $search_range    = [0,100,0,200]
# 1,1にすると、範囲中の全タイルを調べる。2,2にすると網目状にチェックする。
 $search_interval = [1,1]
#===============================================================================
# エラー回避策
 xstart = $seach_range[0]
 xlimit = $seach_range[1]
 ystart = $seach_range[2]
 ylimit = $seach_range[3]
 xsplit = $search_interval[0]
 ysplit = $search_interval[1]
#===============================================================================
# リージョン走査
 xline = xstart                  #Xの開始値を代入
 yline = ystart                  #Yの開始値を代入
 xypos = Array.new               #空配列の生成
  loop do                        #ループの開始
    xypos << $game_map.region_id(xline,yline) #リージョンIDの取得
    yline += ysplit              #Y方向走査
  if xline > xlimit              #X方向走査の初期化判定
    break                        #捜査終了
  elsif yline > ylimit           #Y方向走査の初期化判定
    xline += xsplit              #X方向走査
    yline = 0                    #Y方向走査を初期化
  end
end
if $search_console = true then   #コンソールへの表示判定
  p xypos.count($search_region)  #コンソールへの表示
end
  $count_region = xypos.count($search_region) #グローバル変数への代入
end
#===============================================================================


配列を使わず実数値を直接代入すれば表示されないエラーメッセージが以下です。
Game_Interpreter(1409) NoMethodError
undefined method '[]'for nil:NilClass

原因が分からず困ってます。教えてくだされば幸いです。
=============================================================================
RPGツクールVXACEでゲームを作っているはずです!
HP:http://tenkoma.info Twitter:https://twitter.com/ONOZUKA7
=============================================================================
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 配列の簡単な作成方法

投稿記事by faida » 2016年8月28日(日) 22:54

# エラー回避策 の変数名をよくチェックしてみてください。

ちなみにエラーの内容は「nilオブジェクトに"[]"というメソッドがないよ」ってことです。
まぁ定義されてない変数だから仕方ないですね。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
アバター
ONOZUKA
記事: 63
登録日時: 2015年11月11日(水) 13:31
お住まい: 幻想郷
連絡を取る:

Re: 配列の簡単な作成方法

投稿記事by ONOZUKA » 2016年8月28日(日) 23:31

faida様。
ご助言ありがとうございます。誤植だったようで今後とも同じエラーメッセージを見かけたら心がけようと思います。
=============================================================================
RPGツクールVXACEでゲームを作っているはずです!
HP:http://tenkoma.info Twitter:https://twitter.com/ONOZUKA7
=============================================================================

“VX / Ace:質問” へ戻る