bon nouvelle question pour vous chers membres :
c'est la fonction touche qui me pose un probleme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include<stdio.h>
#include<stdlib.h>
#include<graph.h>
int ran(void) {
  /*cette fonction sert à trouver un entier entre 1 et 4 pour choisir le trou de sortie de la taupe*/
  int x;
  srand(time(NULL));
  x=(rand()%5)+1;
  return x;
}
void choix(int x, int t[]){
  /*cette fonction sert à représenter la taupe par un 1 dans le tableau en fonction du resultat de ran*/
  int i;
  for(i=0;i<5;i++){//cette boucle remplie les cases du tableau avec des 0.
    t[i]=0;
  }
  printf("le trou choisit est %d\n",x);
  switch (x)// ce switch sert à choisir dans quel trou la taupe va sortir en fonction de la valeur de x. un 1 montre l'emplacement de la taupe et un 0 montre qu'il n'y a rien.
    {
    case 1: t[0]=1;break;//trou en haut a gauche
    case 2: t[1]=1;break;//trou en haut a droite
    case 3: t[2]=1;break;//trou middle
    case 4: t[3]=1;break;//trou en bas a gauche
    case 5: t[4]=1;break;//trou en bas a droite
    }
  for(i=0;i<5;i++){//a retirer avant de rendre le projet, sert a afficher le contenu du tableau.
    printf("%d\n",t[i]);
  }
}
void touche(int t[],int points[]){
  //cette fonction permet de savoir si on a touché la taupe ou non
  while(!SourisCliquee())
    {
      SourisPosition();
      if(t[0]=1){
	if((_X>=100)&&(_X<=185)&&(_Y>=75)&&(_Y<=155))
	  points[0]=points[0]=10;
      }
      else if(t[1]=1){
	if((_X>=315)&&(_X<=405)&&(_Y>=70)&&(_Y<=150))
	  points[0]=points[0]=10;
      }
      else if(t[2]=1){
	if((_X>=200)&&(_X<=285)&&(_Y>=260)&&(_Y<=340))
	  points[0]=points[0]=10;
      }
      else if(t[3]=1){
	if((_X>=95)&&(_X<=180)&&(_Y>=445)&&(_Y<=520))
	  points[0]=points[0]=10;
      }
      else if(t[4]=1){
	if((_X>=330)&&(_X<=415)&&(_Y>=445)&&(_Y<=520))
	  points[0]=points[0]=10;
      }
    }
}
 
int main(void)
{
  int points[1]={0};
  int x,i,posfenetrex,posfenetrey;
  int t[5]={0,0,0,0,0};
  x=ran();
  choix(x,t);
  InitialiserGraphique();
  posfenetrex=(Maxx()/2)-250;//250 car moitié de 500
  posfenetrey=(Maxy()/2)-344;//344 car moitié de 688
  CreerFenetre(posfenetrex,posfenetrey,500,688);
  ChoisirEcran(0);
  ChargerImage("fond.xpm",0,0,0,0,500,688);/*les deux 1ers 0 montre a partir d'où charger la zone a charger ( à partir coin sup gauche ), les deux 0 d'apres place l'image ds la fenetre a partir du coin sup gauche et les deux derniers nombres montre quelle taille d'image est copiée*/
  touche(t,points);
  while(!SourisCliquee())
    {}
  FermerGraphique();
  printf("votre score est %d\n",points[0]);
  return EXIT_SUCCESS;}
la bibliotheque graphique que j'utilise est téléchargeable ici : cliquez ici

le principe est que l'on doit cliquer sur les trous donc les coordonnées sont mises dans mes if le probleme c'est que le trou n°1 me rajoute toujours des points et que pour les autres, mm si on lcique sur le bon, cela marche des fois et des fois celà rate. ( les fonctions Souris Cliquee et SourisPosition mette la position en x et y dans des vaiables globales nommées _X comme nous l'explique ceci :

[ La récupération des coordonnées de la souris se fait par l'intermédiaire de deux variables globales (de type int)_X et _Y. ]

* La fonction void SourisPosition(); récupére dans _X et _Y les coordonnées de la souris au moment de l'appel de cette fonction.

* La fonction int SourisCliquee(); teste si un bouton de la souris a été cliqué (renvoie 1 ou 0), et place si c'est le cas ses coordonnées au moment du clic dans _X et _Y.