Example #1
0
int recuperer_valeur()
{
	if (turn == 1) {
		printf("[SYS] Au tour de \"%s\"(X). Que voulez-vous jouer ? ",joueur1);
		scanf("%s",jeu);
		if (strcmp(jeu,"tab") == 0)
			afficher_plateau();
		else
			printf("[SYS] Vous avez joué %s\n\n",jeu);
	} else if (turn == 2) {

		if (contre_ia)
		{
			int i, j;
			for (i = 0; i < N; i++) {
				for (j = 0; j < N; j++) {
					if (test_adjacence(i,j) && test_coup(i,j)) {
						jeu[0] = i+65;
						jeu[1] = j+49;
					}
				}
			}
			/*
			if (i == 8 && j == 8)
				return -1;
			*/
			printf("[SYS] PC a joué : %s\n", jeu);
		} else {
			printf("[SYS] Au tour de \"%s\"(O). Que voulez-vous jouer ? ",joueur2);
			scanf("%s",jeu);

			if (strcmp(jeu,"tab") == 0)
				afficher_plateau();
			else
				printf("[SYS] Vous avez joué %s\n\n",jeu);
		}
	} else {
		fprintf(stderr, "[ERR] Erreur selection joueur\n");
		return -1;
	}

	return 1;
}
Example #2
0
/** @ingroup test
 *  @brief Teste les plateaux
 *
 */
void test_plateau(void)
{
	int taille = 19;
	Plateau plateau = creer_plateau(taille);
	assert(plateau_get_taille(plateau) == taille);

	for (int y = 0; y < taille; y++) {
		for (int x = 0; x < taille; x++) {
			Couleur c = rand() % 3;
			plateau_set(plateau, x, y, c);
			assert(plateau_get(plateau, x, y) == c);
		}
	}

	afficher_plateau(plateau);
	detruire_plateau(plateau);
}
Example #3
0
int main()
{
  morpion_t partie = creer_partie();
  int vainqueur = VIDE , i = 0;
  while(vainqueur == VIDE && i < 9)
  {
    vainqueur = tour(&partie);
    afficher_plateau(partie);
    changer_joueur(&partie);
    i++;
  }

  if(vainqueur == ROND)
    printf("LE JOUEUR ROND A GAGNÉ\n");
  else if(vainqueur == CROIX)
    printf("LE JOUEUR CROIX A GAGNÉ\n");
  else
    printf("PERSONNE N'A GAGNE\n");

  return EXIT_SUCCESS;

}
Example #4
0
int main ()
{


    char choix;

    printf("Voulez-vous jouer contre l'ordinateur ? (O/n)\n");

    scanf("%c",&choix);

    if (choix == 'O' || choix == 'o')
    	contre_ia = 1;


	printf("[SYS] Entrez le nom du joueur1 (X) : ");
	scanf("%s",joueur1);

	if (contre_ia) {
		strcpy(joueur2,"PC");

	} else { 
		printf("[SYS] Entrez le nom du joueur2 (O) : ");
		scanf("%s",joueur2);
	}
	printf("[SYS] Joueur1(X): \"%s\", Joueur2(O): \"%s\"\n",joueur1, joueur2);

	initialiser();
	afficher_plateau();

	int finished=0;
	while(!finished)
	{
		int val = recuperer_valeur();


		if (val < 0)
			finished=1;


		/* Dans la table ASCII: • les minuscules sont entre 97 et 122
		 						• Les majuscules entre 65 et 90;
		*/
		int x,y;
		y = (jeu[1] - '0') -1;
		

		if (jeu[0] >= 65 && jeu[0] < 73) /* 73 pour s'arrêter à H */
			x = jeu[0] - 65;
		else if (jeu[0] >= 97 && jeu[0] < 105) /* 105 pour s'arrêter à h */
			x = jeu[0] - 97;
		else {
			fprintf(stderr, "[ERR] Vous avez entré une valeur erronnée.\n");
			continue;
		}


		if (strcmp(jeu,"tab") == 0)
			continue;

		if ((x < 0 || x > 8 || y < 0 || y > 8))
		{
			fprintf(stderr, "[ERR] Vous avez entré une valeur erronnée.\n");
			continue;
		}
		if (plateau[x][y] != 0) {
			fprintf(stderr, "[ERR] La case est déjà remplie :( Réessayez\n");
			continue;
		}
		
		if (!test_adjacence(x,y) || !test_coup(x,y)) {
			fprintf(stderr, "[ERR] Ce coup est impossible. Réessayez\n");
			continue;
		}


		jouer_coup(x,y);

		turn = (turn == 1) ? 2 : 1;

		afficher_plateau();

	}

	printf("Terminé ! %s a eu %d, %s a eu %d\n",joueur1, score_j1, joueur2, score_j2);


	return 0;
}
Example #5
0
void jeu( processeur liste_processeur[][16], int nbTours  ){
  adresse ad;
  int x, y;
  processeur *p ;
  short int mot;

    
  while(nbTours > 0){
    printf("tours restants  : %d\n\n",nbTours);
    nbTours -= 1;
    appliquer_interruptions(liste_processeur);
    appliquer_modifications(liste_processeur);
    afficher_plateau(liste_processeur,C1,C2);
    afficher_processeur_debug(liste_processeur[0][0]);

    for(x = 0; x<16; x+=1){
      for(y = 0; y<16; y+=1){
	ad.x = x;
	ad.y = y;
	ad.adresse_memoire = 0;
	p = & liste_processeur[ad.x][ad.y];
	mot = *(short int *)&p->ram[(p->r[PC])%256];

	/*Si le processeur n'a pas joué*/

	if(!p->aJoue){
	  /*si le timer est actif*/

	  if(p->ram[TIMER_ACTIF]){

	    /*Si le timer n'est pas arrivé à expiration*/
	    if(p->ram[HORLOGE]<p->ram[VALEUR_LIMITE]){
	      /*si on detecte une instruction illegale*/
	      if((mot>>11)==0x001F){
		ajouter_liste_interruption(&ad,ILLEGAL);
	      }
	      else{
		tableau_de_commandes[((mot>>11)&0x001F)%30](liste_processeur,&ad);
		/*On appelle la commande associée à la commande décodée dans le mot*/
		p->cycles+=1;
		if(p->cycles >= p->ram[CYCLES]){
		  
		  p->ram[HORLOGE]+=1;
		  p->cycles = 0;
		}
	      }
	    }
	    else{
	      
	      ajouter_liste_interruption(&ad,TIMER);
	      p->ram[HORLOGE]=0;
	      p->ram[TIMER_ACTIF]=0;
	      p->cycles = 0;
	    }
	  }
	  else{
	    /*si on detecte une instruction illegale*/
	    if((mot>>11)==0x001F){
	      ajouter_liste_interruption(&ad,ILLEGAL);
	    }
	    else{
	      tableau_de_commandes[((mot>>11)&0x001F)%30](liste_processeur,&ad);
	    }
	    /*On appelle la commande associée à la commande décodée dans le mot*/
	  }
	}