//charger la carte nbCase = -1; //rentrer les coordonnées des cases maxX = 16; maxY = 8; // ! ne pas oublier de mettre des nombres pair pour la hauteur ! for (int i=0; i < maxY; i++) { for (int j=0; j < maxX; j++) { nbCase++; Plateau[nbCase].locX = i; Plateau[nbCase].locY = j; plateau[nbCase].posY = 32 + (locY * 32); plateau[nbCase].posX = 8 + (locX * 96) + (locY % 2) * 48; } }
public int getPosition(int pos, int dir) { //retrouve le numero de la case d'arrivée suivant la case de départ et la direction //retourne -1 si on ne peut pas se deplacer dans cette direction int maxCase = maxX * maxY; int a = pos; switch (dir) { case 1: //nord-est //System.out.println("nord-est"); a = pos - 1 + (pos % 2) * maxY * 2 ; if( pos % (maxY * 2) == 0 ){return -1;} break; case 2: //sud-est //System.out.println("sud-est"); a = pos + 1 + (pos % 2) * maxY * 2 ; if( (pos + 1) % (maxY * 2) == 0 ){return -1;} break; case 3: //sud //System.out.println("sud"); a = pos + 2; if( (pos + 1) % (maxY * 2) == 0){return -1; } if( (pos + 2) % (maxY * 2) == 0){return -1; } break; case 4: //sud-ouest //System.out.println("sud-ouest"); a = pos - (Math.abs(pos - 1) % 2) * maxY * 2 ; if( (pos + 1) % (maxY * 2) == 0){return -1; } break; case 5: //nord-ouest //System.out.println("nord-ouest"); a = pos - (Math.abs(pos - 1) % 2) * maxY * 2 ; if( pos % (maxY * 2) == 0){return -1; } break; case 6: //nord //System.out.println("nord"); a = pos - 2; if( pos % (maxY * 2) == 0){return -1; } if( (pos - 1) % (maxY * 2) == 0){return -1; } break; } if( a >= 0 && a < maxCase){return a;} //si le calcul dépassse le total de case return -1; }