電子書籍の厳選無料作品が豊富!

環境FLASH MX 
ボタンオンでスタート、もう一回押すと画面上ハズレ、又は当たり表示という簡単な判定機を作りたいです。
プログラムの確率は1/10とします。ただし、完全確率方式でハズレをいったんもとに戻す。またルーレットのように回るような抽選でなく
ランダム式がよいです。

ぜひ、アドバイスおねがいします!

A 回答 (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/documen …

「配列とは?Array」
http://www.1art.jp/flash/le/lesson34/lesson34.htm

この回答への補足

お久しぶりです、おかげさまでHPは好評です。
さて補足ですが、
> ボタンオンでスタート、もう一回押すと…
>ここがわかりません。
>ボタンオンで何がスタートするのでしょうか???
説明不足でしたので・・
ボタンはひとつです。
(1)ボタン“オン”
     ↓
(2)画面上が、当たり、ハズレ、当たり、はずれ・・とループ横スクロール
     ↓
(3)ボタン“オン”
     ↓
(4)プログラム判定結果、画面上でも当たりor外れ表示
     ↓
(5)ボタン“オン”
     ↓
     (2)へ

今回は目押しでなく(2)のスクロール中の当たり、ハズレはあくまでただの演出で内部判定(プログラム)結果により画面をハズレ、当たりへ強制表示にしたいです。

ぜひ、よろしくです!

補足日時:2006/12/23 14:11
    • good
    • 0
この回答へのお礼

ありがとうございます!
おかげさまで、基本的な判定機できあがりました。
今回スベリの方を使わせていただきました。
本当に感謝しています。

しかし、まだ完全ではないのですぐに質問させていただきます(汗)

お礼日時:2006/12/25 13:44

#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 で当たりを出すこと自体なんて,
もう簡単すぎてもうどうでも良い世界です。
他が難しすぎです。

この回答への補足

ありがとうございます。只今参考にしながら作成中です。
何時間も考えてもらい恐縮です。
スロでいうすべりは後日取り入れるつもりです。

>それに,スクロールを止めて,
>ズバッと「当たり」や「ハズレ」を出すのならまだ簡単なのですが,
>ズバッと出るとどう見ても変です。
とありますが今回はこれでかまいませんよ!スクロールはあくまでもただの演出で今回判定時はズバッと「当たり」「はずれ」でよいです。
貴方様のプログラムを参考に平行して作業しています、よろしくおねがいします(汗)

補足日時:2006/12/23 19:53
    • good
    • 0
この回答へのお礼

ありがとうございます!
おかげさまで、基本的な判定機できあがりました。
今回スベリの方を使わせていただきました。
本当に感謝しています。

しかし、まだ完全ではないのですぐに質問させていただきます(汗)

お礼日時:2006/12/25 13:43

例えばフローとしては


1.1~10の中からランダムでひとつの数字を抽出。
2.もし「1」だったら「あたり」と表示させ、
  それ以外では「はずれ」と表示させる。

でOKなのでは?

この回答への補足

はい、それでかまいません。

FLASH での作成方法(詳細)おねがいします。

補足日時:2006/12/22 13:02
    • good
    • 0
この回答へのお礼

ありがとうございます!
おかげさまで、基本的な判定機できあがりました。
今回スベリの方を使わせていただきました。
本当に感謝しています。

しかし、まだ完全ではないのですぐに質問させていただきます(汗)

お礼日時:2006/12/24 13:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!