// 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; }; }
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; }