
はじめまして。
現在flashでクイズを作っています。
一回スタートさせれば問題はランダムに5問でます。
正解し続ければ5問でクリア。
間違えれば終了です。
そこでクイズに使う背景を重複しないものにしたいと思っていますがうまくいきません。
dummy_mcを作ってそこに
現在背景用の1~10swfファイルをランダム表示させています。
ただこれだと同じ背景が続けてでてきたりしてしまいます。
これを一回のゲームで背景が重複しないで表示させたいと思っています。
アニメーション、フレーム移動などは理解していますが
scriptになると正直わからないことだらけです。
現在勉強中でscriptはコピペしながら改造している状態です。
解決法をわかるかたがいらっしゃったらよろしくお願い致します。
No.4ベストアンサー
- 回答日時:
注釈つけておきます。
なるべく理解した方がいいですよ。
numberList = [1, 2, 3];
//配列numberListを1,2,3を入れた状態で生成。
randomList = [];
//配列numberListを空の状態で生成。
for (k=3; k>=1; k--) {
//kの初期値が3で、
//繰り返しごとにkから1引いて、
//kが1以上の内は繰り返せ。
//という処理だけども...※後述
randNum = Math.floor(Math.random()*(k));
//kを元に生成した乱数を変数randNumに代入。
choiceNum = numberList[randNum];
//配列numberListのrandNum番目の要素を、
//変数choiceNumに抽出し代入。
randomList.push(choiceNum);
//choiceNumを配列randomListに追加。
numberList.splice(randNum, 1);
//配列numberListの抽出済み要素を取り除く。
}
※補足
for (k=3; k>=1; k--) {
これはkにnumberListの配列の要素数を
いちいち設定しないといけません。
配列の要素数はlengthで取り出せるので、
for (k = numberList.length; k>=1; k--) {
としておけば、numberListの要素数をどう変えても
自動的に要素数分のシャッフル処理ができるのでお得(?)
まとめると…(コピペタイム)
///////////////////////////////////////////////
MOTO = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
BARA = [];
for (k = MOTO.length; k > 0; k--) {
RAN = Math.floor(Math.random() * (k));
KAE = MOTO[RAN];
BARA.push(KAE);
MOTO.splice(RAN, 1);
}
//以下、出力パネル確認用
trace("BARA= " + BARA);
for (k = 0; k < BARA.length; k++) {
trace("BARA[" + k + "]= " + BARA[k]);
}
///////////////////////////////////////////////
「numberList」とか「choiceNum」とかだと
無駄に敷居が高く見えちゃうもんなので、
元の配列はMOTO
シャッフル後の配列はBARA
乱数はRAN
順序を変更する要素はKAE
に、それぞれして直してみました。
変数名や配列名は任意です。人に見せた時に分かるように、
意味のある英語にしておいた方がいいってだけの事で、
自分しか見ないなら、自分が分かれば何でもいいんです。(´~`)
ご回答ありがとうございます。
おかげさまでなんとか先に進めそうです。
助かりました。
貴重なお時間を頂きましてほんとありがとうございます。
No.3
- 回答日時:
> 現在ランダムに数字を出すスクリプトは分かったのですが
なっ 単なるコピペじゃん ヽ(`⌒´)ノ=3
元はコレでしょーっ!
http://hfm-kenchan.com/Lesson/log_qa/D0709023.htm
これは「分かった」とは言いません。「知った」です。
って、まぁ別にいいんですけどね…(´~`;)
ただ、何をやってるかは知っておくべきだと思いますよ…
例えば、
> このランダム数字を配列に入れ直すことが出来ず悩んでます。
悩む必要はありません。だってもう入ってますやん。
randomListってのがソレです。
最終行に
trace(randomList); って入れてみて下さい。
出力パネルで確認できますから。
> 配列に入れ直してそれを順に取り出していけば
> なんとかカタチになるかな~とも思っているのですが
> どうでしょう?
はい、そうです。それでカタチになるです。
シャッフルを実行した後の配列randomListに
仮に[2,3,1]と入ったとします。
randomList[0]と参照すれば2が取り出せます。
randomList[1]と参照すれば3が取り出せます。
randomList[2]と参照すれば1が取り出せます。
要素も数値だと分かりにくいかな?
↓
例えば、仮にSHIMAPIYOという配列に
["ぱんだ","いたち","ひよこ","ごりら"]が入ってたとします。
SHIMAPIYO[0]と参照すれば "ぱんだ" が取り出せます。
SHIMAPIYO[1]と参照すれば "いたち" が取り出せます。
SHIMAPIYO[2]と参照すれば "ひよこ" が取り出せます。
SHIMAPIYO[3]と参照すれば "ごりら" が取り出せます。
という事です。
「ひよこ」ラベルにジャンプしたいなら、
gotoAndStop(randomList[2]);
「bg3.swf」をBGムービークリップに読み込みたいなら、
BG.loadMovie("bg"+randomList[1]+"swf");
「ごりらはぱんだの2倍強い」と
MSGテキストフィールドに表示させたいなら
MSG.text=SHIMAPIYO[3]+"は"+SHIMAPIYO[0]+"の"+randomList[0]+"倍強い";
となります。(・_・) どうでしょ。
おそらく必要なのはswf読み込みのヤツだけでしょうけど。
配列理解の一助として。
No.2
- 回答日時:
> それをランダムに入れ替え
> 現在ランダムに入れ替たところまでは分かったのですが
どうランダムに入れ替えるのでしょうか。
「シャッフルせよ」なんてメソッドはありません。
ここはそんなサクッと流せるところではないのです。
> で、配列もそう使うんだ・・・
> くらいで正直よくわかりません。
じゃあ、配列をまず理解すべきだと思います。
変数は理解していますか。
> とおもってるのですが
> これをどうひとつづつ処理していくのか現在悩んでる状況です。
了解です。でもこれは一旦おいときましょう。
シャッフルについて形になってからでもいいので。
ご回答ありがとうございます。
多分自分自身分かってなかったと思います。
現在変数も確認しながら理解しようとしてる最中です。
現在ランダムに数字を出すスクリプトは分かったのですが
/*numberList = [1, 2, 3];
randomList = [];
for (k=3; k>=1; k--) {
randNum = Math.floor(Math.random()*(k));
choiceNum = numberList[randNum];
randomList.push(choiceNum);
numberList.splice(randNum, 1);
}*/
このランダム数字を配列に入れ直すことが出来ず悩んでます。
配列に入れ直してそれを順に取り出していけば
なんとかカタチになるかな~とも思っているのですが
どうでしょう?
すいません、折角ご回答頂いたのに正直頭の中混乱してます。
もしお付き合いいただけるようであれば助言等いただければ助かります。
ご回答ありがとうございました。
No.1
- 回答日時:
最初に表示させる要素を用意します。
例えば、1,2,3,4,5,6
その順序をランダムに入れ替えます。
例えば、2,5,6,1,3,4
で、これを頭から順に表示させる、考え方としてはこんな感じです。
これをどうスクリプトにするかを考えてください。
実際のコードはともかくもフローは思い描けるでしょう。
まずはそこからだと思います。
配列は分かりますか?
ご回答ありがとうございます。
ご返信遅くなり申し訳ございませんでした。
いろいろ考えて大体のフローは思いえがけたと思います。
最初に表示させる要素を用意
それをランダムに入れ替え
ランダム要素から(フレームはgotoで戻してるから)
enterframeごとにランダム要素を順番に処理していく
で、配列もそう使うんだ・・・
くらいで正直よくわかりません。
現在ランダムに入れ替たところまでは分かったのですが
ランダムに入れ替えた後
たとえば
vae movie_array=["2.swf","3.swf","1.swf"]
をenterframeごとにひとつづつ処理していけばいいかな・・
とおもってるのですが
これをどうひとつづつ処理していくのか現在悩んでる状況です。
また助言等いただけるものであれば
ご回答いただければ幸いです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 zoomで自分の顔の背景 3 2023/06/07 22:34
- その他(ブラウザ) zoomのバーチャル背景が選べない 4 2022/12/08 12:38
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- 音楽・動画 メドレー動画制作について 1 2023/03/06 12:00
- その他(Microsoft Office) googleスプレットシートで左右の数値を比較して色判別させたい 2 2022/06/06 18:33
- 美術・アート デザインについての考察。 なぜ人の脳は、規則正しく連続した要素を「背景」と認識するのか、実験してみま 2 2022/04/11 21:08
- Visual Basic(VBA) エクセルから、パワーポイントのスライドを複数作成する。 1 2022/07/08 09:40
- 写真・ビデオ 写真撮るの好きな方や、詳しい方に質問です。 写真を撮るときに、さりげなく今現在のタイムライン(202 3 2023/02/01 14:23
- レトロゲーム ファミコンのインベーダー。なぜ左右に動けるのか? 1 2022/07/05 14:19
- Windows 10 壁紙フォルダが表示されない 1 2022/11/16 21:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホでサイトの画像を長押し→...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
-
VBAのコンボボックスの年月表示...
-
Adobe Flash Player
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の要素番号を取得するには?
-
VB.NET の配列の要素数
-
重複しない乱数の生成
-
Vba 配列の中の特定文字列の位...
-
IDの自動採番について
-
VBでボタンを押すと画像をラン...
-
変な質問ですみません、n番目の...
-
ActionScript3で乱数を取得しな...
-
[Objective-c]多次元配列のアク...
-
データ構造のテキスト保存につ...
-
複数の変数宣言を、for文で一気...
-
重複しない乱数を作り配列に入...
-
配列操作
-
String.prototype.split2d 理...
-
ユーザー定義関数が呼び出せない
-
Action Script 2.0 配列の比較
-
【ActionScript】配列の昇順降...
-
ActionScriptで配列をクリアす...
-
VB6 複数行のテキストをリスト...
-
アクションスクリプト for~in時
おすすめ情報