@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g); // paint parent's background

		// dessin du cadre
		g.drawLine(0, 0, xMax, 0);
		g.drawLine(xMax, 0, xMax, yMax);
		g.drawLine(xMax, yMax, 0, yMax);
		g.drawLine(0, yMax, 0, 0);

		// DEBUT dessin de la grille -----------------------------------------
		int xDebut;
		int xFin;
		int yDebut;
		int yFin;

		// calcul taille case
		xDimCase = xMax / colonnes;
		yDimCase = yMax / lignes;

		// dessin de toutes les colonnes
		for (int i = 1; i <= (colonnes - 1); i++) {
			// calcul des coordonnees de chaque colonne
			xDebut = (i * xDimCase);
			xFin = xDebut;
			yDebut = 0;
			yFin = yMax;

			// dessin de la colonne
			g.drawLine(xDebut, yDebut, xFin, yFin);
		}

		// dessin de toutes les lignes
		for (int i = 1; i <= (lignes - 1); i++) {
			// calcul des coordonnees de chaque ligne
			xDebut = 0;
			xFin = xMax;
			yDebut = (i * yDimCase);
			yFin = yDebut;

			// dessin de la ligne
			g.drawLine(xDebut, yDebut, xFin, yFin);
		}

		// FIN dessin de la grille -----------------------------------------

		// DEBUT dessin X / O -----------------------------
		premierJoueur = null;
		if (m.getListeCoups().size() > 0) {
			int xHautGauche = 0;
			int yHautGauche = 0;
			for (Coup coup : m.getListeCoups()) {
//				 for (Coup coup : coups) {
				// affectation premier joueur pour differencier symbole apres
				if (premierJoueur == null) {
					premierJoueur = coup.getJoueur();
				}

				// recuperation case jouee et calcul coordonnees debut dessin
				// symbole
				// coordonnees debut dessin: (num case sur x - 1) * (taille x) +
				// [(taille x) / 4]
				xHautGauche = ((coup.getCoordx() - 1) * xDimCase)
						+ (xDimCase / 4);
				yHautGauche = ((coup.getCoordy() - 1) * yDimCase)
						+ (yDimCase / 4);
				int tailleDessin = Math.min(xDimCase / 2, yDimCase / 2);

				// choix X ou O
				int symbole = coup.getJoueur() == premierJoueur ? 1 : 2;
				switch (symbole) {
				case 1:
					// dessin O
					g.drawOval(xHautGauche, yHautGauche, tailleDessin,
							tailleDessin);
					break;
				case 2:
					// dessin X diagonale HG -> BD
					g.drawLine(xHautGauche, yHautGauche, xHautGauche
							+ tailleDessin, yHautGauche + tailleDessin);

					// dessin X diagonale BG -> HD
					g.drawLine(xHautGauche, yHautGauche + tailleDessin,
							xHautGauche + tailleDessin, yHautGauche);
					break;
				default:
					break;
				}

			}
			// FIN dessin X / O -----------------------------


		}

	}