• ベストアンサー

vc#で15パズル

学校のvisual c#の課題で15パズル(1~15の数字を並べ替える)を作ろうと思ったんですが、どうすればいいか分かりません。 ボタンを4×4ならべて、空のボタンの隣のボタンが押されると入れ替わるという方式で作ろうと思ってます。 初心者の頭でどうにか思いついたこと↓ 「2次元配列で各ボタンに値を対応させる?  数をばらばらに並べる際の方法。(乱数を使う?でも、乱数だと重複 しそう)」 大まかな流れだけでいいので教えていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

VC#が出てきた時に練習用に作りました。 その時の方式は下記の通りです。参考にしてください。 各駒は横位置(0~3)と縦位置(0~3)を持っている。(左上を0,0とする) ◎攪拌 (1) 最初に駒を順番に並べる。(完成形) (2) 空の位置を求める。(EmpX,EmpY) (3) 乱数により縦に動かすか横に動かすかを決める。 (4) 乱数により動かす駒の(空との)距離を決める。(D:0~2) (5) (3)と(4)より動かす駒の位置を求める。posX = (EmpX + d + 1) % 4; または posY = (EmpY + d + 1) % 4; (6) 求めた駒(PosX,PosY)を動かす。 (7) 難しさのレベルに応じて(2)~(6)を複数回繰り返す。(例:1,2,4,8,16,32回) ◎駒を動かす。(指定した駒位置が空になるように動かす) (1) 駒の位置を求める。(PosX,PosY) (2) 空の位置を求める。(EmpX,EmpY) (3) PosX==EmpXなら横に動かせる。(PosX>EmpX:左から順に、PosX<EmpX:右から順に) (4) PosY==EmpYなら縦に動かせる。(PosY>EmpY:上から順に、PosY<EmpY:下から順に)

75300812
質問者

お礼

難しそうですが、がんばってみます。

関連するQ&A