SRC質問掲示板Mk2
(現在 過去ログ132 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■22382 / inTopicNo.1)  Ask,Switchコマンドを5回使用したケース
  
□投稿者/ 華魯サンジュ -(2011/08/11(Thu) 01:30:20) [ID:mHDgQCFD]
    お久しぶりです。
    以下のインクルードで[A->(1-X,Y) (2) (3-X,Y)][B-X,Y]と次々に派生するAsk,Switchコマンドを5回使用した記述ですが、5度目の[B-X,Y]から始まる処理が省略されて(エラーは無し)しまいました。
    Ask,Switchコマンドを5回使用したケースは今回が初めてでした,他の製作者様のシナリオでも例を見かけないパターンで初めて挑戦してみたのですが・・・
    アドバイスをお願いします。
    −−−−−−−−−−−インクルード.eve−−−−−−−−−−−−−
    ask 選択してください
    Aタイプ
    Bタイプ
    end
    Switch 選択
    case 1
    ask アイテムを選んでください
    アイテムA
    アイテムB
    アイテムC
    end
    Switch 選択
    case 1
    ask アイテムAを渡すキャラを選択してください
    Aに渡します
    Bに渡します
    end
    Switch 選択
    case 1
    #処理
    case 2
    #処理
    endsw
    case 2
    talk
    アイテムBを入手しました!
    end
    case 3
    ask アイテムCを渡すキャラを選択してください
    Aに渡します
    Bに渡します
    end
    Switch 選択
    case 1
    #処理
    case 2
    #処理
    endsw
    case 2
    #ここからが処理が行われない問題となってるBタイプの内容です
    ask 装備1を装着するキャラを選択してください
    Aに装着します
    Bに装着します
    end
    Switch 選択
    case 1
    #処理
    case 2
    #処理
    endsw
    endsw
    endsw
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    Bタイプの処理はtalkやwaitなどで置き換えてみてもシナリオでは省略されています
引用返信/返信 削除キー/
■22383 / inTopicNo.2)  Re[1]: Ask,Switchコマンドを5回使用したケース
□投稿者/ 中箱 -(2011/08/11(Thu) 04:50:22) [ID:XAPi9INn]
    回数が多くて混乱したんでしょうか。


    提示されたものに分岐の回数に応じてた字下げを加えてちょっとコメントをつけると以下のようになります。


    #■ここから
    ask 選択してください
    Aタイプ
    Bタイプ
    end
    Switch 選択 //1段目開始
    case 1 //ここは1段目
      ask アイテムを選んでください
      アイテムA
      アイテムB
      アイテムC
      end
      Switch 選択 //2段目開始
      case 1 //ここは2段目
        ask アイテムAを渡すキャラを選択してください
        Aに渡します
        Bに渡します
        end
        Switch 選択 //3段目開始
        #(略)
        endsw //3段目終了
      case 2 //ここは2段目
        #(略)
      case 3 //ここは2段目
        ask アイテムCを渡すキャラを選択してください
        Aに渡します
        Bに渡します
        end
        Switch 選択 //3段目開始
        #(略)
        endsw //3段目終了
      case 2 //●ここはまだ2段目のアイテムABCの選択の分岐中!●
      #ここからが処理が行われない問題となってるBタイプの内容です
        ask 装備1を装着するキャラを選択してください
        Aに装着します
        Bに装着します
        end
        Switch 選択 //3段目開始
        #(略)
        endsw //3段目終了
      endsw //2段目終了
    endsw //1段目終了
    #■ここまで


    2段目のSwitchの終了前にBタイプの内容を書いてしまっているのが原因でしょう。
引用返信/返信 削除キー/
■22384 / inTopicNo.3)  Re[2]: Ask,Switchコマンドを5回使用したケース
□投稿者/ 茶太郎 -(2011/08/11(Thu) 07:39:13) [ID:MSHOFRJu]
    2011/08/11(Thu) 07:42:37 編集(投稿者)
    既に中箱さんから解答が示されていますが、
    補足として一つの提案させてください。
    
    複数のSwitchをネストすると見づらくなる場合、
    それぞれの処理をサブルーチンとして分割すると
    それぞれの処理の中ではSwitchが1つになって
    横方向には見やすくなります。
    
    また、共通する処理をまとめることで
    全体的なコード量を減らすことが出来る場合もあります。
    
    一方で、コードが縦方向に長くなる場合があったり、
    それぞれのサブルーチンの繋がりは把握しておく必要がでてきます。
    
    今回の華魯サンジュさんの場合の例として修正案を載せます。
    動作確認は取っていませんが、だいたいこんな感じになります。
    分かりやすい方を選択していただけばよいと思います。
    
    −−−−−−−−−−−インクルード.eve−−−−−−−−−−−−−
    ask 選択してください
    Aタイプ
    Bタイプ
    end
    
    Switch 選択
        case 1
            Call GetItem
        case 2
            Call GetEquipment
    endsw
    
    
    ###
    ### Aタイプを選択した時の処理
    ###
    GetItem:
        ask アイテムを選んでください
        アイテムA
        アイテムB
        アイテムC
        end
    
        Switch 選択
            case 1
                Call GetItem アイテムA
            case 2
                talk
                アイテムBを入手しました!
                end
            case 3
                Call GetItem アイテムC
        endsw
    return
    
    ###
    ### Bタイプを選択した時の処理
    ###
    GetEquipment:
        #ここからが処理が行われない問題となってるBタイプの内容です
        ask 装備1を装着するキャラを選択してください
        Aに装着します
        Bに装着します
        end
    
        Switch 選択
            case 1
                Call EquipArm 装備1 A
            case 2
                Call EquipArm 装備1 B
        endsw
    return
    
    ###
    ### 指定したアイテムを渡す相手を選択する
    ### 引数1:渡すアイテム
    ###
    GetItem:
        local gift = Args(1)
        ask $(gift)を渡すキャラを選択してください
        Aに渡します
        Bに渡します
        end
        Switch 選択
            case 1
                Call GiveItem gift A
            case 2
                Call GiveItem gift B
        endsw
    return
    
    ###
    ### 指定したアイテムを指定したユニットに装備する
    ### 引数1:装備アイテム
    ### 引数2:装備させるユニット
    ###
    EquipArm:
        local equipment = Args(1)
        local target = Args(2)
        #処理
    return
    
    ###
    ### 指定したアイテムを指定したユニットに渡す
    ### 引数1:アイテム
    ### 引数2:所持させるユニット
    ###
    EquipArm:
        local gift = Args(1)
        local target = Args(2)
        #処理
    return
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−

引用返信/返信 削除キー/
■22385 / inTopicNo.4)  Re[2]: Ask,Switchコマンドを5回使用したケース
□投稿者/ ツ華魯ツサツδ督ジツδ・ size=25 maxle -(2011/08/11(Thu) 14:55:43) [ID:mHDgQCFD]
    中箱さん、御回答,どうもありがとうございます!お陰さまで誤認が解けたのです。
    字下げを加えてもらったので混乱しないで全体的に見ることが可能になりました。

解決済み!
引用返信/返信 削除キー/
■22386 / inTopicNo.5)  Re[3]: Ask,Switchコマンドを5回使用したケース
□投稿者/ ツ華魯ツサツδ督ジツδ・ size=25 maxle -(2011/08/11(Thu) 14:56:59) [ID:mHDgQCFD]

    茶太郎さんの提案されたインクルード内でサブルーチンをサブルーチンで呼び一括する簡略方法を活用させて頂きました。

    仰るとおり縦に長くなっていた処理内容による混乱を防ぐ必要があったみたいで
    また容量も一つのアイテムにつき10行ものコードを当てると最終的にeveFileが1M~5Mになったりしていたでしょう。

    試してみると現在4kbの短縮で以前よりずっーっと見やすくなりました。ありがとうございます
引用返信/返信 削除キー/
■22751 / inTopicNo.6)  Re[1]: Ask,Switchコマンドを5回使用したケース
□投稿者/ スーパーコピー時計 -(2013/06/28(Fri) 10:19:32) [ID:wcuvTkEI]
http://www.jpwatch2019.com/
    No22382に返信(華魯サンジュさんの記事)
    > お久しぶりです。
    > 以下のインクルードで[A->(1-X,Y) (2) (3-X,Y)][B-X,Y]と次々に派生するAsk,Switchコマンドを5回使用した記述ですが、5度目の[B-X,Y]から始まる処理が省略されて(エラーは無し)しまいました。
    > Ask,Switchコマンドを5回使用したケースは今回が初めてでした,他の製作者様のシナリオでも例を見かけないパターンで初めて挑戦してみたのですが・・・
    > アドバイスをお願いします。
    > −−−−−−−−−−−インクルード.eve−−−−−−−−−−−−−
    > ask 選択してください
    > Aタイプ
    > Bタイプ
    > end
    > Switch 選択
    > case 1
    > ask アイテムを選んでください
    > アイテムA
    > アイテムB
    > アイテムC
    > end
    > Switch 選択
    > case 1
    > ask アイテムAを渡すキャラを選択してください
    > Aに渡します
    > Bに渡します
    > end
    > Switch 選択
    > case 1
    > #処理
    > case 2
    > #処理
    > endsw
    > case 2
    > talk
    > アイテムBを入手しました!
    > end
    > case 3
    > ask アイテムCを渡すキャラを選択してください
    > Aに渡します
    > Bに渡します
    > end
    > Switch 選択
    > case 1
    > #処理
    > case 2
    > #処理
    > endsw
    > case 2
    > #ここからが処理が行われない問題となってるBタイプの内容です
    > ask 装備1を装着するキャラを選択してください
    > Aに装着します
    > Bに装着します
    > end
    > Switch 選択
    > case 1
    > #処理
    > case 2
    > #処理
    > endsw
    > endsw
    > endsw
    > −−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    > Bタイプの処理はtalkやwaitなどで置き換えてみてもシナリオでは省略されています

引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -