- ベストアンサー
簡単な当たり判定作りたい
環境FLASH MX ボタンオンでスタート、もう一回押すと画面上ハズレ、又は当たり表示という簡単な判定機を作りたいです。 プログラムの確率は1/10とします。ただし、完全確率方式でハズレをいったんもとに戻す。またルーレットのように回るような抽選でなく ランダム式がよいです。 ぜひ、アドバイスおねがいします!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
見覚えがあるお名前… と思えば,フットサルの方ですね。 お久しぶりです。 > ボタンオンでスタート、もう一回押すと… ここがわかりません。 ボタンオンで何がスタートするのでしょうか??? スタート という文字が表されるだけで良いのでしょうか。 確率1/10 で当たりを出すこと自体はすごく簡単なことですが, スタートなどの演出の方が難しいと思います。 また,ご質問からはどんなものか想像できない部分です。 「スタートという文字が表されるだけ」 の物だと次のようにすればできます。 新規ドキュメントを作成し, ステージ上に 「judge」 というインスタンス名(変数名ではありません)のダイナミックテキストを用意します。 文字の色は背景色以外の見やすい色にしてください。 そしてボタンを用意し, そのボタンに次のように書けば,できあがりです。 -------------------------------------- on (release) { // フラグの値が 無い か 0 であれば, if (flag == undefined || flag == 0) { // テキストフィールド judge に「スタート」を表示 _root.judge.text = "スタート"; // そしてフラグを 1 にする flag = 1; // // それ以外 } else { // 変数 lottery に 0~9 までの整数の乱数を代入 lottery = Math.floor(Math.random()*10); // lottery が 0 であれば if (lottery == 0) { // テキストフィールド judge に「当たり」を表示 _root.judge.text = "当たり"; } else { // それ以外は judge に「ハズレ」を表示 _root.judge.text = "ハズレ"; } // そしてフラグを 0 にする flag = 0; } } --------------------------------------- これでよろしいのでしょうか。 ================================== もう少し凝って, ボタンはフラグを切り換えるだけの役目にして, フレームにランダムに10種類の文字列を表示させるスクリプトを書いても良いと思います。 インスタンス名「judge」 というテキストフィールドはそのままで, ちょっと横長にエリアを広げておきます。 ボタンに書くスクリプト --------------------------------- on (release) { // フラグの値が 0 であれば, if (_root.flag == 0) { // フラグを 1 にする _root.flag = 1; // それ以外は } else { // フラグを 0 にする _root.flag = 0; } } --------------------------------- フレームに書くスクリプト --------------------------------- // フラグの初期値を設定 flag = 0; // // 配列 judgeArr の作成 judgeArr = new Array(); // 配列の各エレメントを設定 judgeArr[0] = "当たり"; judgeArr[1] = "ハズレだじょ~"; judgeArr[2] = "残念ハズレ"; judgeArr[3] = "おっとハズレちゃった"; judgeArr[4] = "なんとハズレ"; judgeArr[5] = "おみごとハズレです"; judgeArr[6] = "あららハズレ"; judgeArr[7] = "ハ・ズ・レっ!"; judgeArr[8] = "ハズレなのよ"; judgeArr[9] = "ハズレが好きね"; // // 1フレーム進む時間ごとに毎回計算 this.onEnterFrame = function() { if (flag == 1) { // judge に 配列judgeArr の乱数番エレメントを表示 _root.judge.text = judgeArr[Math.floor(Math.random()*10)]; } }; --------------------------------- テキストフィールドだけを使った簡単な演出例です。 結局 1/10 で「当たり」が出ることに変わりはありませんし, 目押しはおそらく不可能でしょうけど, こちらの方がなんとなく真剣味があって面白い気はします。 結局, #1の方が書かれている, 複数の中からランダムでひとつの数字を抽出。 もし「○」だったら「あたり」と表示させ、 それ以外では「はずれ」と表示させる。 という方法と全く同じです。 具体的に何をするのかを考えるのが難しいのです。 そこの部分をもう少し考えて, 上のようなことを応用すると,確率によって違う動作させることができますよ。 ---参考URL------ 「Math.random() でランダムな整数を取得する方法」 http://www.adobe.com/jp/support/flash/ts/documents/fl0173.html 「配列とは?Array」 http://www.1art.jp/flash/le/lesson34/lesson34.htm
その他の回答 (2)
#2です。 ダハあぁーーーーーっ,ムズカシかった~。 > ぜひ、よろしくです! と言われましてもすんごい難しかったですよ(涙)。 何時間も考え込んでしましました。 > 当たり、ハズレ、当たり、はずれ・・とループ横スクロール するわけでしょう。 これだけでも配列を駆使して難しいのに, さらに「当たり」なら「当たり」で,「ハズレ」なら「ハズレ」で, スクロールを止めないとならない…。 これが難しい。 それに,スクロールを止めて, ズバッと「当たり」や「ハズレ」を出すのならまだ簡単なのですが, ズバッと出るとどう見ても変です。 「当たり」の文字でボタンをクリックしたはずなのに, いきなり表示が「ハズレ」にコロっと変わるのは変すぎます。 だから, スロットでいう「スベリ」を入れて止めないとならない…。 かなり 汗汗もので作りましたよ。 「スベリ」を入れて, 次の「当たり」または「ハズレ」で自然に止まるようにしました。 ========================= 新規ドキュメントを作成して, ステージ上に 「judgeBox」 というインスタンス名(変数名ではありません)のダイナミックテキストを用意します。 文字の色は背景色以外の見やすい色にしてください。 そしてフレームには次のようなスクリプトを書きます。 ------------------------------------------- // スクロールする文字列の登録 scrWord = "当たり ハズレ "; // flag(フラグ)の初期値を設定(3 はストップ状態) flag = 3; // スクロールする文字列の配列を作成 scrArr = new Array(); // 配列を1文字ずつの要素に分解 scrArr = scrWord.split(""); // 配列のエレメント数の取得 scrLen = scrArr.length; // // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function() { // もし flag が 0 か 1 か 2 であれば if (flag == 0 || flag == 1 || flag == 2) { // judgeBox に配列の前4文字を表示 _root.judgeBox.text = scrArr.join("").substr(0, 4); // もし flag が 1 で 文字列の最初が "当" になれば if (flag == 1 && scrArr.join("").substr(0, 1) == "当") { // flag を 3 に(つまりストップ状態に)する flag = 3; // もし flag が 2 で文字列の最初が "ハ" になれば } else if (flag == 2 && scrArr.join("").substr(0, 1) == "ハ") { // flag を 3 に(つまりストップ状態に)する flag = 3; } // 配列の最初のエレメントを削除して最後のエレメントに代入 scrArr[scrLen-1] = scrArr.shift(); } }; ------------------------------------------- そしてボタンを作成して そのボタンには次のようなスクリプトを書きます。 ------------------------------------------- on (release) { // もし flag が 0 であれば if (_root.flag == 0) { // 変数 lottery に 0~9 までの整数の乱数を代入 lottery = Math.floor(Math.random()*10); // // lottery が 0 であれば if (lottery == 0) { // flag の値を 1 にする _root.flag = 1; } else { // それ以外は flag の値を 2 にする _root.flag = 2; } // // flag が 0 以外であれば } else { _root.flag = 0; } } ------------------------------------------- パブリッシュで完成です。 自分で作るのなら, 色々構造物(作り込んだムービークリップなど)を作成できますが, ココでは,その説明ができませんから,なんとか簡単に作れるようにしなければなりません。 したがって上のような形になりました。 難しいと思いますが, コメント行は1行1行入れていますから, カスタマイズするとすれば, 自力でしてカスタマイズしてくださいね。 スクリプトは短いですが,これを考えるだけでもかなり大変でした。 こんなのになると, 1/10 で当たりを出すこと自体なんて, もう簡単すぎてもうどうでも良い世界です。 他が難しすぎです。
お礼
ありがとうございます! おかげさまで、基本的な判定機できあがりました。 今回スベリの方を使わせていただきました。 本当に感謝しています。 しかし、まだ完全ではないのですぐに質問させていただきます(汗)
補足
ありがとうございます。只今参考にしながら作成中です。 何時間も考えてもらい恐縮です。 スロでいうすべりは後日取り入れるつもりです。 >それに,スクロールを止めて, >ズバッと「当たり」や「ハズレ」を出すのならまだ簡単なのですが, >ズバッと出るとどう見ても変です。 とありますが今回はこれでかまいませんよ!スクロールはあくまでもただの演出で今回判定時はズバッと「当たり」「はずれ」でよいです。 貴方様のプログラムを参考に平行して作業しています、よろしくおねがいします(汗)
- kancil
- ベストアンサー率27% (26/95)
例えばフローとしては 1.1~10の中からランダムでひとつの数字を抽出。 2.もし「1」だったら「あたり」と表示させ、 それ以外では「はずれ」と表示させる。 でOKなのでは?
お礼
ありがとうございます! おかげさまで、基本的な判定機できあがりました。 今回スベリの方を使わせていただきました。 本当に感謝しています。 しかし、まだ完全ではないのですぐに質問させていただきます(汗)
補足
はい、それでかまいません。 FLASH での作成方法(詳細)おねがいします。
お礼
ありがとうございます! おかげさまで、基本的な判定機できあがりました。 今回スベリの方を使わせていただきました。 本当に感謝しています。 しかし、まだ完全ではないのですぐに質問させていただきます(汗)
補足
お久しぶりです、おかげさまでHPは好評です。 さて補足ですが、 > ボタンオンでスタート、もう一回押すと… >ここがわかりません。 >ボタンオンで何がスタートするのでしょうか??? 説明不足でしたので・・ ボタンはひとつです。 (1)ボタン“オン” ↓ (2)画面上が、当たり、ハズレ、当たり、はずれ・・とループ横スクロール ↓ (3)ボタン“オン” ↓ (4)プログラム判定結果、画面上でも当たりor外れ表示 ↓ (5)ボタン“オン” ↓ (2)へ 今回は目押しでなく(2)のスクロール中の当たり、ハズレはあくまでただの演出で内部判定(プログラム)結果により画面をハズレ、当たりへ強制表示にしたいです。 ぜひ、よろしくです!