配列?の方法(質問掲示板

投稿:   39 mini tomato 投稿:2011/07/17 00:05:17(最新:2011/07/22 08:16:22)
例えば別々の変数A、B、Cがあって。
それぞれの値を、一つのイベントでチェックしたい場合はどうすればいいのでしょうか。

いろいろ真似ごとはしてみたのですが、上手くいかないので
結局スレ立てしてしまいました。

変数が2以上5より少ない場合
変数が5の場合
それ以外
で処理を分けたいのですが・・・。

どうぞ、ご助力くださいorz

コメントする

コメントするには、ログインする必要があります。

コメント一覧

  39 mini tomato(投稿日:2011/07/22 08:16, 履歴)
なんだか、物凄い皆様に協力していただいて、凄いスレッドになってしまった。私の理解力と質問の仕方の悪さが諸悪の根源な気がしますがorz

tdakeikakuさん>
フラグも考えてくださってありがとうございます!
二回チェック加えるという事ですね。チェックの条件が複雑になるときや、条件を組み合わせるときは、むしろこっちの方が使い勝手がいいかもしれません。

rurun9さん>
rurun9さんはドラえもんだったんだ!ふわふわ考えていたのに近いです、ありがとうございます!ふがいないのび太で申し訳ありませんorz
それでいいんですね。変数をチェックしてa[n]に処理を加えて行く、と。
考えてみれば、もっと早くに気付いてなくちゃいけなかったorzorz


皆様のレスは全て見ながら、足りない頭でもなんとか噛み砕いて理解に努めているます。
高度なスクリプトに、こんな事も出来るのかといつも目からうろこ状態ですが、どれをとっても作者様ごとに特色が出ていて、ちょっと変な表現かもしれませんが、凄い楽しいです。
いつも素人考えにお付き合いさせてしまい、ご迷惑おかけしています。
本当にありがとうございました!
Nyan mini rurun9(投稿日:2011/07/19 11:40, 履歴)
たぶん、ret → return
そしてセミコロン要らないかも。

なるほど。
それで配列てあったんだ。

>それぞれの変数をチェックしたら、条件に該当した変数にだけ処理を加える

というのは、変数a[n]の場合
n=0
while n<11 #A~Kなら11個
  if 2<=a[n] && a[n]<5
    a[n]=a[n]+Draemon
  elsif a[n]==5
    a[n]=a[n]*Nobita
  else
    a[n]=a[n]/Shizuka
  end
n=n+1
end
だけなんだよね。
それぞれの組み合わせによって結果が分岐する場合は、やはり巨大な樹形図に…
   mini ___(投稿日:2011/07/19 07:57, 履歴)
ほむほむ。
>実際使うのはA~Kだったり、それ以上だったり
ということで、こんな感じでしょうか。
配列の中身全てを条件と比較して、
全て条件に当てはまるならtrue、違うならfalseを返す、ということで。
a = createArray(); # A~Kまでの配列とします
def F_Check1(【配列を渡す】)
 flag = true;    # 何でも入るので変数は便利ですね
 n = 0;
 while ((n < 【配列の総数】)&&(flag)) # flagがfalseなら見る必要が
  if((a[n] < 2)||(a[n] >= 5))  # 条件にそぐわなかったらfalse
   flag = false;
  end;
 end;
 ret flag;  # 呼び出し元に返す
end;

def F_Check2(【配列を渡す】)
 同上
  if(a[n] != 5)
   同上
end;
んで、使うときは
if(F_Check1(【配列を渡す】))
 # 2 <= "A~K" < 5 の時
elsif(F_Check2(【配列を渡す】))
 # "A~K" = 5 の時
else
 # それ以外の時
end;
となるとか…。
そういえばローカル変数を関数で受け渡しした経験が無いことに
今気づきまして、そこらへんぼかして書いてますので…w
  39 mini tomato(投稿日:2011/07/18 21:53, 履歴)
あわわ、遅レスすいません!
いつも質問というか丸投げしているスレッドに、物凄い丁寧な考察&スクリプトありがとうございます!!
い、いつも思うんですが、私の質問が悪いせいで、皆様を迷走させてしまって申し訳ありませんorz
謹んでレスポンスさせて頂きます。

fmyさん>
戦闘終了時の処理なので、実行内容のほうのスクリプトです。
flag = trueでフラグが有効にできるんですか!?
ifつけたら、有効かどうか判定できるのかしらん。
すいません、Rmake来てから始めてスクリプトに触ったので、私の知識が及ぶ範囲はここまでですorz
hogeってなんだ……orz

rurun9さん>
A~Bまでだったら、その手法をとってみようかとも思うのですが、
実際使うのはA~Kだったり、それ以上だったりするので、配列っぽい方がいいかな、と、自分に甘くなりましたorz
でも三つくらいだったら、わざわざ変数使うより楽ですかね。

ikosamiさん>
それぞれの変数をチェックしたら、条件に該当した変数にだけ処理を加えるっていうのは難しいんですね;;
でもCreateArrayの使い方が、まだ良くわかっていなかったので随分参考になりました!

いつも、ふわふわしたレスで、本当にもうしわけないです。
どれも大変勉強になります、今後の参考にさせて頂きます。
皆様本当にありがとうございました!
Material 7186 1 mini ikosami(投稿日:2011/07/17 19:53, 履歴)
a = createArray()
a[0] = A
a[1] = B
a[2] = C
b = createArray()


i = 0
while i < 3
  b[i] = 0
  if 2<=a[i] && a[i]<5
    b[i] = 1
  elsif a[i] == 5
    b[i] = 2
  end
  i = i + 1
end

AA = b[0]
BB = b[1]
CC = b[2]



「配列?の方法」ってタイトルだったので
ちょっと無理やり配列にしてみましたが、
余計ややこしいですかね?

どれにも当てはまらない場合 0
2以上5より少ない場合   1 
5の場合          2

を、下にあるAA = b[0]とかの対応した変数に入れたのですが・・・

if AA == 1 && BB = 1 && CC == 1
#ABCともに変数が2以上5より少ない場合
end


でもこれでは、余計にわかりにくいし、内容によっては長くなりますね(- -;)
Nyan mini rurun9(投稿日:2011/07/17 19:38, 履歴)
>fmy様
興味深いですねぇ。

>tomato様
イベントの有効条件ではなく、単純にスクリプト内容をif文で分岐させて、それぞれをつくったら良いような…
#樹形図を紙にでも書いてみるとか
if 2<=A && A<5
 if 2<=B && B<5
  if 2<=C && C<5
#
  elsif C==5
#
  else
#
  end
 elsif B==5
  if 2<=C && C<5
  elsif C==5
  else
  end
 else
  if 2<=C && C<5
  elsif C==5
  else
  end
 end

elsif A==5
#
else
#
end
うは。長過ぎて疲れるかも…
Logo1 mini fmy(投稿日:2011/07/17 17:38, 履歴)
# ぎゃ~!自分で自分のダメ出し思いついた(汗
# 最後の行以外も処理が走るんなら
if getVariable("hoge") == 1
	flag = true
else
	flag = false
end

flag

# とかでも問題ないじゃないか!
# なんてこった!とんだ恥さらし!
# 板汚し申し訳ありませんでした!
Logo1 mini fmy(投稿日:2011/07/17 14:53, 履歴)
横ヤリごめーん。

2DRPGはチュートリアルしか作った事ないけど僕も勉強したくてちょっと色々見てみましたよ。

ノベルゲームと違って、2DアクションRPGと2DRPGでは
イベントまたは敵シンボルをまずマップに配置して、
その中でイベントエディタまたはエネミーエディタの中でいろんな処理を行うんですねー。
で、「有効条件(スクリプト)」って項目と
「イベント実行内容(スクリプト)」って項目があるんですね。フムフム。

前者は、
別のイベントとかからの影響で変数とかパラメータとか変化した時に
そのイベント(キャラとか敵とか)を出現させるかどうかの条件を書くとこですか。なるほど。
後者は、
いつものスクリプトって感じだからきっと僕よりみんなの方が詳しいかな。

tomatoさんの
> それぞれの値を、一つのイベントでチェックしたい
というのはどっちで行おうとされてるんだろう?
それによって書き方が変わるんじゃないかと思います。

# ちょっと小難しい話なので以下はついて来れる人だけでおk。
# ていうかほぼ運営に対しての文章www
# 僕がチラっと気になったのは前者のヘルプ上での、
# http://rmake.jp/document/script_manual
# > ■有効条件スクリプトについて
# >  スクリプトの最後の行を評価したときに真の値が返れば、
# って所が微妙に厄介かもっすねコレ。
#
# 代入先や演算結果のif文などによる使用先がなくても(コンパイラによって最適化でもされない限り)
# 演算は常にコード通りに行われている、
# というプログラムの性質?が理解できてないと把握しにくい説明かも。
#
# 例えば単純にいつもの「イベント実行内容(スクリプト)」で
1+2

# と書いたとしたら、意味はないコードではあるけれど
# 運営のプログラマさんの腕をディスる気はないがスクリプトである以上は
# 代入先や判定先は無くても計算や分析処理は行われているんだと妄想する。
# 何が言いたいかっていうと「有効条件(スクリプト)」が最後の行の評価のみであるので
if hoge == 1
end

# と書き込むのは正しくない。endだけが評価対象にされようとしているから。
# ここでは
hoge == 1

# が正しい。
# が、この感覚は「イベント実行内容(スクリプト)」に慣れていると違和感があるのではないか。。。
# メイン機能ではないからいいかもしれないが、
# これを使いこなせるユーザーはどのくらい居るだろうか?
#
# もし的外れな内容だったら本当にゴメンなさい。僕が浅い証拠です(汗
  39 mini tomato(投稿日:2011/07/17 12:22, 履歴)
「~条件」ですか?
た、多分、そうです??
すいません、何の条件かわからなくてorz

イベントの有効条件に設定している変数なんですが、
それじゃないですよねorzorz
   mini ___(投稿日:2011/07/17 00:49, 履歴)
変数A,B,C全てが「~条件」に当てはまる時、ということですか?