private void buildPorts() {
		int i=0, portIndex=0;	// Compteur, numero des tuiles ports.
		
		i = 0;
		for (int j: portIndexes) {	// Pour chaque tuile mer.
			waterTile[i] = (WaterTile) grid[j];	// Ajouter la tuile mer au tableau des tuiles mers.
			i++;	// Incremente le compteur de tuiles mers.
		}
		
		for (i = 0 ; i < 9 ; i++) {	// Pour les 9 ports de la carte.
			do {
				portIndex = randomInt(0, 17);	// Choisit un nombre aleatoire parmi les 18 tuiles mers.
			} while (!checkPort(portIndex));	// Tant que la verification du nombre n'a pas ete validee. La verification creee egalement les ports dans le modele.
		}

		i = 0;
		for (WaterTile t: waterTile) {	// Pour chaque tuile mer.
			if (t.hasPorts()) {	// Si la tuile est un port.
				ports[i] = t;	// Ajoute la tuile mer au tableau des tuiles mers etant des ports. Uniquement utile pour l'affichage des ports dans la console pour l'instant.
				i++;	// Incremente le compteur de tuiles ports.
			}
		}

		for (i = 0 ; i < 5 ; i++) {	// Pour les 5 ports specialises (<=> rapport d'echange 2:1 avec une ressource particuliere).
			int j = 0;
			do {
				j = randomInt(0, 8);	// Choisit un numero de port au hasard parmis les 9.
			} while (ports[j].isSpecialized());	// Tant que le port de numero choisi est specialise.
			ports[j].specialize(randomResource(i));	// Specialise le port avec la ressource en fonction de l'entier i qui symbolise ici egalement les 5 ressources. 
		}

		for (WaterTile t: ports) {	// Pour chaque port.
			if (!t.isSpecialized()) t.specialize("all");	// S'il n'est pas specialise, le specialiser pour toutes les ressources (<=> rapport d'echange 3:1 avec toutes les ressources). La string ressource est alors "all". 
			fireSetPorts(t.getIndex(), t.getC1(), t.getC2(), t.getResource());	// Notifie les observateurs de la specialisation de la tuile mer en un port, en fonction de son numero, le 1er coin de l'hexagone etant un port, le deuxieme, et la ressource du port.
		}
	}