[前へ] [目次へ] [次へ]

1回目と2回目以降で反応を変えるイベントを作ってみる

前回作成したイベントを1回目と2回目以降で違う挨拶をするように変更してみましょう。


●前回のスクリプト
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
<  7>
<  8>
<  9>
< 10>
< 11>
//ゲーム変数[イベント整数]の取得 (ゲーム変数名,デフォルト値)
Integer cnt=GetEventInt('話した回数',0);

cnt++;
//←このように書くとcntの値を1増やすことができます

//メッセージの表示(待機,消去する) (表示内容)
ECL::WaitLastMessage(
   
"君と話すのは@d回目だね。",cnt);

//ゲーム変数[イベント整数]の設定 (ゲーム変数名,設定値)
SetEventInt('話した回数',cnt); 


●条件分岐
   「条件分岐」とは、「条件」が満たされているかどうかで実行するプログラムを変更する処理です。
   「条件」は「条件式」の結果を「真偽値」として見た時、「真」かどうかで判定します。
   と書くと難しく見えるかもしれませんが、ようは「条件」が成立しているかどうかで判断しているということです。
   
   例えば、「宿代10の宿屋に泊まれるか」であれば「条件式」は「所持金が10以上」となり、
   「所持金が10以上」の結果は「現在の所持金が10以上」なら「真」、「現在の所持金が10未満」なら「偽」となります。
   そしてプログラム上では条件式は 所持金>=10 (これで所持金≧10、所持金が10以上の意味)のように書きます。
   条件式で主に使う演算子(以上や以下など)は以下の通りです。
   (左辺は演算子の左側、先の例では「所持金」の部分、右辺は演算子の右側、先の例では「10」の部分)
演算子意味
==左辺と右辺が同じ
!=左辺と右辺が異なる
<左辺が右辺より小さい
<=左辺が右辺以下
>左辺が右辺より大きい
>=左辺が右辺以上
   「同じ」は = ではなく == なので注意してください。 = を使うと代入されてしまいます。
   
   
   「条件分岐」は以下のように書きます。
<  1>
<  2>
<  3>
if(条件式){
   
//条件が満たされた時にだけ行う処理
   この構文は { } で「条件が満たされた時にだけ行う処理」の範囲を指定します。
   この { } のペアを「ブロック」と呼び、この対応は必ず一致させる必要があります。

   前回のイベントを最初に話しかけた時だけ「はじめまして」と表示するようにしてみます。
   デバッグ実行で試してみてください。
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
<  7>
<  8>
<  9>
< 10>
< 11>
< 12>
< 13>
< 14>
< 15>
< 16>
< 17>
< 18>
< 19>
//ゲーム変数[イベント整数]の取得 (ゲーム変数名,デフォルト値)
Integer cnt=GetEventInt('話した回数',0);

cnt++;
//←このように書くとcntの値を1増やすことができます

if(cnt==1){
   
   
//メッセージの表示(待機,消去する) (表示内容)
   
ECL::WaitLastMessage(
      
"はじめまして。");
   
}

//メッセージの表示(待機,消去する) (表示内容)
ECL::WaitLastMessage(
   
"君と話すのは@d回目だね。",cnt);

//ゲーム変数[イベント整数]の設定 (ゲーム変数名,設定値)
SetEventInt('話した回数',cnt); 


●条件が不成立の場合だけ行う処理
   条件分岐では「条件が不成立の場合にだけ行う処理」も書くことができます。
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
if(条件式){
   
//条件が満たされた時にだけ行う処理
}
else{
   
//条件が満たされていない時にだけ行う処理
   先ほどと同様に { } で「条件が満たされていない時にだけ行う処理」の範囲を指定します。

   先ほどの内容だと2回目以降に話しかけた場合は挨拶をしてくれません。
   2回目以降は「こんにちは」と表示するようにしてみます。
   デバッグ実行して試してみてください。
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
<  7>
<  8>
<  9>
< 10>
< 11>
< 12>
< 13>
< 14>
< 15>
< 16>
< 17>
< 18>
< 19>
< 20>
< 21>
< 22>
< 23>
< 24>
< 25>
< 26>
//ゲーム変数[イベント整数]の取得 (ゲーム変数名,デフォルト値)
Integer cnt=GetEventInt('話した回数',0);

cnt++;
//←このように書くとcntの値を1増やすことができます

if(cnt==1){
   
   
//メッセージの表示(待機,消去する) (表示内容)
   
ECL::WaitLastMessage(
      
"はじめまして。");
   
}
else{
   
   
//メッセージの表示(待機,消去する) (表示内容)
   
ECL::WaitLastMessage(
      
"こんにちは。");
   
}

//メッセージの表示(待機,消去する) (表示内容)
ECL::WaitLastMessage(
   
"君と話すのは@d回目だね。",cnt);

//ゲーム変数[イベント整数]の設定 (ゲーム変数名,設定値)
SetEventInt('話した回数',cnt); 


●複数の条件で分岐する
   条件分岐は条件を複数繋いでいくことができます。
   この場合、条件1から順に判定していき、最初に成立した条件の部分だけが実行されます。
   条件1と条件2が同時に満たされている場合でも、条件2に対応する部分は実行されません。
   また、「条件が不成立の場合」は全ての条件が不成立の場合のみ実行されます。
   elif は0個でも1個でも2個でも、必要なだけいくつでも書くことができます。
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
<  7>
<  8>
<  9>
< 10>
< 11>
< 12>
if(条件1){
   
//条件1が満たされた時にだけ行う処理
}
elif(条件2){
   
//条件1が満たされず、条件2が満たされた時にだけ行う処理
}
elif(条件3){
   
//条件1も条件2も満たされず、条件3が満たされた時にだけ行う処理
}
else{
   
//全ての条件が満たされていない時にだけ行う処理

   先ほどのイベントをさらに変更して、5回目以降は「やぁ。」と返すようにしてみます。
   条件2は1回目に話しかけた時にも成立していますが、実行されないことに注目です。
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
<  7>
<  8>
<  9>
< 10>
< 11>
< 12>
< 13>
< 14>
< 15>
< 16>
< 17>
< 18>
< 19>
< 20>
< 21>
< 22>
< 23>
< 24>
< 25>
< 26>
< 27>
< 28>
< 29>
< 30>
< 31>
< 32>
< 33>
//ゲーム変数[イベント整数]の取得 (ゲーム変数名,デフォルト値)
Integer cnt=GetEventInt('話した回数',0);

cnt++;
//←このように書くとcntの値を1増やすことができます

if(cnt==1){
   
   
//メッセージの表示(待機,消去する) (表示内容)
   
ECL::WaitLastMessage(
      
"はじめまして。");
   
}
elif(cnt<5){
   
   
//メッセージの表示(待機,消去する) (表示内容)
   
ECL::WaitLastMessage(
      
"こんにちは。");
   
}
else{
   
   
//メッセージの表示(待機,消去する) (表示内容)
   
ECL::WaitLastMessage(
      
"やぁ。");
   
}

//メッセージの表示(待機,消去する) (表示内容)
ECL::WaitLastMessage(
   
"君と話すのは@d回目だね。",cnt);

//ゲーム変数[イベント整数]の設定 (ゲーム変数名,設定値)
SetEventInt('話した回数',cnt); 




[前へ] [目次へ] [次へ]

最終更新 2017/07/07