• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ぐるぐるーぷ。)

無限ループを回避した乱数表示プログラムの作り方

このQ&Aのポイント
  • 質問者は無限ループを回避しながら乱数を表示するプログラムを作りたいとしています。
  • 質問者はフレーム1で前回の乱数と異なる乱数を表示する必要があります。
  • 質問者は指定回数の乱数表示を満たしたらフレーム3に遷移する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.1

見た感じ, if文の閉じ括弧( } ) もしくは, do...while文 の閉じ括弧のどちらかが抜けています。 実際にコピペしてみると..., やはり,シンタックスエラーでパブリッシュできませんよ。 do...while文 や if文 以前に, パブリッシュできないので,無限ループにも何もならないのですが。 無限ループ以前に,パブリッシュできてしまう点がすんごく疑問です。 } while (aa == 1); の前に } を追加すれば,パブリッシュできました。 (自動インデントを入れていますが。) ------------------------------------------- a = 0; //前回のrandam_aを代入する!これで前の数字を出さないようにする。 aa = 0; //aループの条件スイッチ do { randam_a = Math.floor(Math.random()*9)+1; //ランダムの整数 if (randam_a == a) { aa = 1; //ここで【doループ】抜けれるようにフラグ } } while (aa == 1); aa = 0; //また【フレーム1】に戻っても【doループ】できるように。 // randam_a を trace trace(randam_a); ------------------------------------------- アクションパネルの上部には, 左から, [+] [虫眼鏡] [ライフルの照準] [チェック] [行揃え] [コメント?] [投げ縄] のようなボタンが並んでいますが, [チェック(Vみたいなの)] と [行揃え] みたいなボタンをうまく活用してください。 [チェック(Vみたいなの)] みたいなボタンはシンタックスチェックで,構文をチェックしてくれます。 [行揃え] みたいなボタンは,自動でインデントを付けてくれるのでコードが見やすくなります。 その他のボタンも, みんなすばらしい機能の持ち主たちです。 「スクリプトアシスト」など最たる物です。 活用してあげてください。 でも,上のように,  } を元から付けてあっても, 確率的には無限ループすとことは絶対にないとは言い切れません。 randam_a が 0 であり続ける場合です。 しかしなんで,パブリッシュできたのでしょう? それが不思議で不思議で。 「教えて!goo」 か 「OKWave」 に質問してみたいところです。

dizzdive
質問者

お礼

お手数おかけしましたm(><)m 現在、質問に投げたソースを randam_aとrandam_b側が欲しかったので 片方のソースを削って、 実際に作りながら、ループ処理をやっていましたー! かっこが足りないのはコピーミス(汗 コピーする時に変数も質問用に改良していたので そのサンプルでエラー出ても不思議じゃないです! ごめんなさいです! スクリプト編集画面の便利なコマンド教えてもらって 助かりました! やっとアクションスクリプトの事も フレームとシーンの違いも理解できてきて、 整理できてきたところです! たくさんご指導してもらってありがとうございます。 おかげでFlashが楽しいです!

その他の回答 (1)

noname#35109
noname#35109
回答No.2

#1です。 フレームのループの指定回数でしたか。失礼しました。 フレーム1 に次のように書いて ---------------------------------- // 規定数の設定(5問) regulation = 5; // もし変数countが未定義であれば if (count == undefined) { // count の初期値を 0 にする var count = 0; } --------------------------------- フレーム2 のスクリプトの最後に 次のように書くと一応できます。 -------------------------------- // count に 1 を加算 count++; // もし count が regulation に達すれば if (count == regulation) { // フレーム3 に行くけど this.gotoAndPlay(3); } else { // それ以外はループ this.gotoAndPlay(1); } -------------------------------- 一応できますというのは, 一応規定回数フレーム移動はしますということです。 実際は,フレーム2 に上のようなことを書くと一瞬で フレーム1 や フレーム3 に行ってしまいますから, フレーム2 に何かが表示されたかされていないかは確認することはできません。 ですから実際には, フレーム2~フレーム○ まで何かを表示させるようにしておいて, フレーム○ に上記2番目のスクリプトを, gotoAndPlay(○+1);  などに書き換えて,用意する必要があるとは思いますが。