Example #1
0
// ihm
void abalone::getInfoFromPlayer(void)
{    u32 waychoose; // variable utilisée pour tester la valeur de retour de la fonction de demande de direction
     
     // destruction de la validité de la selection precedente, selection, affichée sur l'aire de jeux..
     game->deleteSelection(0);
         
      char whatMove; // 0:pion, 1:groupe
      
      // demande quoi deplacer
      do
      {  whatMove = ' ';
         drawPlayerInfoAndArray(); // affichage stat et jeux
         // demande ce que l'on doit deplacer, un pion ou un groupe..
         shell.printc(JAUNE,"- que deplacer ? - ");
         printf("p: un pion, g: un groupe, x: passer son tour\n");
         scanf("%c",&whatMove);
         shell.flush();
      } while(whatMove != 'p' && whatMove != 'g' && whatMove != 'x');

     switch(whatMove)
     { 
       case 'p': // deplacement d'un pion
            struct position pos; pos.colon = pos.line = 0xff;
            
            while(1)
            { if(!askPosition(&pos,"- coordonnees du pion - ")) return;
              if(game->get(&pos) == joueurActif+1) break;
               else
              {   shell.printc(ROUGE,"\nvous ne pouvez choisir que l'un de vos pions!\n");
                  system("pause");
              }
            };
            
            // pour que le pion selectionné soit affiché visuellement
            game->deleteSelection(GROUPINFO);
            game->deleteSelection(LINEINFO);
            game->setDraw(&pos);

            // demande de la direction
            waychoose = askWay("- direction du deplacement -");
            if(waychoose == 0xff) return; // le player a choisi anuller
            
            // deplacement du pion..
            if(!game->move(&pos,waychoose))
            { shell.printc(ROUGE,"\ndeplacement impossible !\n");
              system("PAUSE");                             
            } else changerJoueurActif();
       break;
       
       case 'g': // deplacement d'un groupe
           struct position start, end;
           struct group grp;
           do
           { while(1)
             {
                // demande les coordonnees de debut du groupe
                while(1)
                { if(!askPosition(&start,"- coordonnees de debut du groupe - ")) return;
                  if(game->get(&start) == joueurActif+1) break;
                   else
                  {   shell.printc(ROUGE,"\nvous ne pouvez choisir que l'un de vos pions!\n");
                      system("pause");
                  }
                };
                
                // pour que le pion selectionné soit affiché visuellement
                game->deleteSelection(GROUPINFO);
                game->deleteSelection(LINEINFO);
                game->setDraw(&start);
                
                // demande les coordonnees de fin du groupe
               while(1)
                { if(!askPosition(&end,"- coordonnees de fin du groupe - ")) return;
                  if(game->get(&end) == joueurActif+1) break;
                   else
                  {   shell.printc(ROUGE,"\nvous ne pouvez choisir que l'un de vos pions!\n");
                      system("pause");
                  }
                };

                // definition du groupe courant (pour l'affichage)
                if(!game->setGroup(&grp,&start,&end))
                { shell.printc(ROUGE,"\ngroupe non valide!\n");
                  game->deleteSelection(0);
                  //shell.printc(ROUGE,"%i.%i -> %i.%i\n",start.colon,start.line,end.colon,end.line);
                  system("pause");                                                
                }
               else
                {  game->deleteSelection(SELECTINFO);
                   game->deleteSelection(LINEINFO);
                   game->setDraw(&grp);
                   break;
                } 
              }; // fin du 'while' du debut

              // demande de la direction de deplacement du groupe
              u32 way = askWay("- direction du deplacement -");
              if(way == 0xff) return;

              if(!game->move(&grp,way))
              {  game->deleteSelection(0);
                 shell.printc(ROUGE,"\ndeplacement impossible!\n");
                 system("pause");                             
              } else break; // si le deplacement est possible, on quitte la boucle infinie (le while 1)
           } while(1); // fin du 'do' du debut
           changerJoueurActif();
       break;
       
       case 'x':
            changerJoueurActif(); // sauter son tour
       break;
     };
}
Example #2
0
int main (void)
{

    printf("John Cena welcomes you to Bataillette Navale 2015. In the most mindblowing, balltwisting battleship match of the century, two players will face their destinies in the arena of death. \n");
/* crée une partie appelée "partie" */
    Partie partie = creerPartie();

/* initialise une variable j1 correspondant au joueur 1 de la partie */
    Joueur j1 = joueur1(partie);

/* initialise une variable j2 correspondant au joueur 2 de la partie */
    Joueur j2 = joueur2(partie);

 /* modifie la partie en appelant commencerPartie(Partie) -> rend j1 actif et laisse j2 inactif */
    partie = commencerPartie(partie);



/* demande à j1 de placer ses bateaux */
    printf("\nPlayer 1 needs to place his ships \n");
    placerBateau(j1);


/* demande à j2 de placer ses bateaux */
    printf("\nPlayer 2 needs to place his ships \n");
    placerBateau(j2);





/* tant que la partie n'est pas terminé -> la flotte de j1 ou j2 n'est pas vide */

    while((estFinie(partie))==0)
    {
        if (quelNumero(joueurActif(partie)) == 1)
        {
          printf("\nJoueur 1: \n");
        }
        else
        {
          printf("\nJoueur 2: \n");
        }
        partie = tirer(partie);
        partie = changerJoueurActif(partie);
    }

    /* une des flottes est vide */

/* si la flotte de j1 est vide */

    if (estVideFlotte(flotte(j1)) == 1) {
        printf("\nGAME OVER! Player 2 is the winner.");
    }
    else
    {
        printf("\nGAME OVER! Player 1 is the winner.");
    }

    return 0;

}