プログラム初心者です。AS3.0で書いています
簡単な15面パズルを作りたいです。
15面パズルは解けない配置があるらしいので、ランダムではなく数字の入れ替えを100回くらい行いたいです。この入れ替えの処理をどう書けばいいのか教えてください
スタートボタンを押したときに4つの隣接するマスをランダムに選び、入れ替えを行うようにすればいいらしいのですがどうやって書けばいいのかわかりません(端のマスは例外処理をいれる)
できれば重複もなくしたいです
よろしくお願いします
メインタイムラインには
mc1~mc16のムービークリップ
mcのなかに入れ子で数字が入っています
no1~no16のテキスト
スタートボタン内のasです
var i:int;
var parentObject:Object=Object(parent);
parentObject.sbtn.addEventListener(MouseEvent.CLICK,Mouse_Down);
function Mouse_Down(event:MouseEvent):void
{
for( i = 1 ; i <= 16 ; i++ ) //カード番号の初期化、左上に1右下に16の規則的な配置
{
Object(root)[ "mc" + i ]["no" + i].text = "";
}
for( i = 1 ; i <= 16 ; i++) //配列の初期化クリア
{
//配列の初期化をクリアできる処理
}
//ここにスタートボタンを押したときに4つの隣接するマスをランダムに選び、100回くらい入れ替えができる処理を入れたいです
if( Object(root)[ "mc" + i ]["no" + i].text == 16 )
{
Object(root)[ "mc" + i ]["no" + i].text = ""; //「no16」の表示をクリアして空のマスを作る
Object(root).soeji = i; //数値をクリアした配列の「添え字」を保存
}
}
No.1ベストアンサー
- 回答日時:
20年ばかり前に、Basio言語で作ったことがありますが、考えかたのみ紹介すると、
(1)配列Aを16個を用意する(25個、36個、49個のレベルも選べるようにしました。)
(2)それぞれの配列に、配列変数と同じ数字を割り当てる。16番目には0を割り当てる。
(3)ランダムに1~4の数字Xを出し、空白のパネル(0が割り当てられている配列)がどちらに進むか決める。
(4)(3)で決めた方向が、適切でないとき(枠外にはみ出る)、(3)をやり直す。
(5)進む方向の配列変数にある数字と、空白のマスの数字(つまりは0)を置き換える。
(6)(3)~(5)を何回か繰り返す。繰り返す回数(置き換える回数)も選べるようにしました。
(7)Play中は、カーソルキーにより進む方向を決め、(3)~(5)を繰り返す。
というものです。つまりは、マスはそのままにし、そこに入る数字だけを入れ替えるというものです。
大体の方針はつかんでらっしゃるみたいですね。(4)は、X=1のとき上のマスと交換としたなら、空白のマスが1~4だったら上はないのでやり直し、というif文書けばいい。(5)は上と交換なら、配列変数-4と交換。
ランダムに選ぶには、宣言が必要ですよ。そうしなければ、いつも同じ数字が出てくることになり、同じ結果になる。
表示は別のObjectで、A(1)~A(16)まで表示すればいい。
とまあ、こんなものです。できあがったら、私のやったみたいに、レベルを変えられるようにしたら、面白いですよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) 正規表現を用いての並び替え 7 2022/04/04 09:27
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Excel(エクセル) EXCELで次の数式を教えてください。 5 2022/11/23 18:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
スマホでサイトの画像を長押し→...
-
flash (.swf) を編集したい
-
フラッシュゲームアーカイブ2
-
VBAのコンボボックスの年月表示...
-
pcが真っ暗になる
-
potplayerについて質問です
-
pcのロードを速めたい!
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでボタンを押すと画像をラン...
-
配列の要素番号を取得するには?
-
VB.NET の配列の要素数
-
重複しない乱数整数を発生させる。
-
IDの自動採番について
-
DataGridでCTRLキーを押さずに...
-
重複しない乱数の生成
-
複数の変数宣言を、for文で一気...
-
変な質問ですみません、n番目の...
-
C言語のsizeof(サイズオブ)演算...
-
Vba 配列の中の特定文字列の位...
-
FlashソフトSuzukaで、トランプ...
-
VB6 複数行のテキストをリスト...
-
簡単な当たり判定作りたい
-
【数字ランダム】計算問題ラン...
-
絵を描き、その都度のxy座標を...
-
String.prototype.split2d 理...
-
問題がランダムに出るクイズ
-
ヒープソートの問題について
-
景品パネルの作り方
おすすめ情報