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

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

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

■22652 / inTopicNo.1)  ExchangeItemを使った装備変更について
  
□投稿者/ Shun -(2012/06/05(Tue) 21:48:40) [ID:6dcM1R2X]
    こんばんわ、Shunです。
    前回、RemoveItemコマンドを使った
    分岐における離脱時の装備変更について質問したのですが、
    もう一つの方法として、
    ExchangeItemコマンドを使うというアイデアを考えています。
    構想としては、離脱するパイロットをリスト化してパイロットを選ぶと、
    ExchangeItemコマンドでそのパイロットの装備変更を行えるようにするというものです。
    この方法の強みは、インターミッションの時と同じ感覚で、
    任意で指定した相手の取り外し可能な装備のみ変更できるという方法です。
    特定の相手の一部の装備品だけ外したい、といったときに役立ちます。
    イメージとしてはAskコマンドで離脱予定のパイロットのリストを作り、
    選択すると、そのパイロットにExchangeItemコマンドによる
    相手のアイテムの着脱ができるようにしたいのですが、
    分からない点がいくつかあります。

    一応大まかな形としては、以下のように想定しています。

    #Askコマンドで装備変更を行うか選択
    Ask 離脱するユニットの装備を外しますか?
    はい
    いいえ
    End

    #「はい」を選択すると、
    #再びAskコマンドで離脱するパイロットの中から誰の装備変更を行うかを選択する
    #右クリックキャンセルで装備外しを終了するか選ぶ
    Ask ユニット選択
    離脱パイロット1
    離脱パイロット2
    離脱パイロット3
    End

    #選択したら、そのパイロットにExchangeItemコマンドを適用する
    #また、その際には右クリックキャンセルでユニット選択に戻せるようにする
    #例…離脱パイロット1を選択した場合
    ExchangeItem 離脱パイロット1

    Askコマンドから次のAskコマンドへの繋げ方や、選択のやり直しに関して
    よくわからない点が多く、そのため上記のインクルは不備な点が数多いのですが、
    その辺りを詳しく教えて頂けたらと思います。

引用返信/返信 削除キー/
■22653 / inTopicNo.2)  Re[1]: ExchangeItemを使った装備変更について
□投稿者/ ラー -(2012/06/07(Thu) 02:11:46) [ID:wQ0IGnwt]
    書いてみました。一応、それっぽく動くと思います。

    Loop Whileまで進むとDoの行に戻ります。
    右クリックでキャンセルし、Breakが実行されるまでアイテム交換の処理を繰り返します。

    Ask アイテムを交換しますか?
    はい
    いいえ
    End
    // 「はい」を選んだ時だけ実行
    If 選択 = 1 Then
    // ここからループ
    Do
    Ask パイロットを選んでください キャンセル可
    離脱パイロット1
    離脱パイロット2
    離脱パイロット3
    (中略)
    End
    Switch 選択
    Case 0
    Ask アイテム交換を終了しますか?
    はい
    いいえ
    End
    // 「はい」を選んだ時はループ終了
    If 選択 = 1 Then
    Break
    EndIf
    Case 1
    ExchangeItem 離脱パイロット1
    Case 2
    ExchangeItem 離脱パイロット2
    Case 3
    ExchangeItem 離脱パイロット3
    (中略)
    EndSw
    Loop While (選択 > 0)
    // ここまでループ
    EndIf

引用返信/返信 削除キー/
■22656 / inTopicNo.3)  Re[2]: ExchangeItemを使った装備変更について
□投稿者/ Shun -(2012/06/09(Sat) 15:15:22) [ID:6dcM1R2X]
    ありがとうございます。
    とりあえず、書かれたとおりにしてみたら正常に動きました。
    ただ、アイテム交換を終了するかどうかは
    Confirmコマンドでも代用が出来るのではないかと思い、
    以下のように直して動かしてみたのですが、

    Ask アイテム交換を終了しますか?   Confirm アイテム交換を終了しますか?
    はい                 If 選択 = 1 Then
    いいえ              → Break
    End                  EndIf
    If 選択 = 1 Then
    Break
    EndIf

    Confirmコマンドによる選択肢だと、「OK」と「キャンセル」
    どちらを選んでも選択が終了になってしまします。
    この場合、うまく作動しない原因はどういったものなのでしょうか?


引用返信/返信 削除キー/
■22657 / inTopicNo.4)  Re[3]: ExchangeItemを使った装備変更について
□投稿者/ かせうか -(2012/06/10(Sun) 21:58:36) [ID:7N3BGIQE]
http://kathewka.web.fc2.com/
    2012/06/10(Sun) 23:52:04 編集(投稿者)
    「はじめまして」って書いたけど、全然初めましてじゃなかったよ!Σ('◇'*
    2012/06/10(Sun) 22:00:44 編集(投稿者)

    こんにちは、かせうかです。

    Askコマンドの場合、「いいえ」を選べば「選択」変数には 2 が入りますが、
    Confirmコマンドの場合、キャンセルを選べば「選択」変数には 0 が入ります。
    ループ、つまり処理を繰り返す条件(Loop Whileの後ろ)が (選択 > 0) となっているので、Confirmコマンドを使った場合、キャンセル時、選択の中身は 0 なので、
    選択 > 0 が
    0 > 0 となり、成り立たなくなるため、処理のループが終了します。

    ただ、はいといいえの二択ならば、AskコマンドよりConfirmコマンドの方がコードがすっきりしますので、この場合
    Loop While (選択 > 0)

    Loop While 1
    としたら良いかと思います。
    (ループを終える時はBreakを使った時だけなので)



    ーーーーーー
    蛇足になりますが、条件式について少し補足します。
    選択 > 0 などの条件式は、成り立つ場合に 1 、成り立たない場合に 0 に置き換わる性質があります。
    Do
    ~~
    Loop While ○○
    は、○○が 0 以外の時に、繰り返す処理を続けます。
    なので、上記に書いた
    Loop While 1
    は、○○が「常に 1」なので、無限ループという処理になります。

    ただ、今回の場合、ループを抜けたいのはBreakコマンドを使った時だけなので、
    「それ以外の時は無限に繰り返して良いよ」
    という事で、上記のようにしました。

    もし参考になれば幸いです。でわでわ!
引用返信/返信 削除キー/
■22658 / inTopicNo.5)  Re[4]: ExchangeItemを使った装備変更について
□投稿者/ Shun -(2012/06/11(Mon) 00:18:47) [ID:6dcM1R2X]
    ありがとうございます、参考にさせていただきます。
解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -