Package echiquier.gui

Source Code of echiquier.gui.CLI

package echiquier.gui;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import echiquier.outils.Couleur;
import echiquier.outils.DeplacementEtat;
import echiquier.outils.Outils;
import echiquier.outils.Position;
import echiquier.plateau.Echiquier;

/**
* Interface pour le jeu d'échec en ligne de commande
*
* @author Baptiste BOUCHEREAU <baptiste.bouchereau@cpe.fr>
* @author Eric GILLET <eric.gillet@cpe.fr>
*/
public class CLI {

  private static final String move_regex = "m.*([0-8]).*([0-8]).*([0-8]).*([0-8])";
  private Pattern movePattern;
  private Matcher matcher;
  private Echiquier eq;
  Couleur joueurCourrant = Couleur.BLANC;

  CLI(Echiquier eq) {
    this.eq = eq;
    movePattern = Pattern.compile(move_regex);
  }

  /**
   * @param args
   */
  public static void main(String[] args) {

    Echiquier eq = new Echiquier();
    CLI gui = new CLI(eq);

    eq.initPlateau();

    gui.gui();

  }

  public void gui() {
    System.out.println("Jeu d'échec\n");

    while (true) {
      eq.afficheTableau();
      System.out.println("Au joueur "
          + (joueurCourrant == Couleur.BLANC ? "blanc" : "noir")
          + " de jouer\n"
          + "Entrez une commande (h)");
      Scanner a = new Scanner(System.in);
      String i = a.nextLine();
      switch (i) {
      case "q":
        a.close();
        System.exit(0);
        break;
      case "h":
        System.out.println("You noob");
        break;
      default:
        matcher = movePattern.matcher(i);
        if (matcher.matches()) {
          Position pi = new Position(
              Integer.valueOf(matcher.group(1)),
              Integer.valueOf(matcher.group(2)));
          Position pf = new Position(
              Integer.valueOf(matcher.group(3)),
              Integer.valueOf(matcher.group(4)));
          if (eq.getPieceAt(pi).getCouleur() != joueurCourrant) {
            System.out.println("Cette pièce ne vous appartient pas");
            continue;
          }
          if (eq.getDeplacementEtat(pi, pf) == DeplacementEtat.SUCCES
            ) {
            eq.deplacer(pi, pf);
            joueurCourrant = joueurCourrant == Couleur.BLANC ? Couleur.NOIR : Couleur.BLANC;
          } else
            // Ajouter explication, voir getDeplacementEtat()
            System.out.println(Outils.decodeErreur(eq.getDeplacementEtat(
                pi, pf)));
        }

      }
    }
  }
}
TOP

Related Classes of echiquier.gui.CLI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.