Unity ピース位置の割り出し(15パズル)

ピースを押した時に、どんな処理が必要なんだろう?
と考え直して、必要な処理を整理してみました。


・空きマスの位置確認
・押したピースの位置確認
・押したピースが空きマスと隣接しているか判断
・ピースを移動させる
・移動後のそれぞれのポジションを更新する

うわー(*。*)

結構処理を同時に行わないとダメなようです。

全てが一括で処理できる魔法のコマンドないですかね~
考えるのが大変だわ(;^_^A


ま、都合よく行かないのがプログラムと人生…
頑張ってみます。


まず、位置情報を取得しないと始まらないので、
位置情報取得のメソッドを考えてみたいと思います。

空きマスとピースの位置情報は、Pos[0~15]に格納されているので、
この中から押したピースの位置と0番を取り出さないとダメみたいです。

押したピースの番号はPuPiece(int BtNo)で取得して
押したピースの位置をAddP
0番の位置をAdd0
に取り出してみます。

private int Add0;
private int AddP;

public void PuPiece(int BtNo)
{
for (int i = 0; i < 16; i++)
{
if (Pos[i] == 0)
{
Add0 = i;
}
if (Pos[i] == BtNo)
{
AddP = i;
}
}
}

これで、それぞれの位置情報は取得できそうです。

次の処理は空きマスと押したピースが隣接しているか判断する。
これをどうするかです。

ボタンの4方向に空きがあるか確認する。
位置によっては2方向、3方向

これまた難問だわσ(・・?)..ヘ(~・・)ゝ

位置によって判断するならピース位置から
分類するか~

うーん…

switchで位置情報を元に判断するのが妥当かな?
とひらめいたので、これで処理を考えて行こうと思います。

かなり複雑
止めときゃよかったorz

(;^o^) \(ToT )あんたほんとにそれでいいの


この記事へのコメント