私はイメージグリッドにアルファナンバーイメージを設定しましたが、問題は50pixel(単一のセルグリッドの次元)の「モジュール」を使ってナンバーイメージを移動する方法ですフリーセルがありますか? 私はAndengineを使用しており、各番号の画像はスプライトで、グリッド画像も1つです。Andengine:ゲーム15とナンバーイメージの移動
編集:私はこのように働いている:
私はこの二つの機能を持つタイルの位置を設定します。
private void getGrid()
{
boolean end = false;
Random random = new Random();
int x = 0;
while(ALDef.size() < 15 && x < 100)
{
// Genera un numero a caso, da 1 a 15
int numRandom = random.nextInt(15);
System.out.println(x++ + ") Scelgo un numero RANDOM:" + numRandom);
// il numero e' gia' presente in array?
if (!memory.contains(numRandom))
{
System.out.println("ADD " + numRandom);
// Non e' presente...
ALDef.add(numRandom);
memory.add(numRandom);
}
else
{
System.out.println("ESISTE " + numRandom);
memory.add(numRandom);
}
}
System.out.println("------------------------------");
}
// ===========================================================
// Restituisce le coordinate
// ===========================================================
public HashMap getCoordinates(int numInArray)
{
// Ottiene l'integer corrispondente a numInArray, ovvero il tasto
Integer value = ALDef.get(numInArray);
int row = 0; // riga della tabella
int position = 0; // posizione
// Definisce la riga
if (numInArray <= 3)
{
row = 0;
position = 3 - (3 - numInArray);
}
else if (numInArray >= 4 && numInArray <= 7)
{
row = 1;
position = numInArray - 4;
}
else if (numInArray >= 8 && numInArray <= 11)
{
row = 2;
position = numInArray - 8;
}
else if (numInArray >= 12 && numInArray <= 15)
{
row = 3;
position = numInArray - 12;
}
HashMap HM = new HashMap();
HM.put("btn" , value);
HM.put("x" , width * position);
HM.put("y" , height * row);
System.out.println("Colloco il numero " + (value) + " nella casella " + numInArray + "(ROW=" + row + ",POS=" + position + ")");
return HM;
}
この2つの関数の論理はgetGridは、ArrayListの中に入れたということですタイル番号画像に対応する乱数(0〜15) getCoordinatesを使用すると、この関数はスプライトを定めるためにタイルの座標(行0,1,2,3および位置0,1,2,3)を返します。
あなたは[this](http://en.wikipedia.org/wiki/Fifteen_puzzle)について話していますか? – skyuzo
はい、それです! – Soul