Traduction programme

Traduction programme - C - Programmation

Marsh Posté le 10-01-2011 à 19:34:21    

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 :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include<time.h>
  4. #include <SDL/SDL.h>
  5. int plateau_de_jeu[3][3]={{0,0,0},
  6. {0,0,0},
  7. {0,0,0}};
  8. int menu_morpion(SDL_Surface *ecran_de_menu)
  9. {
  10. int choix=0,choix_x=0,choix_y=0,continuer=1;
  11. SDL_Surface *image_menu_morpion=NULL,*image_choix1=NULL,*image_choix2=NULL,*image_choix3=NULL,*image_choix4=NULL;
  12. SDL_Rect position_ecran_de_menu,position_choix1,position_choix2,position_choix3,position_choix4;
  13. SDL_Event event;
  14. SDL_Init(SDL_INIT_VIDEO);
  15. SDL_WM_SetCaption("Jeu du Morpion", NULL);
  16. position_ecran_de_menu.x=0;
  17. position_ecran_de_menu.y=0;
  18. position_choix1.x=320;position_choix1.y=250;
  19. position_choix2.x=320;position_choix2.y=350;
  20. position_choix3.x=320;position_choix3.y=450;
  21. //position_choix4.x=320;position_choix4.y=550;// choix4 = tutorial à mettre
  22. image_menu_morpion = SDL_LoadBMP("Menu_morpion.bmp" );
  23. SDL_BlitSurface(image_menu_morpion, NULL, ecran_de_menu, &position_ecran_de_menu);
  24. image_choix1= SDL_LoadBMP("choix 1.bmp" );
  25. SDL_BlitSurface(image_choix1, NULL, ecran_de_menu, &position_choix1);
  26. image_choix2= SDL_LoadBMP("choix 2.bmp" );
  27. SDL_BlitSurface(image_choix2, NULL, ecran_de_menu, &position_choix2);
  28. image_choix3= SDL_LoadBMP("choix 3.bmp" );
  29. SDL_BlitSurface(image_choix3, NULL, ecran_de_menu, &position_choix3);
  30. /*
  31. image_choix3= SDL_LoadBMP("choix 4.bmp" );
  32. SDL_BlitSurface(image_choix4, NULL, ecran_de_menu, &position_choix4);
  33. */
  34. SDL_Flip(ecran_de_menu);
  35. while(continuer==1)
  36. {
  37.  while(choix==0)
  38.  {
  39.   SDL_WaitEvent(&event);
  40.   switch(event.type)
  41.   {
  42.   case SDL_QUIT:
  43.    continuer = 0;
  44.    choix=10;
  45.    break;
  46.   case SDL_MOUSEBUTTONUP:
  47.    choix_x = event.button.x;
  48.    choix_y = event.button.y;
  49.    break;
  50.   }
  51.   if((choix_x>360)&&(choix_x<680))
  52.   {
  53.    if((choix_y>230)&&(choix_y<330))
  54.    {
  55.     choix=1;
  56.    }
  57.    if((choix_y>330)&&(choix_y<430))
  58.    {
  59.     choix=2;
  60.    }
  61.    if((choix_y>430)&&(choix_y<520))
  62.    {
  63.     choix=3;
  64.    }
  65.    if((choix_y>520)&&(choix_y<580))
  66.    {
  67.     choix=4;
  68.    }
  69.   }
  70.  }
  71.  if(choix==10)
  72.  {
  73.   return 0;
  74.  }
  75.  return choix;
  76. }
  77. SDL_FreeSurface(image_menu_morpion);
  78. SDL_FreeSurface(ecran_de_menu);
  79. }
  80. int emplacement_dans_tableau(int case_joue, int passage)
  81. {
  82. switch (case_joue)
  83. {
  84. case 1:
  85.  if(passage==0) return 100;
  86.  return 375;
  87.  break;
  88. case 2:
  89.  if(passage==0) return 300;
  90.  return 375;
  91.  break;
  92. case 3:
  93.  if(passage==0) return 500;
  94.  return 375;
  95.  break;
  96. case 4:
  97.  if(passage==0) return 100;
  98.  return 225;
  99.  break;
  100. case 5:
  101.  if(passage==0) return 300;
  102.  return 225;
  103.  break;
  104. case 6:
  105.  if(passage==0) return 500;
  106.  return 225;
  107.  break;
  108. case 7:
  109.  if(passage==0) return 100;
  110.  return 75;
  111.  break;
  112. case 8:
  113.  if(passage==0) return 300;
  114.  return 75;
  115.  break;
  116. case 9:
  117.  if(passage==0) return 500;
  118.  return 75;
  119.  break;
  120. }
  121. }
  122. int traitement_case_joue( int case_joue_x, int case_joue_y)
  123. {
  124. if((case_joue_x>500)&&(case_joue_x<=600))
  125. {
  126.  if((case_joue_y>=75)&&(case_joue_y<225))
  127.  {
  128.   return 9;
  129.  }
  130.  if((case_joue_y>=225)&&(case_joue_y<400))
  131.  {
  132.   return 6;
  133.  }
  134.  if((case_joue_y>=400)&&(case_joue_y<=500))
  135.  {
  136.   return 3;
  137.  }
  138. }
  139. if((case_joue_x>300)&&(case_joue_x<=500))
  140. {
  141.  if((case_joue_y>=75)&&(case_joue_y<225))
  142.  {
  143.   return 8;
  144.  }
  145.  if((case_joue_y>=225)&&(case_joue_y<400))
  146.  {
  147.   return 5;
  148.  }
  149.  if((case_joue_y>=400)&&(case_joue_y<=500))
  150.  {
  151.   return 2;
  152.  }
  153. }
  154. if((case_joue_x>100)&&(case_joue_x<=300))
  155. {
  156.  if((case_joue_y>=75)&&(case_joue_y<225))
  157.  {
  158.   return 7;
  159.  }
  160.  if((case_joue_y>=225)&&(case_joue_y<400))
  161.  {
  162.   return 4;
  163.  }
  164.  if((case_joue_y>=400)&&(case_joue_y<=500))
  165.  {
  166.   return 1;
  167.  }
  168. }
  169. return 0;
  170. }
  171. int verification_case_libre(int tab_jeu_a_verif_en_cours, int num_joue_a_verif)
  172. {
  173. if(tab_jeu_a_verif_en_cours!=0)
  174. {
  175.  return 0;
  176. }
  177. else
  178. {
  179.  if((num_joue_a_verif>9)||(num_joue_a_verif<1))
  180.  {
  181.   return 2;
  182.  }
  183.  else
  184.  {
  185.   return 1;
  186.  }
  187. }
  188. }
  189. void modification_tableau_de_jeu(int case_joue,int num_joueur)
  190. {
  191. switch (case_joue)
  192. {
  193. case 1:
  194.  plateau_de_jeu[2][0]=num_joueur;
  195.  break;
  196. case 2:
  197.  plateau_de_jeu[2][1]=num_joueur;
  198.  break;
  199. case 3:
  200.  plateau_de_jeu[2][2]=num_joueur;
  201.  break;
  202. case 4:
  203.  plateau_de_jeu[1][0]=num_joueur;
  204.  break;
  205. case 5:
  206.  plateau_de_jeu[1][1]=num_joueur;
  207.  break;
  208. case 6:
  209.  plateau_de_jeu[1][2]=num_joueur;
  210.  break;
  211. case 7:
  212.  plateau_de_jeu[0][0]=num_joueur;
  213.  break;
  214. case 8:
  215.  plateau_de_jeu[0][1]=num_joueur;
  216.  break;
  217. case 9:
  218.  plateau_de_jeu[0][2]=num_joueur;
  219.  break;
  220. }
  221. }
  222. int verification_joueur( int case_joue)
  223. {
  224. switch (case_joue)
  225. {
  226. case 1:
  227.  if(plateau_de_jeu[2][0]!=0) return 0;
  228.  break;
  229. case 2:
  230.  if(plateau_de_jeu[2][1]!=0) return 0;
  231.  break;
  232. case 3:
  233.  if(plateau_de_jeu[2][2]!=0) return 0;
  234.  break;
  235. case 4:
  236.  if(plateau_de_jeu[1][0]!=0) return 0;
  237.  break;
  238. case 5:
  239.  if(plateau_de_jeu[1][1]!=0) return 0;
  240.  break;
  241. case 6:
  242.  if(plateau_de_jeu[1][2]!=0) return 0;
  243.  break;
  244. case 7:
  245.  if(plateau_de_jeu[0][0]!=0) return 0;
  246.  break;
  247. case 8:
  248.  if(plateau_de_jeu[0][1]!=0) return 0;
  249.  break;
  250. case 9:
  251.  if(plateau_de_jeu[0][2]!=0) return 0;
  252.  break;
  253. }
  254. return 1;
  255. }
  256. int moteur_2D(int numero_joueur,int IA,int fonctionnement,int case_joue)
  257. {
  258. int continuer=1,case_joue_x=0,case_joue_y=0,incr=0,incr1=0,case_jouee_ce_tour=0;
  259. SDL_Surface *ecran = NULL, *imageDeFond = NULL, *tableau_de_jeu_morpion= NULL, *forme_joueur=NULL;
  260. SDL_Rect positionFond,positiontableau_de_jeu_morpion, positionforme_joueur;
  261. SDL_Event event;
  262. if(fonctionnement!=0)
  263. {
  264.  positionFond.x = 0;
  265.  positionFond.y = 0;
  266.  positiontableau_de_jeu_morpion.x = 100;
  267.  positiontableau_de_jeu_morpion.y = 75;
  268.  SDL_Init(SDL_INIT_VIDEO);
  269.  ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
  270.  SDL_WM_SetCaption("Jeu du Morpion", NULL);
  271.  imageDeFond = SDL_LoadBMP("Arriere_plan_morpion.bmp" );
  272.  SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
  273.  tableau_de_jeu_morpion = SDL_LoadBMP("table_morpion.bmp" );
  274.  SDL_SetColorKey(tableau_de_jeu_morpion, SDL_SRCCOLORKEY, SDL_MapRGB(tableau_de_jeu_morpion->format, 0, 0, 128));
  275.  SDL_BlitSurface(tableau_de_jeu_morpion, NULL, ecran, &positiontableau_de_jeu_morpion);
  276.  if(fonctionnement==2)
  277.  {
  278.   SDL_Flip(ecran);
  279.  }
  280.  if(numero_joueur!=0)
  281.  {
  282.   while(continuer==1)
  283.   {
  284.    if(IA==0)
  285.    {
  286.     do
  287.     {
  288.      case_joue=0;
  289.      while(case_joue==0)
  290.      {
  291.       SDL_WaitEvent(&event);
  292.       switch(event.type)
  293.       {
  294.       case SDL_QUIT:
  295.        continuer = 0;
  296.        case_joue=10;
  297.        break;
  298.       case SDL_MOUSEBUTTONUP:
  299.        case_joue_x = event.button.x;
  300.        case_joue_y = event.button.y;
  301.        break;
  302.       }
  303.       if(case_joue!=10)
  304.       {
  305.        case_joue=traitement_case_joue(case_joue_x,case_joue_y);
  306.       }
  307.      }
  308.     }while((verification_joueur(case_joue)==0)&&(continuer==1));
  309.    }
  310.    if(case_joue==10) return 10;
  311.    case_jouee_ce_tour=case_joue;
  312.    if(case_joue!=0)
  313.    {
  314.     positionforme_joueur.x = emplacement_dans_tableau(case_joue, 0);
  315.     positionforme_joueur.y = emplacement_dans_tableau(case_joue, 1);
  316.     modification_tableau_de_jeu(case_joue,numero_joueur);
  317.     case_joue=13;
  318.     for(incr=0;incr<3;incr++) //affichage du plateau de jeu
  319.     {
  320.      case_joue=case_joue-6;
  321.      for(incr1=0;incr1<3;incr1++)
  322.      {
  323.       numero_joueur=plateau_de_jeu[incr][incr1];
  324.       positionforme_joueur.x = emplacement_dans_tableau(case_joue, 0);
  325.       positionforme_joueur.y = emplacement_dans_tableau(case_joue, 1);
  326.       if(numero_joueur==1)
  327.       {
  328.        forme_joueur= SDL_LoadBMP("croix.bmp" );
  329.       }
  330.       if(numero_joueur==2)
  331.       {
  332.        forme_joueur= SDL_LoadBMP("rond.bmp" );
  333.       }
  334.       if(numero_joueur!=0)
  335.       {
  336.        SDL_SetColorKey(forme_joueur, SDL_SRCCOLORKEY, SDL_MapRGB(forme_joueur->format, 0, 0, 128));
  337.        SDL_BlitSurface(forme_joueur, NULL, ecran, &positionforme_joueur);
  338.       }
  339.       case_joue++;
  340.      }
  341.     }
  342.     SDL_Flip(ecran);
  343.     return case_jouee_ce_tour;
  344.    }
  345.   }
  346.  }
  347. }
  348. if(fonctionnement==0)
  349. {
  350.  SDL_FreeSurface(imageDeFond);
  351. }
  352. return 0;
  353. }
  354. int verif_win_ligne(int *tab_jeu_ligne,int val_joueur,int ai_active)
  355. {
  356. int num_ligne=0,num_colonne=0,win_verif=0,presque_victoire=0,compteur_case_remplit=0;
  357. while(num_ligne<3)
  358. {
  359.  win_verif=0;
  360.  while(num_colonne<3)
  361.  {
  362.   if(*(tab_jeu_ligne+num_ligne*3+num_colonne)==val_joueur)
  363.   {
  364.    win_verif++;
  365.   }
  366.   if(*(tab_jeu_ligne+num_ligne*3+num_colonne)!=0) compteur_case_remplit++;
  367.   if(win_verif==2)
  368.   {
  369.    presque_victoire=1;
  370.   }
  371.   if((compteur_case_remplit==3)&&(win_verif!=3))
  372.   {
  373.    presque_victoire=0;
  374.   }
  375.   num_colonne++;
  376.  }
  377.  if((win_verif==3)&&(ai_active==0)) return val_joueur;
  378.  if((presque_victoire==1)&&(ai_active==1))
  379.  {
  380.   return num_ligne+1;
  381.  }
  382.  num_colonne=0;
  383.  num_ligne++;
  384.  compteur_case_remplit=0;
  385. }
  386. return 0;
  387. }
  388. int verif_win_colonne(int *tab_jeu_colonne,int val_joueur,int ai_active)
  389. {
  390. int num_ligne=0,num_colonne=0,win_verif=0,presque_victoire=0,compteur_case_remplit=0;
  391. while(num_colonne<3)
  392. {
  393.  win_verif=0;
  394.  while(num_ligne<3)
  395.  {
  396.   if(*(tab_jeu_colonne+num_ligne*3+num_colonne)==val_joueur)
  397.   {
  398.    win_verif++;
  399.   }
  400.   if(*(tab_jeu_colonne+num_ligne*3+num_colonne)!=0)
  401.   {
  402.    compteur_case_remplit++;
  403.   }
  404.   if(win_verif==2)
  405.   {
  406.    presque_victoire=1;
  407.   }
  408.   if(compteur_case_remplit==3)
  409.   {
  410.    presque_victoire=0;
  411.   }
  412.   num_ligne++;
  413.  }
  414.  if((win_verif==3)&&(ai_active==0)) return val_joueur;
  415.  if((presque_victoire==1)&&(ai_active==1))
  416.  {
  417.   return num_colonne+1;
  418.  }
  419.  num_ligne=0;
  420.  num_colonne++;
  421.  compteur_case_remplit=0;
  422. }
  423. return 0;
  424. }
  425. int verif_win_diagonale(int *tab_jeu_diagonale,int val_joueur,int ai_active)
  426. {
  427. if((*(tab_jeu_diagonale)==val_joueur)&&(*(tab_jeu_diagonale+4)==val_joueur)&&(*(tab_jeu_diagonale+8)==val_joueur))
  428. {
  429.  return val_joueur;
  430. }
  431. if((*(tab_jeu_diagonale+6)==val_joueur)&&(*(tab_jeu_diagonale+4)==val_joueur)&&(*(tab_jeu_diagonale+2)==val_joueur))
  432. {
  433.  return val_joueur;
  434. }
  435. return 0;
  436. }
  437. int verif_win(int *tab_jeu,int num_joueur)
  438. {
  439. int win_recup=0;
  440. win_recup=verif_win_ligne(tab_jeu,num_joueur,0);
  441. if(win_recup==0)
  442. {
  443.  win_recup=verif_win_colonne(tab_jeu,num_joueur,0);
  444. }
  445. if(win_recup==0)
  446. {
  447.  win_recup=verif_win_diagonale(tab_jeu,num_joueur,0);
  448. }
  449. return win_recup;
  450. }
  451. int ai_calcul_diagonales(int *tab_jeu,int num_ai_jouant,int num_adversaire,int ordre_passage)
  452. {
  453. 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;
  454. int tableau_convertion[9][3]={{0,7,0},
  455. {0,8,1},
  456. {0,9,2},
  457. {1,4,0},
  458. {1,5,1},
  459. {1,6,2},
  460. {2,1,0},
  461. {2,2,1},
  462. {2,3,2}};
  463. int tableau_temporaire[3]={10,10,10};
  464. if(ordre_passage==1)
  465. {
  466.  joueur_regard=num_ai_jouant;
  467. }
  468. if(ordre_passage==2)
  469. {
  470.  joueur_regard=num_adversaire;
  471. }
  472. while(incre_diago1<2)
  473. {
  474.  while(((num_ligne<3)&&(incre_diago1==0))||((num_ligne+1>0)&&(incre_diago1==1)))
  475.  {
  476.   if(*(tab_jeu+num_ligne*3+num_colonne)==joueur_regard)
  477.   {
  478.    win_diago_poss++;
  479.   }
  480.   if(*(tab_jeu+num_ligne*3+num_colonne)!=0)
  481.   {
  482.    case_remplit++;
  483.   }
  484.   if(*(tab_jeu+num_ligne*3+num_colonne)==0)
  485.   {
  486.    num_ligne2=num_ligne;
  487.    num_colonne2=num_colonne;
  488.   }
  489.   if(incre_diago1==1)
  490.   {
  491.    num_ligne--;
  492.    num_colonne++;
  493.   }
  494.   if(incre_diago1==0)
  495.   {
  496.    num_ligne++;
  497.    num_colonne++;
  498.   }
  499.   if(case_remplit==3)
  500.   {
  501.    win_diago_poss=0;
  502.   }
  503.  }
  504.  if(win_diago_poss==2)
  505.  {
  506.   incre_diago1=2;
  507.  }
  508.  if(win_diago_poss!=2)
  509.  {
  510.   win_diago_poss=0;
  511.  }
  512.  case_remplit=0;
  513.  incre_diago1++;
  514.  if(incre_diago1==0)
  515.  {
  516.   num_ligne=0;
  517.   num_colonne=0;
  518.  }
  519.  if(incre_diago1==1)
  520.  {
  521.   num_ligne=2;
  522.   num_colonne=0;
  523.  }
  524. }
  525. incre_diago1=0;
  526. if(win_diago_poss==2)
  527. {
  528.  while(incre_diago1<9)
  529.  {
  530.   while(incre_diago2<3)
  531.   {
  532.    tableau_temporaire[incre_diago2]=tableau_convertion[incre_diago1][incre_diago2];
  533.    if((tableau_temporaire[0]==num_ligne2)&&(tableau_temporaire[2]==num_colonne2))
  534.    {
  535.     return tableau_temporaire[1];
  536.    }
  537.    incre_diago2++;
  538.   }
  539.   for(incre_diago2=0;incre_diago2<3;incre_diago2++)
  540.   {
  541.    tableau_temporaire[incre_diago2]=10;
  542.   }
  543.   incre_diago2=0;
  544.   incre_diago1++;
  545.  }
  546. }
  547. return 0;
  548. }
  549. int best_case_a_jouer(int *tab_jeu,int num_ai_jouant,int ligne_ou_colonne)
  550. {
  551. int num_ligne=0,num_colonne=0,win_poss=0,presque_victoire=0,compteur_case_vide=0,incre_sortir=0;
  552. /*
  553. alea_best=rand()%2;
  554. while(incre_sortir<1)
  555. {
  556. if(alea_best==0)
  557. {*/
  558. if(ligne_ou_colonne==1)
  559. {
  560.  while(num_ligne<3)
  561.  {
  562.   win_poss=0;
  563.   while(num_colonne<3)
  564.   {
  565.    if(*(tab_jeu+num_ligne*3+num_colonne)==num_ai_jouant)
  566.    {
  567.     win_poss++;
  568.    }
  569.    if(*(tab_jeu+num_ligne*3+num_colonne)==0)
  570.    {
  571.     compteur_case_vide++;
  572.    }
  573.    if((win_poss==1)&&(compteur_case_vide==2))
  574.    {
  575.     return num_ligne+1;
  576.    }
  577.    num_colonne++;
  578.   }
  579.   num_colonne=0;
  580.   num_ligne++;
  581.   compteur_case_vide=0;
  582.  }
  583. }
  584. //}
  585. // if((alea_best=0)||(alea_best==1))
  586. // {
  587. if(ligne_ou_colonne==2)
  588. {
  589.  while(num_colonne<3)
  590.  {
  591.   win_poss=0;
  592.   while(num_ligne<3)
  593.   {
  594.    if(*(tab_jeu+num_ligne*3+num_colonne)==num_ai_jouant)
  595.    {
  596.     win_poss++;
  597.    }
  598.    if(*(tab_jeu+num_ligne*3+num_colonne)==0)
  599.    {
  600.     compteur_case_vide++;
  601.    }
  602.    if((win_poss==1)&&(compteur_case_vide==2))
  603.    {
  604.     return num_colonne+1;
  605.    }
  606.    num_ligne++;
  607.   }
  608.   num_ligne=0;
  609.   num_colonne++;
  610.   compteur_case_vide=0;
  611.  }
  612. }
  613. //}
  614. // incre_sortir++;
  615. // alea_best=0;
  616. // }
  617. return 0;
  618. }
  619. 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)
  620. {
  621. int case_a_joue=0,case_jouable=0,ligne_a_jouer_pour_victoire,ordre_increm=0,best_chose_a_jouer=0,case_a_joue2;
  622. 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;
  623. if(tour_de_jeu==0)
  624. {
  625.  case_jouable=rand()%2+1;
  626.  if(case_jouable==1)
  627.  {
  628.   return 5;
  629.  }
  630. }
  631. if(tour_de_jeu==1)
  632. {
  633.  if(*(poss_restante+4)==0)
  634.  {
  635.   case_jouable=(rand()%4)+1;
  636.   switch (case_jouable)
  637.   {
  638.   case 1:
  639.    return 1;
  640.    break;
  641.   case 2:
  642.    return 3;
  643.    break;
  644.   case 3:
  645.    return 7;
  646.    break;
  647.   case 4:
  648.    return 9;
  649.    break;
  650.   }
  651.  }
  652. }
  653. if((tour_de_jeu==1)||(tour_de_jeu==2))
  654. {
  655.  if((*poss_restante==0)||(*(poss_restante+2)==0)||(*(poss_restante+6)==0)||(*(poss_restante+8)==0))
  656.  {
  657.   if(*(poss_restante+4)==5)
  658.   {
  659.    return 5;
  660.   }
  661.  }
  662.  if(tour_de_jeu==1)
  663.  {
  664.   if(*(poss_restante+4)==5)
  665.   {
  666.    return 5;
  667.   }
  668.  }
  669. }
  670. save_poss_restante=poss_restante;
  671. ligne_a_jouer_pour_victoire=verif_win_ligne(tab_jeu,num_ai_jouant,1);
  672. if(ligne_a_jouer_pour_victoire==0)
  673. {
  674.  colonne_a_jouer_pour_victoire=verif_win_colonne(tab_jeu,num_ai_jouant,1);
  675. }
  676. if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
  677. {
  678.  case_a_joue2=ai_calcul_diagonales(tab_jeu,num_ai_jouant,num_adversaire,1);
  679.  if(case_a_joue2!=0)
  680.  {
  681.   return case_a_joue2;
  682.  }
  683. }
  684. if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
  685. {
  686.  case_a_joue2=ai_calcul_diagonales(tab_jeu,num_ai_jouant,num_adversaire,2);
  687.  if(case_a_joue2!=0)
  688.  {
  689.   return case_a_joue2;
  690.  }
  691. }
  692. if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
  693. {
  694.  ligne_a_jouer_pour_victoire=verif_win_ligne(tab_jeu,num_adversaire,1);
  695.  if(ligne_a_jouer_pour_victoire==0)
  696.  {
  697.   colonne_a_jouer_pour_victoire=verif_win_colonne(tab_jeu,num_adversaire,1);
  698.  }
  699. }
  700. if((ligne_a_jouer_pour_victoire==0)&&(colonne_a_jouer_pour_victoire==0))
  701. {
  702.  ligne_a_jouer_pour_victoire=best_case_a_jouer(tab_jeu,num_ai_jouant,1);
  703.  //best_chose_a_jouer++;
  704.  if(ligne_a_jouer_pour_victoire==0)
  705.  {
  706.   colonne_a_jouer_pour_victoire=best_case_a_jouer(tab_jeu,num_ai_jouant,2);
  707.   //best_chose_a_jouer++;
  708.  }
  709. }
  710. if((ligne_a_jouer_pour_victoire!=0)||(colonne_a_jouer_pour_victoire!=0))
  711. {
  712.  if(ligne_a_jouer_pour_victoire!=0)
  713.  {
  714.   colonne_a_jouer_pour_victoire=1;
  715.   ordre_increm=0;
  716.   /*
  717.   if(best_chose_a_jouer==1)
  718.   {
  719.   colonne_a_jouer_pour_victoire=(rand()%3)+1;
  720.   }
  721.   */
  722.  }
  723.  else
  724.  {
  725.   if(colonne_a_jouer_pour_victoire!=0)
  726.   {
  727.    ligne_a_jouer_pour_victoire=1;
  728.    ordre_increm=1;
  729.   }
  730.   /*
  731.   if(best_chose_a_jouer==1)
  732.   {
  733.   ligne_a_jouer_pour_victoire=(rand()%3)+1;
  734.   }
  735.   */
  736.  }
  737. }
  738. while((ligne_a_jouer_pour_victoire<4)&&(colonne_a_jouer_pour_victoire<4))
  739. {
  740.  while((poss_restante<(save_poss_restante+9))&&((ligne_a_jouer_pour_victoire<4)&&(colonne_a_jouer_pour_victoire<4)))
  741.  {
  742.   if(conversion_clavier[ligne_a_jouer_pour_victoire-1][colonne_a_jouer_pour_victoire-1]==*poss_restante)
  743.   {
  744.    return *poss_restante;
  745.   }
  746.   poss_restante++;
  747.  }
  748.  if(ordre_increm==0)
  749.  {
  750.   colonne_a_jouer_pour_victoire++;
  751.  }
  752.  if(ordre_increm==1)
  753.  {
  754.   ligne_a_jouer_pour_victoire++;
  755.  }
  756.  poss_restante=save_poss_restante;
  757. }
  758. while(case_joue==0)
  759. {
  760.  case_jouable=(rand()%9)+1;
  761.  while(poss_restante<(save_poss_restante+9))
  762.  {
  763.   if(*poss_restante==case_jouable)
  764.   {
  765.    return case_jouable;
  766.   }
  767.   poss_restante++;
  768.  }
  769.  poss_restante=save_poss_restante;
  770. }
  771. }
  772. int main()
  773. {
  774. int case_joue=0,win_joueur,num_joueur,num_adversaire,choix,increm_tab_restan=0,tentatives=0,egalite=0;
  775. SDL_Surface *ecran,*ecran_hasard,*image;
  776. SDL_Rect position_ecran,position_ecran_hasard,position_image;
  777. SDL_Event event;
  778. unsigned short continuer=1,incremen_initialisation,increment_initialisation2,tentatives_voulues=0,nb_tour_de_jeu,alea_tirage;
  779. srand(time(NULL));
  780. ecran= SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
  781. position_ecran.x=0;
  782. position_ecran.y=0;
  783. position_ecran_hasard.x=0;
  784. position_ecran_hasard.y=0;
  785. do
  786. {
  787.  choix=menu_morpion(ecran);
  788.  if(choix!=0)
  789.  {
  790.   do
  791.   {
  792.    int poss_restante[9]={1,2,3,4,5,6,7,8,9};
  793.    win_joueur=0;nb_tour_de_jeu=0;
  794.    if(choix==1)
  795.    {
  796.     alea_tirage=rand()%2;
  797.     if(alea_tirage==0)
  798.     {
  799.      ecran_hasard=SDL_LoadBMP("humaindebut.bmp" );
  800.      SDL_BlitSurface(ecran_hasard,NULL, ecran, &position_ecran_hasard);
  801.     }
  802.     if(alea_tirage==1)
  803.     {
  804.      ecran_hasard=SDL_LoadBMP("IAdebut.bmp" );
  805.      SDL_BlitSurface(ecran_hasard,NULL, ecran, &position_ecran_hasard);
  806.     }
  807.     SDL_Flip(ecran);
  808.     while(continuer==1)
  809.     {
  810.      SDL_WaitEvent (&event);
  811.      switch(event.type)
  812.      {
  813.      case SDL_QUIT:
  814.       continuer = 0;
  815.       break;
  816.      case SDL_MOUSEBUTTONUP:
  817.       continuer=0;
  818.       break;
  819.      }
  820.     }
  821.    }
  822.    else
  823.    {
  824.     alea_tirage=0;
  825.    }
  826.    continuer=1;
  827.    moteur_2D(0,0,2,0); // affichage initial;  
  828.    while((win_joueur==0)&&(nb_tour_de_jeu<9)&&(case_joue!=10))
  829.    {
  830.     num_joueur=1;case_joue=1;
  831.     while((num_joueur!=3)&&(win_joueur==0)&&(case_joue!=10))
  832.     {
  833.      if(num_joueur==1)
  834.      {
  835.       num_adversaire=2;
  836.      }
  837.      else
  838.      {
  839.       num_adversaire=1;
  840.      }
  841.      moteur_2D(0,0,1,0);
  842.      if(((choix!=3)&&(((num_joueur==1)&&(alea_tirage==0))||((num_joueur==2)&&(alea_tirage==1))))||((num_joueur==2)&&(choix==2)))
  843.      {
  844.       case_joue=moteur_2D(num_joueur,0,1,0);
  845.      }
  846.      else
  847.      {
  848.       case_joue=Aryo_ai_appel_morpion(choix,&plateau_de_jeu[0][0],&poss_restante[0],num_joueur,num_adversaire,nb_tour_de_jeu);
  849.       moteur_2D(num_joueur,1,1,case_joue);
  850.      }
  851.      if(case_joue!=10)
  852.      {
  853.       for(increm_tab_restan=0;increm_tab_restan<10;increm_tab_restan++)
  854.       {
  855.        if(poss_restante[increm_tab_restan]==case_joue)
  856.        {
  857.         poss_restante[increm_tab_restan]=0;
  858.        }
  859.       }
  860.       nb_tour_de_jeu++;
  861.       win_joueur=verif_win(&plateau_de_jeu[0][0],num_joueur);
  862.       num_joueur++;//Fin du tour de jeu
  863.       if(nb_tour_de_jeu==9)
  864.       {
  865.        if(win_joueur==0)
  866.        {
  867.         egalite++;
  868.        }
  869.        break;
  870.       }
  871.      }
  872.     }
  873.    }
  874.    if(case_joue!=10)
  875.    {
  876.     if(win_joueur!=0)
  877.     {
  878.      if(win_joueur==1)
  879.      {
  880.       image = SDL_LoadBMP("joueur_1_gagne.bmp" );
  881.      }
  882.      if(win_joueur==2)
  883.      {
  884.       image = SDL_LoadBMP("joueur_2_gagne.bmp" );
  885.      }
  886.     }
  887.     else
  888.     {
  889.      image = SDL_LoadBMP("egalite.bmp" );
  890.     }
  891.     position_image.x=0;
  892.     position_image.y=0;
  893.     SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 255, 255));
  894.     SDL_BlitSurface(image, NULL, ecran, &position_image);
  895.     SDL_Flip(ecran);moteur_2D(0,0,1,0);
  896.     while(continuer==1)
  897.     {
  898.      SDL_WaitEvent (&event);
  899.       switch(event.type)
  900.       {
  901.       case SDL_QUIT:
  902.        continuer = 5;
  903.        break;
  904.       case SDL_MOUSEBUTTONUP:
  905.        continuer=0;
  906.        break;
  907.       }
  908.     }
  909.      for(incremen_initialisation=0;incremen_initialisation<4;incremen_initialisation++)
  910.      {
  911.       for(increment_initialisation2=0;increment_initialisation2<4;increment_initialisation2++)
  912.       {
  913.        plateau_de_jeu[incremen_initialisation][increment_initialisation2]=0;
  914.       }
  915.      }
  916.      tentatives++;
  917.     }
  918.    }while((continuer!=5)&&((continuer==2)||((choix==3)&&(tentatives!=tentatives_voulues)&&(case_joue!=10))));
  919.    //printf(" En %hu tentatives, il y a eut %hu egalites.",tentatives,egalite);
  920.    //printf("Recommencer ?" );
  921.    //scanf("%hu",&continuer);
  922.    moteur_2D(0,0,0,0);
  923.   }
  924.  }while((continuer==1)&&(case_joue!=10));
  925.  SDL_Quit();
  926.  return 0;
  927. }


 

Reply

Marsh Posté le 10-01-2011 à 19:34:21   

Reply

Marsh Posté le 10-01-2011 à 19:43:27    

T'as quoi comme notions exactement en informatique ? Parce que personne ici ne va t'expliquer ce que fait un code comme ça si tu n'y mets pas un peu du tiens...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-01-2011 à 19:47:38    

Je connais le langage C mais j'ai beaucoup de mal avec le langage sous SDL.

Reply

Marsh Posté le 10-01-2011 à 19:54:21    

Faudrait des questions précises. Et l'auteur de ce code mérite la mort.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 10-01-2011 à 20:14:24    

Je n'ai pas de question très précise juste de m'expliquer le déroulement du programme.
Commençons par le début le tableau de jeu est initialisé cases vides. Ensuite je ne comprend pas les instructions en SDL =(

Reply

Marsh Posté le 10-01-2011 à 20:44:16    


 
eh bien, SDL a un site web, http://www.libsdl.org/, et une documentation de son API -http://www.libsdl.org/docs/html/. Bonne lecture


Message édité par mr simon le 10-01-2011 à 20:44:46
Reply

Marsh Posté le 10-01-2011 à 22:16:40    

WiiDS a écrit :

Et l'auteur de ce code mérite la mort.


 
Il a juste pris le terme "langage procédural" très, très à la lettre :lol:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 10-01-2011 à 22:53:28    

Tu as là un code. Immonde au demeurant. Et qui n'est pas le tien.
 
Tu souhaites qu'on te l'explique "dans les grandes lignes".
 
Hypothèse probable : tu as un devoir à remettre et tu as récupéré ce code quelque part, mais tu ne comprends pas tout, ce qui est problématique lorsque l'heure viendra d'expliquer ce que fait le code, ou pour le modifier afin de coller aux besoins du devoir.
 
J'ai bon ?

Reply

Marsh Posté le 19-01-2011 à 17:07:25    

Elmoricq a écrit :

Tu as là un code. Immonde au demeurant. Et qui n'est pas le tien.


 
T'as un sacré sens de la déduction toi, si j'demandes qu'on m'explique un programme c'est logique qu'il ne soit pas de moi...
 

Elmoricq a écrit :

Tu souhaites qu'on te l'explique "dans les grandes lignes".
 
Hypothèse probable : tu as un devoir à remettre et tu as récupéré ce code quelque part, mais tu ne comprends pas tout, ce qui est problématique lorsque l'heure viendra d'expliquer ce que fait le code, ou pour le modifier afin de coller aux besoins du devoir.
 
J'ai bon ?


 
Non mais alors pas du tout sinon ta réponse m'a bien aidé (ironie ;)), j'ss allé voir des amis qui eux m'ont expliqué et aidé.
Bref comment on fait pour supprimer son compte?
Amicalement.

Reply

Marsh Posté le 19-01-2011 à 17:13:51    

Nous, les gens qui se pointent ici comme dans un self-service pour y poster 1000 lignes de code pas terrible, et qui manifestement ont pas fait le moindre effort (sinon, ta question n'aurait pas du être "J'ai 1000 lignes, débrouillez vous avec et basta", mais, "A tel endroit, je comprends pas ceci..." ), on n'aime pas trop, hein.
Bref, on aide ceux qui manifestement ont bossé, et sont bloqué dans leur travail, et pas les autres. Et au vu de ton comportement, tu ne rentrais pas dans la première catégorie, puisqu'au vu de tes commentaires, on n'avait même pas l'impression que tu avais essayé de lire le début du main.
A+,

Message cité 1 fois
Message édité par gilou le 19-01-2011 à 17:17:58

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 19-01-2011 à 17:13:51   

Reply

Marsh Posté le 19-01-2011 à 17:26:05    

gilou a écrit :

Nous, les gens qui se pointent ici comme dans un self-service pour y poster 1000 lignes de code pas terrible, et qui manifestement ont pas fait le moindre effort (sinon, ta question n'aurait pas du être "J'ai 1000 lignes, débrouillez vous avec et basta", mais, "A tel endroit, je comprends pas ceci..." ), on n'aime pas trop, hein.
A+,


 
Oé peut-être c'est pour ça qu'après j'ai précisez que je comprenais pas les premières instructions en SDL (à quoi on m'a répondu d'aller sur un lien en anglais ce que j'ai pris en gros comme un va te faire f*****) mais t'inquiètes j'poserai plus de questions.
Ah si juste une dernière, comment supprimer son profil après j'vous embêtes plus ;)

Reply

Marsh Posté le 19-01-2011 à 17:30:57    


 
 
J'espère que ce n'est pas l'anglais qui t'ennuie, sinon tu risques d'aller au devant de grandes déconvenues.
 
Et au passage, c'est dommage, le lien qui t'a été donné, c'est "juste" la documentation officielle, avec tout expliqué et détaillé. :/

Reply

Marsh Posté le 19-01-2011 à 17:33:29    

Ok sorry de ne pas être bilingue.
Quelqu'un à la réponse à ma question?

Reply

Marsh Posté le 19-01-2011 à 18:05:10    

On ne parle pas d'être bilingue, mais si tu n'es pas capable d'aller lire une explication technique en anglais, vaut mieux envisager d’arrêter la programmation (ou d'acquérir les bases de l'anglais technique), parce tu seras constamment confronté au problème.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed