Ejemplo n.º 1
0
piece_siam piece_correspondre_nom_cours(const char* nom_cours)
{
  assert(nom_cours!=NULL);
  assert(strlen(nom_cours)==3);

  //Possibilites:
  //
  // - nom vaut "***" -> case vide
  // - nom vaut "RRR" -> rocher
  // - nom commence par "e-" ou "r-"
  //     Alors il s'agit d'un animal.
  //     -> Recuperer le 3eme caractere
  //     -> Le convertir dans l'orientation de l'animal.
  //  - Si aucun des cas precedent, alors affiche erreur.

  piece_siam piece;
  piece_initialiser(&piece);


  if(strncmp(nom_cours,"***",3)==0)
    {
      piece_definir_case_vide(&piece);
    }
  else if(strncmp(nom_cours,"RRR",3)==0)
    {
      piece_definir_rocher(&piece);
    }
  else if((nom_cours[0]=='e' || nom_cours[0]=='r') && nom_cours[1]=='-')
    {
      const type_piece type=type_correspondre_caractere_animal(nom_cours[0]);
      const orientation_deplacement orientation=orientation_correspondre_caractere(nom_cours[2]);

      piece_definir(&piece,type,orientation);
    }
  else
    {
      printf("Erreur fonction %s\n",__FUNCTION__);
      abort();
    }

  return piece;

}
void plateau_initialiser(plateau_siam* plateau)
{
    // Initialise l'ensemble des cases du plateau a piece_vide
    // sauf les 3 cases du milieu avec un rocher (1,2), (2,2) et (3,2)
    //
    // L'etat de l'echiquier initial est le suivant:
    //
    // [4] *** | *** | *** | *** | *** |
    // [3] *** | *** | *** | *** | *** |
    // [2] *** | RRR | RRR | RRR | *** |
    // [1] *** | *** | *** | *** | *** |
    // [0] *** | *** | *** | *** | *** |
    //     [0]   [1]   [2]   [3]   [4]
    //


    int kx=0;
    for(kx=0 ; kx<NBR_CASES ; ++kx)
    {
        int ky=0;
        for(ky=0 ; ky<NBR_CASES ; ++ky)
        {
            piece_siam* piece=plateau_obtenir_piece(plateau,kx,ky);
            assert(piece!=NULL);

            if(ky==2 && (kx>=1 && kx<=3) )
                piece_definir_rocher(piece);
            else
                piece_definir_case_vide(piece);
        }
    }
    /*
    piece_siam piece;
    piece.orientation = gauche;
    piece.type = elephant;

    plateau->piece[1][1] = piece;
    */
    assert(plateau_etre_integre);
}