No.1ベストアンサー
- 回答日時:
○ × ★ ---1段目
■ ○ × ---2段目
△ ■ ○ ---3段目
B B B ---ストップボタン
って感じのスロットをイメージしてください。
1,2,3段目はActionScriptで動的に作ります。
3個のストップボタンはステージに配置しておきます。
インスタンス名はstop0_mc、stop1_mc、stop2_mcとして下さい。
(※ボタンと表現してますがMovieClipで作成してください)
次に絵柄をMovieClipで5個用意してください。
とりあえず高さは40ピクセルで作成しといてください。
これはステージに配置せず、ライブラリ内でリンケージ識別子をつけます。
識別子はpic0_mc~pic4_mcとしてください。
//以下のActionScriptをステージに記述してください--------------------------
//絵柄の数
var pic_num = 5;
//絵柄の高さ
var h_num = 40;
//深度 (※1)
var depth = 0;
//配列の配列を初期化(絵柄を消したり揃ったか見るのに使う) (※2)
var mc_array = new Array();
for (var i = 0; i<=2; i++) {
mc_array[i] = new Array();
}
//ボタンを押した回数(3回押したら絵柄の揃いを判定)
var cnt = 0;
//ボタン押したときの動作設定---------------------------------
for (var i = 0; i<=2; i++) {
_root["stop"+i+"_mc"].onRelease = release_me;
//どのボタンが押されたかわかるように変数idxを作成し番号を保持
_root["stop"+i+"_mc"].idx = i;
}
//ボタンを押したときに呼び出す関数---------------------------
function release_me() {
//ボタンを押した回数加算
_root.cnt++;
//一度押したボタンは押せなくする
this.enabled = false;
//スロットを止める関数を呼ぶ
_root.stop_slot(this);
//3つのボタン全て押したとき
if (cnt == 3) {
//絵柄の揃いをチェックする関数を呼ぶ
hit_check();
}
}
//スロットを止める関数----------------------------------------
//引数:押したボタン(MC)
function stop_slot(btn_mc) {
//1段目に表示する絵をランダムで決定
n = Math.floor(Math.random()*_root.pic_num);
//縦方向の絵の順番は同じなので1段目が決まれば2,3段目も自動的に決まる
//上図でいうと1段目に○が来たら、2段目は必ず■になる (※3)
for (var row = 1; row<=3; row++) {
//動的にMCをステージに配置
_root.mc_array[row-1][btn_mc.idx] =_root.attachMovie("pic"+n+"_mc", "pic"+row+"_"+btn_mc.idx, _root.depth);
//x,y座標を設定 x座標は押したボタンのx座標と同じ
_root.mc_array[row-1][btn_mc.idx]._x = btn_mc._x;
_root.mc_array[row-1][btn_mc.idx]._y = btn_mc._y-btn_mc._height/2-_root.h_num*(4-row);
//どの位置にどの絵柄を配置したかをわかりやすくするため、
//変数numを作成し絵柄の番号を代入 (※4)
_root.mc_array[row-1][btn_mc.idx].num = n;
//2、3段目の絵柄を取得(加算するだけ)
n++;
//絵柄の数を超えたら一周して先頭の絵柄にする
if (n>=_root.pic_num) {
n = 0;
}
//深度加算
_root.depth++;
}
}
//絵柄の揃いをチェックする関数-------------------------------
function hit_check() {
//確認用に出力
for (var row = 0; row<=2; row++) {
str = "";
for (var col = 0; col<=2; col++) {
str += " "+_root.mc_array[row][col].num;
}
trace(str);
}
//斜め位置が揃っているか確認 (※5)
if (_root.mc_array[0][0].num == _root.mc_array[1][1].num && _root.mc_array[1][1].num == _root.mc_array[2][2].num) {
trace("斜めに揃った1");
}
if (_root.mc_array[0][2].num == _root.mc_array[1][1].num && _root.mc_array[1][1].num == _root.mc_array[2][0].num) {
trace("斜めに揃った2");
}
//横
if (_root.mc_array[0][0].num == _root.mc_array[0][1].num && _root.mc_array[0][1].num == _root.mc_array[0][2].num) {
trace("1段目揃った");
}
if (_root.mc_array[1][0].num == _root.mc_array[1][1].num && _root.mc_array[1][1].num == _root.mc_array[1][2].num) {
trace("2段目揃った");
}
if (_root.mc_array[2][0].num == _root.mc_array[2][1].num && _root.mc_array[2][1].num == _root.mc_array[2][2].num) {
trace("3段目揃った");
}
}
//絵柄をリセットする関数-------------------------------------
//このAs内ではどこにも記述してません。
//必要であればリセットボタンを作ってそこから呼んでください。
function reset() {
//ボタンを押せるようにする
//初期化
for (var i = 0; i<=2; i++) {
_root["stop"+i+"_mc"].enabled = true;
}
_root.cnt = 0;
for (var row = 0; row<=2; row++) {
for (var col = 0; col<=2; col++) {
_root.mc_array[row][col].removeMovieClip();
}
}
}
//------------------------------------------------------------------------
[補足]
(※1)
深度を自動的に取得するgetNextHighestDepthは、
ライブラリ内にコンポーネントがあると使用できる深度より大きな値を返してくる。
そうするとその深度でattachMovieしたMCは消せなくなるので深度を自分で管理する。
(※2)
配列の配列≒2次元配列です
(ASに2次元配列は無いみたいなので同じようなものです)
mc_array[行][列]として絵柄のMCを入れています。
1列目 2列目 3列目
1段目 [0][0] [0][1] [0][2]
2段目 [1][0] [1][1] [1][2]
3段目 [2][0] [2][1] [2][2]
って感じになります。
(※3)
今回は、
○
■
△
★
×
という絵柄がぐるぐる回っていると仮定して作成しているため、
1段目が決まれば2,3段目も自動的に決まるってことです。
つまり1段目が揃うと2,3段目も揃うことになります。ですので、
本格的に作るなら1,2,3列目は違う順番(または違う数)の絵柄が
回るように考えないといけません。
特にこだわらないのであれば9つの絵柄を全部ランダムで決めてもいいと思います。
(※4)
絵柄の番号ってこはランダムで取得したnのことで、
n=0ならpic0_mcを、n=1ならpic1_mcをステージに配置しています。
この番号をみればどの列が揃ったのかが簡単に判断できます。
(※5)
3つの値(a,b,c)を比較するとき
if(a==b==c){} という書き方だと (a==b)==c と解釈される
これは a==b が true の場合 true==c の比較になるので正しい結果は得られません
ですので a==b && b==c で判断します。
実行してみるとわかると思いますが、絵柄が回る部分は作っていません。
私は実際に回すよりも回っている様に見えるアニメを配置したほうがそれっぽく見えると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
photoshopで書いた四角の枠の中...
-
ダブルクリックと2回クリックの...
-
画面の範囲選択
-
static関数がmapファイルに載ら...
-
変数に256文字以上のテキストを...
-
setIntervalの解除方法について
-
C言語でのマウスを移動とマウス...
-
楕円の軌道に傾斜をつける方法...
-
全てのテキストボックスをセル...
-
pythonの画像の貼り付けについて
-
VB.NETでパラメータクエリを使...
-
RPG(AS400)の本、サイトってあ...
-
VB6.0 でメニューを作りたいん...
-
五芒星は、悪魔崇拝とどういう...
-
IP Address 入力フォームについて
-
C# chart controlの透過について
-
sendAndLoadでcgiからの戻り値...
-
インスタンスとポインタ
-
ボタンの上にカーソルを置いた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
ActionScript3.0の修正に関して
-
四角形の端っこをドラッグした...
-
tweenerを使ったスライドショー
-
FLASHでスロットゲームを作りた...
-
ラッコって?
-
テキスト入力
-
テキストファイルから読み込ん...
-
マウスホイールでムービークリ...
-
ActionScript3のMovieClipについて
-
縦横比率のを変えずに画像のサ...
-
ピクチャーコントロールのデバ...
-
ステージの背景画像のみ拡大縮...
-
ダイナミックテキストを印刷す...
-
AS3.0 Timerの使い方
-
Flashにて画像がスクロール
-
以下のActionScriptをスッキリ...
-
Flashで外部jpgファイルをmcに...
-
マウスが押されているのか(DOWN...
おすすめ情報