Bonjour à tous !
J'ai eu une idée : de faire un programme modélisant (au moins grossièrement) un banc de poissons : avec plusieurs poissons (pixels) et un pixel que l'on peut faire bouger sur tout l'écran (je l'appelle pointeur).
En fait je programme sur TI mais je ne me suis mis au C que depuis quelques semaines : j'ai déjà réalisé ce programme en basic mais j'ai abandonné le projet à cause de la vitesse...

Le principe est le suivant :

Si un poisson détecte le pointeur à une certaine distance, définissable, il s'en éloigne jusqu'à être au delà de cette distance.
Le groupe de poissons se forme de cette façon : chacun va en direction du poisson le plus proche et s'arrête à une distance définissable aussi.

Je ne sais pas si je suis très clair, aussi je joins le code que j'ai élaboré (pour l'instant, il n'y a qu'un seul poisson). Il comporte une erreur, le problème c'est que je ne sais pas laquelle. Si quelqu'un pouvait m'aider à la trouver, ainsi que pour la suite du programme...

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
77
78
79
80
81
82
short xa,ya,xta,yta,yy,xx,y,x,yt,xt;          /* Variables de déplacement */
char get;                                     /* Variable de test clavier */
short cy,cx,tecom;                            /* Variables de comptage    */
 
moduldep()                                    /* Fonction de déplacement  */
{                                             /* du pointeur              */
get=ngetchx();
if((get==81)&&(y>2))
	y-=2;
if((get==82)&&(x>2))
	x-=2;
if((get==84)&&(y<98))
	y+=2;
if((get==88)&&(x<158))
	x+=2;
}
 
bacomp()                                      /* Fonction de comptage des */
{                                             /* distances                */
cy=ya-y;
cx=xa-x;
if((cy<=10)&&(cx<=10))
{
	tecom=1;
	if(cy<0)
	{
		if(ya<99)
			ya++;
	}
	else
	{
		if(ya>1)
			ya--;
	}
 
	if(cx<0)
	{
		if(xa<159)
			xa++;
	}
	else
	{
		if(xa>1)
			xa--;
	}
}
else
tecom=0;
}
 
// Main Function
void _main(void)
{
clrscr();
xa=xta=79;
ya=yta=49;
x=y=xt=yt=1;
DrawPix(xa,ya,A_NORMAL);
DrawPix(x,y,A_NORMAL);
 
dep:
moduldep();
DrawPix(x,y,A_XOR);
DrawPix(xt,yt,A_XOR);
yt=y;
xt=x;
 
ba:
bacomp();
if (get=8)
	goto zzz;
if(tecom)
{
	DrawPix(xa,ya,A_XOR);
	DrawPix(xta,yta,A_XOR);
	yta=ya;
	xta=xa;
	goto ba;
}
goto dep;
zzz:
}