Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2290 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Traduction programme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Traduction programme

n°2047940
Profil sup​primé
Posté le 10-01-2011 à 19:34:21  answer
 

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. }


 

mood
Publicité
Posté le 10-01-2011 à 19:34:21  profilanswer
 

n°2047944
esox_ch
Posté le 10-01-2011 à 19:43:27  profilanswer
 

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
n°2047945
Profil sup​primé
Posté le 10-01-2011 à 19:47:38  answer
 

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

n°2047947
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 10-01-2011 à 19:54:21  profilanswer
 

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
n°2047950
Profil sup​primé
Posté le 10-01-2011 à 20:14:24  answer
 

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 =(

n°2047953
mr simon
Posté le 10-01-2011 à 20:44:16  profilanswer
 


 
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
n°2047976
esox_ch
Posté le 10-01-2011 à 22:16:40  profilanswer
 

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
n°2047986
Elmoricq
Modérateur
Posté le 10-01-2011 à 22:53:28  profilanswer
 

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 ?

n°2050264
Profil sup​primé
Posté le 19-01-2011 à 17:07:25  answer
 

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.

n°2050268
gilou
Modérateur
Modzilla
Posté le 19-01-2011 à 17:13:51  profilanswer
 

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é!  --
mood
Publicité
Posté le 19-01-2011 à 17:13:51  profilanswer
 

n°2050269
Profil sup​primé
Posté le 19-01-2011 à 17:26:05  answer
 

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 ;)

n°2050270
Elmoricq
Modérateur
Posté le 19-01-2011 à 17:30:57  profilanswer
 


 
 
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é. :/

n°2050271
Profil sup​primé
Posté le 19-01-2011 à 17:33:29  answer
 

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

n°2050277
gilou
Modérateur
Modzilla
Posté le 19-01-2011 à 18:05:10  profilanswer
 

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é!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Traduction programme

 

Sujets relatifs
[Shell/Batch] Installation de programme en chaîneScript pour lancer un programme si le ping ne répond plus
programme pour les touches clavierUtilisation d'un programme provenant de Windows
Programme du jeu du taquinQuest-ce qu'un "backend", construction d'un programme avec un backend
Programme VB6 traductionTraduction de [IDL] en [Matlab] d'un petit programme
Traduction d'un programme en assembleurtraduction programme delphi
Plus de sujets relatifs à : Traduction programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR