Profil supprimé | Bonsoir à tous,
j'aimerais comprendre ce programme qui est un morpion et je compte sur votre gentillesse pour m'expliquer ce programme dans ses grandes lignes.
Merci d'avance.
Voici la bête:
Code :
- #include <stdlib.h>
- #include <stdio.h>
- #include<time.h>
- #include <SDL/SDL.h>
- int plateau_de_jeu[3][3]={{0,0,0},
- {0,0,0},
- {0,0,0}};
- int menu_morpion(SDL_Surface *ecran_de_menu)
- {
- int choix=0,choix_x=0,choix_y=0,continuer=1;
- SDL_Surface *image_menu_morpion=NULL,*image_choix1=NULL,*image_choix2=NULL,*image_choix3=NULL,*image_choix4=NULL;
- SDL_Rect position_ecran_de_menu,position_choix1,position_choix2,position_choix3,position_choix4;
- SDL_Event event;
- SDL_Init(SDL_INIT_VIDEO);
- SDL_WM_SetCaption("Jeu du Morpion", NULL);
- position_ecran_de_menu.x=0;
- position_ecran_de_menu.y=0;
- position_choix1.x=320;position_choix1.y=250;
- position_choix2.x=320;position_choix2.y=350;
- position_choix3.x=320;position_choix3.y=450;
- //position_choix4.x=320;position_choix4.y=550;// choix4 = tutorial à mettre
- image_menu_morpion = SDL_LoadBMP("Menu_morpion.bmp" );
- SDL_BlitSurface(image_menu_morpion, NULL, ecran_de_menu, &position_ecran_de_menu);
- image_choix1= SDL_LoadBMP("choix 1.bmp" );
- SDL_BlitSurface(image_choix1, NULL, ecran_de_menu, &position_choix1);
- image_choix2= SDL_LoadBMP("choix 2.bmp" );
- SDL_BlitSurface(image_choix2, NULL, ecran_de_menu, &position_choix2);
- image_choix3= SDL_LoadBMP("choix 3.bmp" );
- SDL_BlitSurface(image_choix3, NULL, ecran_de_menu, &position_choix3);
- /*
- image_choix3= SDL_LoadBMP("choix 4.bmp" );
- SDL_BlitSurface(image_choix4, NULL, ecran_de_menu, &position_choix4);
- */
- SDL_Flip(ecran_de_menu);
- while(continuer==1)
- {
- while(choix==0)
- {
- SDL_WaitEvent(&event);
- switch(event.type)
- {
- case SDL_QUIT:
- continuer = 0;
- choix=10;
- break;
- case SDL_MOUSEBUTTONUP:
- choix_x = event.button.x;
- choix_y = event.button.y;
- break;
- }
- if((choix_x>360)&&(choix_x<680))
- {
- if((choix_y>230)&&(choix_y<330))
- {
- choix=1;
- }
- if((choix_y>330)&&(choix_y<430))
- {
- choix=2;
- }
- if((choix_y>430)&&(choix_y<520))
- {
- choix=3;
- }
- if((choix_y>520)&&(choix_y<580))
- {
- choix=4;
- }
- }
- }
- if(choix==10)
- {
- return 0;
- }
- return choix;
- }
- SDL_FreeSurface(image_menu_morpion);
- SDL_FreeSurface(ecran_de_menu);
- }
- int emplacement_dans_tableau(int case_joue, int passage)
- {
- switch (case_joue)
- {
- case 1:
- if(passage==0) return 100;
- return 375;
- break;
- case 2:
- if(passage==0) return 300;
- return 375;
- break;
- case 3:
- if(passage==0) return 500;
- return 375;
- break;
- case 4:
- if(passage==0) return 100;
- return 225;
- break;
- case 5:
- if(passage==0) return 300;
- return 225;
- break;
- case 6:
- if(passage==0) return 500;
- return 225;
- break;
- case 7:
- if(passage==0) return 100;
- return 75;
- break;
- case 8:
- if(passage==0) return 300;
- return 75;
- break;
- case 9:
- if(passage==0) return 500;
- return 75;
- break;
- }
- }
- int traitement_case_joue( int case_joue_x, int case_joue_y)
- {
- if((case_joue_x>500)&&(case_joue_x<=600))
- {
- if((case_joue_y>=75)&&(case_joue_y<225))
- {
- return 9;
- }
- if((case_joue_y>=225)&&(case_joue_y<400))
- {
- return 6;
- }
- if((case_joue_y>=400)&&(case_joue_y<=500))
- {
- return 3;
- }
- }
- if((case_joue_x>300)&&(case_joue_x<=500))
- {
- if((case_joue_y>=75)&&(case_joue_y<225))
- {
- return 8;
- }
- if((case_joue_y>=225)&&(case_joue_y<400))
- {
- return 5;
- }
- if((case_joue_y>=400)&&(case_joue_y<=500))
- {
- return 2;
- }
- }
- if((case_joue_x>100)&&(case_joue_x<=300))
- {
- if((case_joue_y>=75)&&(case_joue_y<225))
- {
- return 7;
- }
- if((case_joue_y>=225)&&(case_joue_y<400))
- {
- return 4;
- }
- if((case_joue_y>=400)&&(case_joue_y<=500))
- {
- return 1;
- }
- }
- return 0;
- }
- int verification_case_libre(int tab_jeu_a_verif_en_cours, int num_joue_a_verif)
- {
- if(tab_jeu_a_verif_en_cours!=0)
- {
- return 0;
- }
- else
- {
- if((num_joue_a_verif>9)||(num_joue_a_verif<1))
- {
- return 2;
- }
- else
- {
- return 1;
- }
- }
- }
- void modification_tableau_de_jeu(int case_joue,int num_joueur)
- {
- switch (case_joue)
- {
- case 1:
- plateau_de_jeu[2][0]=num_joueur;
- break;
- case 2:
- plateau_de_jeu[2][1]=num_joueur;
- break;
- case 3:
- plateau_de_jeu[2][2]=num_joueur;
- break;
- case 4:
- plateau_de_jeu[1][0]=num_joueur;
- break;
- case 5:
- plateau_de_jeu[1][1]=num_joueur;
- break;
- case 6:
- plateau_de_jeu[1][2]=num_joueur;
- break;
- case 7:
- plateau_de_jeu[0][0]=num_joueur;
- break;
- case 8:
- plateau_de_jeu[0][1]=num_joueur;
- break;
- case 9:
- plateau_de_jeu[0][2]=num_joueur;
- break;
- }
- }
- int verification_joueur( int case_joue)
- {
- switch (case_joue)
- {
- case 1:
- if(plateau_de_jeu[2][0]!=0) return 0;
- break;
- case 2:
- if(plateau_de_jeu[2][1]!=0) return 0;
- break;
- case 3:
- if(plateau_de_jeu[2][2]!=0) return 0;
- break;
- case 4:
- if(plateau_de_jeu[1][0]!=0) return 0;
- break;
- case 5:
- if(plateau_de_jeu[1][1]!=0) return 0;
- break;
- case 6:
- if(plateau_de_jeu[1][2]!=0) return 0;
- break;
- case 7:
- if(plateau_de_jeu[0][0]!=0) return 0;
- break;
- case 8:
- if(plateau_de_jeu[0][1]!=0) return 0;
- break;
- case 9:
- if(plateau_de_jeu[0][2]!=0) return 0;
- break;
- }
- return 1;
- }
- int moteur_2D(int numero_joueur,int IA,int fonctionnement,int case_joue)
- {
- int continuer=1,case_joue_x=0,case_joue_y=0,incr=0,incr1=0,case_jouee_ce_tour=0;
- SDL_Surface *ecran = NULL, *imageDeFond = NULL, *tableau_de_jeu_morpion= NULL, *forme_joueur=NULL;
- SDL_Rect positionFond,positiontableau_de_jeu_morpion, positionforme_joueur;
- SDL_Event event;
- if(fonctionnement!=0)
- {
- positionFond.x = 0;
- positionFond.y = 0;
- positiontableau_de_jeu_morpion.x = 100;
- positiontableau_de_jeu_morpion.y = 75;
- SDL_Init(SDL_INIT_VIDEO);
- ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
- SDL_WM_SetCaption("Jeu du Morpion", NULL);
- imageDeFond = SDL_LoadBMP("Arriere_plan_morpion.bmp" );
- SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
- tableau_de_jeu_morpion = SDL_LoadBMP("table_morpion.bmp" );
- SDL_SetColorKey(tableau_de_jeu_morpion, SDL_SRCCOLORKEY, SDL_MapRGB(tableau_de_jeu_morpion->format, 0, 0, 128));
- SDL_BlitSurface(tableau_de_jeu_morpion, NULL, ecran, &positiontableau_de_jeu_morpion);
- if(fonctionnement==2)
- {
- SDL_Flip(ecran);
- }
- if(numero_joueur!=0)
- {
- while(continuer==1)
- {
- if(IA==0)
- {
- do
- {
- case_joue=0;
- while(case_joue==0)
- {
- SDL_WaitEvent(&event);
- switch(event.type)
- {
- case SDL_QUIT:
- continuer = 0;
- case_joue=10;
- break;
- case SDL_MOUSEBUTTONUP:
- case_joue_x = event.button.x;
- case_joue_y = event.button.y;
- break;
- }
- if(case_joue!=10)
- {
- case_joue=traitement_case_joue(case_joue_x,case_joue_y);
- }
- }
- }while((verification_joueur(case_joue)==0)&&(continuer==1));
- }
- if(case_joue==10) return 10;
- case_jouee_ce_tour=case_joue;
- if(case_joue!=0)
- {
- positionforme_joueur.x = emplacement_dans_tableau(case_joue, 0);
- positionforme_joueur.y = emplacement_dans_tableau(case_joue, 1);
- modification_tableau_de_jeu(case_joue,numero_joueur);
- case_joue=13;
- for(incr=0;incr<3;incr++) //affichage du plateau de jeu
- {
- case_joue=case_joue-6;
- for(incr1=0;incr1<3;incr1++)
- {
- numero_joueur=plateau_de_jeu[incr][incr1];
- positionforme_joueur.x = emplacement_dans_tableau(case_joue, 0);
- positionforme_joueur.y = emplacement_dans_tableau(case_joue, 1);
- if(numero_joueur==1)
- {
- forme_joueur= SDL_LoadBMP("croix.bmp" );
- }
- if(numero_joueur==2)
- {
- forme_joueur= SDL_LoadBMP("rond.bmp" );
- }
- if(numero_joueur!=0)
- {
- SDL_SetColorKey(forme_joueur, SDL_SRCCOLORKEY, SDL_MapRGB(forme_joueur->format, 0, 0, 128));
- SDL_BlitSurface(forme_joueur, NULL, ecran, &positionforme_joueur);
- }
- case_joue++;
- }
- }
- SDL_Flip(ecran);
- return case_jouee_ce_tour;
- }
- }
- }
- }
- if(fonctionnement==0)
- {
- SDL_FreeSurface(imageDeFond);
- }
- return 0;
- }
- int verif_win_ligne(int *tab_jeu_ligne,int val_joueur,int ai_active)
- {
- int num_ligne=0,num_colonne=0,win_verif=0,presque_victoire=0,compteur_case_remplit=0;
- while(num_ligne<3)
- {
- win_verif=0;
- while(num_colonne<3)
- {
- if(*(tab_jeu_ligne+num_ligne*3+num_colonne)==val_joueur)
- {
- win_verif++;
- }
- if(*(tab_jeu_ligne+num_ligne*3+num_colonne)!=0) compteur_case_remplit++;
- if(win_verif==2)
- {
- presque_victoire=1;
- }
- if((compteur_case_remplit==3)&&(win_verif!=3))
- {
- presque_victoire=0;
- }
- num_colonne++;
- }
- if((win_verif==3)&&(ai_active==0)) return val_joueur;
- if((presque_victoire==1)&&(ai_active==1))
- {
- return num_ligne+1;
- }
- num_colonne=0;
- num_ligne++;
- compteur_case_remplit=0;
- }
- return 0;
- }
- int verif_win_colonne(int *tab_jeu_colonne,int val_joueur,int ai_active)
- {
- int num_ligne=0,num_colonne=0,win_verif=0,presque_victoire=0,compteur_case_remplit=0;
- while(num_colonne<3)
- {
- win_verif=0;
- while(num_ligne<3)
- {
- if(*(tab_jeu_colonne+num_ligne*3+num_colonne)==val_joueur)
- {
- win_verif++;
- }
- if(*(tab_jeu_colonne+num_ligne*3+num_colonne)!=0)
- {
- compteur_case_remplit++;
- }
- if(win_verif==2)
- {
- presque_victoire=1;
- }
- if(compteur_case_remplit==3)
- {
- presque_victoire=0;
- }
- num_ligne++;
- }
- if((win_verif==3)&&(ai_active==0)) return val_joueur;
- if((presque_victoire==1)&&(ai_active==1))
- {
- return num_colonne+1;
- }
- num_ligne=0;
- num_colonne++;
- compteur_case_remplit=0;
- }
- return 0;
- }
- int verif_win_diagonale(int *tab_jeu_diagonale,int val_joueur,int ai_active)
- {
- if((*(tab_jeu_diagonale)==val_joueur)&&(*(tab_jeu_diagonale+4)==val_joueur)&&(*(tab_jeu_diagonale+8)==val_joueur))
- {
- return val_joueur;
- }
- if((*(tab_jeu_diagonale+6)==val_joueur)&&(*(tab_jeu_diagonale+4)==val_joueur)&&(*(tab_jeu_diagonale+2)==val_joueur))
- {
- return val_joueur;
- }
- return 0;
- }
- int verif_win(int *tab_jeu,int num_joueur)
- {
- int win_recup=0;
- win_recup=verif_win_ligne(tab_jeu,num_joueur,0);
- if(win_recup==0)
- {
- win_recup=verif_win_colonne(tab_jeu,num_joueur,0);
- }
- if(win_recup==0)
- {
- win_recup=verif_win_diagonale(tab_jeu,num_joueur,0);
- }
- return win_recup;
- }
- int ai_calcul_diagonales(int *tab_jeu,int num_ai_jouant,int num_adversaire,int ordre_passage)
- {
- int num_ligne=0,num_colonne=0,win_diago_poss=0,case_remplit=0,joueur_regard,incre_diago1=0,incre_diago2=0,num_colonne2,num_ligne2;
- int tableau_convertion[9][3]={{0,7,0},
- {0,8,1},
- {0,9,2},
- {1,4,0},
- {1,5,1},
- {1,6,2},
- {2,1,0},
- {2,2,1},
- {2,3,2}};
- int tableau_temporaire[3]={10,10,10};
- if(ordre_passage==1)
- {
- joueur_regard=num_ai_jouant;
- }
- if(ordre_passage==2)
- {
- joueur_regard=num_adversaire;
- }
- while(incre_diago1<2)
- {
- while(((num_ligne<3)&&(incre_diago1==0))||((num_ligne+1>0)&&(incre_diago1==1)))
- {
- if(*(tab_jeu+num_ligne*3+num_colonne)==joueur_regard)
- {
- win_diago_poss++;
- }
- if(*(tab_jeu+num_ligne*3+num_colonne)!=0)
- {
- case_remplit++;
- }
- if(*(tab_jeu+num_ligne*3+num_colonne)==0)
- {
- num_ligne2=num_ligne;
- num_colonne2=num_colonne;
- }
- if(incre_diago1==1)
- {
- num_ligne--;
- num_colonne++;
- }
- if(incre_diago1==0)
- {
- num_ligne++;
- num_colonne++;
- }
- if(case_remplit==3)
- {
- win_diago_poss=0;
- }
- }
- if(win_diago_poss==2)
- {
- incre_diago1=2;
- }
- if(win_diago_poss!=2)
- {
- win_diago_poss=0;
- }
- case_remplit=0;
- incre_diago1++;
- if(incre_diago1==0)
- {
- num_ligne=0;
- num_colonne=0;
- }
- if(incre_diago1==1)
- {
- num_ligne=2;
- num_colonne=0;
- }
- }
- incre_diago1=0;
- if(win_diago_poss==2)
- {
- while(incre_diago1<9)
- {
- while(incre_diago2<3)
- {
- tableau_temporaire[incre_diago2]=tableau_convertion[incre_diago1][incre_diago2];
- if((tableau_temporaire[0]==num_ligne2)&&(tableau_temporaire[2]==num_colonne2))
- {
- return tableau_temporaire[1];
- }
- incre_diago2++;
- }
- for(incre_diago2=0;incre_diago2<3;incre_diago2++)
- {
- tableau_temporaire[incre_diago2]=10;
- }
- incre_diago2=0;
- incre_diago1++;
- }
- }
- return 0;
- }
- int best_case_a_jouer(int *tab_jeu,int num_ai_jouant,int ligne_ou_colonne)
- {
- int num_ligne=0,num_colonne=0,win_poss=0,presque_victoire=0,compteur_case_vide=0,incre_sortir=0;
- /*
- alea_best=rand()%2;
-
- while(incre_sortir<1)
- {
- if(alea_best==0)
- {*/
- if(ligne_ou_colonne==1)
- {
- while(num_ligne<3)
- {
- win_poss=0;
- while(num_colonne<3)
- {
- if(*(tab_jeu+num_ligne*3+num_colonne)==num_ai_jouant)
- {
- win_poss++;
- }
- if(*(tab_jeu+num_ligne*3+num_colonne)==0)
- {
- compteur_case_vide++;
- }
- if((win_poss==1)&&(compteur_case_vide==2))
- {
- return num_ligne+1;
- }
- num_colonne++;
- }
- num_colonne=0;
- num_ligne++;
- compteur_case_vide=0;
- }
- }
- //}
- // if((alea_best=0)||(alea_best==1))
- // {
- if(ligne_ou_colonne==2)
- {
- while(num_colonne<3)
- {
- win_poss=0;
- while(num_ligne<3)
- {
- if(*(tab_jeu+num_ligne*3+num_colonne)==num_ai_jouant)
- {
- win_poss++;
- }
- if(*(tab_jeu+num_ligne*3+num_colonne)==0)
- {
- compteur_case_vide++;
- }
- if((win_poss==1)&&(compteur_case_vide==2))
- {
- return num_colonne+1;
- }
- num_ligne++;
- }
- num_ligne=0;
- num_colonne++;
- compteur_case_vide=0;
- }
- }
- //}
- // incre_sortir++;
- // alea_best=0;
- // }
- return 0;
- }
- int Aryo_ai_appel_morpion(int nombre_ai,int *tab_jeu,int *poss_restante,int num_ai_jouant,int num_adversaire,int tour_de_jeu)
- {
- int case_a_joue=0,case_jouable=0,ligne_a_jouer_pour_victoire,ordre_increm=0,best_chose_a_jouer=0,case_a_joue2;
- int case_joue=0,conversion_clavier[3][3]={{7,8,9},{4,5,6},{1,2,3}},*save_poss_restante,compteur_poss_restante=1,colonne_a_jouer_pour_victoire=1;
- if(tour_de_jeu==0)
- {
- case_jouable=rand()%2+1;
- if(case_jouable==1)
- {
- return 5;
- }
- }
- if(tour_de_jeu==1)
- {
- if(*(poss_restante+4)==0)
- {
- case_jouable=(rand()%4)+1;
- switch (case_jouable)
- {
- case 1:
- return 1;
- break;
- case 2:
- return 3;
- break;
- case 3:
- return 7;
- break;
- case 4:
- return 9;
- break;
- }
- }
- }
- if((tour_de_jeu==1)||(tour_de_jeu==2))
- {
- if((*poss_restante==0)||(*(poss_restante+2)==0)||(*(poss_restante+6)==0)||(*(poss_restante+8)==0))
- {
- if(*(poss_restante+4)==5)
- {
- return 5;
- }
- }
- if(tour_de_jeu==1)
- {
- if(*(poss_restante+4)==5)
- {
- return 5;
- }
- }
- }
- save_poss_restante=poss_restante;
- ligne_a_jouer_pour_victoire=verif_win_ligne(tab_jeu,num_ai_jouant,1);
- if(ligne_a_jouer_pour_victoire==0)
- {
- colonne_a_jouer_pour_victoire=verif_win_colonne(tab_jeu,num_ai_jouant,1);
- }
- if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
- {
- case_a_joue2=ai_calcul_diagonales(tab_jeu,num_ai_jouant,num_adversaire,1);
- if(case_a_joue2!=0)
- {
- return case_a_joue2;
- }
- }
- if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
- {
- case_a_joue2=ai_calcul_diagonales(tab_jeu,num_ai_jouant,num_adversaire,2);
- if(case_a_joue2!=0)
- {
- return case_a_joue2;
- }
- }
- if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
- {
- ligne_a_jouer_pour_victoire=verif_win_ligne(tab_jeu,num_adversaire,1);
- if(ligne_a_jouer_pour_victoire==0)
- {
- colonne_a_jouer_pour_victoire=verif_win_colonne(tab_jeu,num_adversaire,1);
- }
- }
- if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
- {
- ligne_a_jouer_pour_victoire=best_case_a_jouer(tab_jeu,num_ai_jouant,1);
- //best_chose_a_jouer++;
- if(ligne_a_jouer_pour_victoire==0)
- {
- colonne_a_jouer_pour_victoire=best_case_a_jouer(tab_jeu,num_ai_jouant,2);
- //best_chose_a_jouer++;
- }
- }
- if((ligne_a_jouer_pour_victoire!=0)||(colonne_a_jouer_pour_victoire!=0))
- {
- if(ligne_a_jouer_pour_victoire!=0)
- {
- colonne_a_jouer_pour_victoire=1;
- ordre_increm=0;
- /*
- if(best_chose_a_jouer==1)
- {
- colonne_a_jouer_pour_victoire=(rand()%3)+1;
- }
- */
- }
- else
- {
- if(colonne_a_jouer_pour_victoire!=0)
- {
- ligne_a_jouer_pour_victoire=1;
- ordre_increm=1;
- }
- /*
- if(best_chose_a_jouer==1)
- {
- ligne_a_jouer_pour_victoire=(rand()%3)+1;
- }
- */
- }
- }
- while((ligne_a_jouer_pour_victoire<4)&&(colonne_a_jouer_pour_victoire<4))
- {
- while((poss_restante<(save_poss_restante+9))&&((ligne_a_jouer_pour_victoire<4)&&(colonne_a_jouer_pour_victoire<4)))
- {
- if(conversion_clavier[ligne_a_jouer_pour_victoire-1][colonne_a_jouer_pour_victoire-1]==*poss_restante)
- {
- return *poss_restante;
- }
- poss_restante++;
- }
- if(ordre_increm==0)
- {
- colonne_a_jouer_pour_victoire++;
- }
- if(ordre_increm==1)
- {
- ligne_a_jouer_pour_victoire++;
- }
- poss_restante=save_poss_restante;
- }
- while(case_joue==0)
- {
- case_jouable=(rand()%9)+1;
- while(poss_restante<(save_poss_restante+9))
- {
- if(*poss_restante==case_jouable)
- {
- return case_jouable;
- }
- poss_restante++;
- }
- poss_restante=save_poss_restante;
- }
- }
- int main()
- {
- int case_joue=0,win_joueur,num_joueur,num_adversaire,choix,increm_tab_restan=0,tentatives=0,egalite=0;
- SDL_Surface *ecran,*ecran_hasard,*image;
- SDL_Rect position_ecran,position_ecran_hasard,position_image;
- SDL_Event event;
- unsigned short continuer=1,incremen_initialisation,increment_initialisation2,tentatives_voulues=0,nb_tour_de_jeu,alea_tirage;
- srand(time(NULL));
- ecran= SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
- position_ecran.x=0;
- position_ecran.y=0;
- position_ecran_hasard.x=0;
- position_ecran_hasard.y=0;
- do
- {
- choix=menu_morpion(ecran);
- if(choix!=0)
- {
- do
- {
- int poss_restante[9]={1,2,3,4,5,6,7,8,9};
- win_joueur=0;nb_tour_de_jeu=0;
- if(choix==1)
- {
- alea_tirage=rand()%2;
- if(alea_tirage==0)
- {
- ecran_hasard=SDL_LoadBMP("humaindebut.bmp" );
- SDL_BlitSurface(ecran_hasard,NULL, ecran, &position_ecran_hasard);
- }
- if(alea_tirage==1)
- {
- ecran_hasard=SDL_LoadBMP("IAdebut.bmp" );
- SDL_BlitSurface(ecran_hasard,NULL, ecran, &position_ecran_hasard);
- }
- SDL_Flip(ecran);
- while(continuer==1)
- {
- SDL_WaitEvent (&event);
- switch(event.type)
- {
- case SDL_QUIT:
- continuer = 0;
- break;
- case SDL_MOUSEBUTTONUP:
- continuer=0;
- break;
- }
- }
- }
- else
- {
- alea_tirage=0;
- }
- continuer=1;
- moteur_2D(0,0,2,0); // affichage initial;
- while((win_joueur==0)&&(nb_tour_de_jeu<9)&&(case_joue!=10))
- {
- num_joueur=1;case_joue=1;
- while((num_joueur!=3)&&(win_joueur==0)&&(case_joue!=10))
- {
- if(num_joueur==1)
- {
- num_adversaire=2;
- }
- else
- {
- num_adversaire=1;
- }
- moteur_2D(0,0,1,0);
- if(((choix!=3)&&(((num_joueur==1)&&(alea_tirage==0))||((num_joueur==2)&&(alea_tirage==1))))||((num_joueur==2)&&(choix==2)))
- {
- case_joue=moteur_2D(num_joueur,0,1,0);
- }
- else
- {
- case_joue=Aryo_ai_appel_morpion(choix,&plateau_de_jeu[0][0],&poss_restante[0],num_joueur,num_adversaire,nb_tour_de_jeu);
- moteur_2D(num_joueur,1,1,case_joue);
- }
- if(case_joue!=10)
- {
- for(increm_tab_restan=0;increm_tab_restan<10;increm_tab_restan++)
- {
- if(poss_restante[increm_tab_restan]==case_joue)
- {
- poss_restante[increm_tab_restan]=0;
- }
- }
- nb_tour_de_jeu++;
- win_joueur=verif_win(&plateau_de_jeu[0][0],num_joueur);
- num_joueur++;//Fin du tour de jeu
- if(nb_tour_de_jeu==9)
- {
- if(win_joueur==0)
- {
- egalite++;
- }
- break;
- }
- }
- }
- }
- if(case_joue!=10)
- {
- if(win_joueur!=0)
- {
- if(win_joueur==1)
- {
- image = SDL_LoadBMP("joueur_1_gagne.bmp" );
- }
- if(win_joueur==2)
- {
- image = SDL_LoadBMP("joueur_2_gagne.bmp" );
- }
- }
- else
- {
- image = SDL_LoadBMP("egalite.bmp" );
- }
- position_image.x=0;
- position_image.y=0;
- SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 255, 255));
- SDL_BlitSurface(image, NULL, ecran, &position_image);
- SDL_Flip(ecran);moteur_2D(0,0,1,0);
- while(continuer==1)
- {
- SDL_WaitEvent (&event);
- switch(event.type)
- {
- case SDL_QUIT:
- continuer = 5;
- break;
- case SDL_MOUSEBUTTONUP:
- continuer=0;
- break;
- }
- }
- for(incremen_initialisation=0;incremen_initialisation<4;incremen_initialisation++)
- {
- for(increment_initialisation2=0;increment_initialisation2<4;increment_initialisation2++)
- {
- plateau_de_jeu[incremen_initialisation][increment_initialisation2]=0;
- }
- }
- tentatives++;
- }
- }while((continuer!=5)&&((continuer==2)||((choix==3)&&(tentatives!=tentatives_voulues)&&(case_joue!=10))));
- //printf(" En %hu tentatives, il y a eut %hu egalites.",tentatives,egalite);
- //printf("Recommencer ?" );
- //scanf("%hu",&continuer);
- moteur_2D(0,0,0,0);
- }
- }while((continuer==1)&&(case_joue!=10));
- SDL_Quit();
- return 0;
- }
|
|