private int IndiceDe(PosTer posTerrain) // retourne la taille du tableau si la position n'est pas trouvée { int i = 0; while (i < position.Length && position[i] != posTerrain) { i++; } return(i); }
public void AjouOuSuppPosition(PosTer pos) { if (this.EstUn(pos)) { SuppressionPosition(pos); } else { AjoutPosition(pos); } }
public bool SuppressionPosition(PosTer pos) { int indiceDePos = IndiceDe(pos); bool supprime = indiceDePos < this.position.Length; if (supprime) { this.position[indiceDePos] = 0; } TriPoste(); return(supprime); }
/*=============TRAITEMENT DES POSITIONS SUR LE TERRAIN===================*/ /* * Systeme de position: * les positions pour un joueur sont stocké dans un tableau de taille 3. * un joueur ne peu pas avoir deux fois le même poste, une verification à chaque ajout. * à chaque ajout ou suppression, un tri est effectué. Les postes sont alors rangé dans l ordre listé dans PosTer.cs du plud grand au plus petit * un tri est effectué pour : * -Placer tout les '0' à la fin du tableau (utile à la methode TotalPosition() * une valeur de 0 dans le tableau signifie qu'il n occupe pas de poste à cet indice. * */ public bool AjoutPosition(PosTer pos) { int nbPoste = TotalPosition(); bool AjoutReussi = nbPoste < this.position.Length && !EstUn(pos); if (AjoutReussi) { this.position[nbPoste] = pos; } TriPoste(); return(AjoutReussi); }
private void TriPoste() { for (int i = this.position.Length - 1; i >= 1; i--) { for (int j = 0; j <= i - 1; j++) { if (this.position[j + 1] > this.position[j]) { PosTer pos = this.position[j + 1]; this.position[j + 1] = this.position[j]; this.position[j] = pos; } } } }
public bool EstUn(PosTer posTerrain) { return(this.IndiceDe(posTerrain) < this.position.Length); }