qu'est ce que tu as écris ? c'est censé fonctionner car d'une part, oui, quand un programme rencontre un return dans une fonction, il quitte instantanément et d'autre part, tu peut avoir autant de return par fonction que tu veux (du moment que ça reste lisible, et là ça sera mieux).
Par exemple, tu peut écrire :
bool alerte(POINT pt, HDC hdc, int rayon){
int r,g,b;
pt.x=pt.x+5;
pt.y=pt.y+5;
COLORREF pix;
pix=GetPixel(hdc,pt.x+rayon,pt.y);
g = GetGValue(pix);
b = GetBValue(pix);
if(g+b!=510)return true;
pix=GetPixel(hdc,pt.x,pt.y+rayon);
// r = GetRValue(pix);
g = GetGValue(pix);
b = GetBValue(pix);
if(g+b!=510)return true;
...
return false;
}
C'est valable pour l'autre fonction aussi.
Mais une méthode supérieur serait de faire une fonction du type :
bool okPixel(HDC hdc, int x, int y)
{
int g,b;
COLORREF pix;
pix=GetPixel(hdc,x,y);
g = GetGValue(pix);
b = GetBValue(pix);
return (g+b!=510);
}
Puis tu ré-écris tes fonctions dans le genre :
bool alerte(POINT pt, HDC hdc, int rayon){
pt.x=pt.x+5;
pt.y=pt.y+5;
if(okPixel(hdc,pt.x+rayon,pt.y))
return true;
else if (okPixel(hdc,pt.x,pt.y+rayon))
return true;
...
return false;
}
ou même pire :
bool alerte(POINT pt, HDC hdc, int rayon)
{
pt.x=pt.x+5;
pt.y=pt.y+5;
return (okPixel(hdc,pt.x+rayon,pt.y)
&& okPixel(hdc,pt.x,pt.y+rayon)
&& ...
...
)
Une fois que tu a vue le truc, tu peut essayer de tout réécrire avec une boucle, ça sera un peu moins efficace mais ça fera un code beaucoup plus court, avec moins d'erreur, etc.
Et enfin, les fonction alerte et landingzone sont si semblable, qu'il faudrait les ré-écrire en une seule fonction.
Voila mes conseils pour transformer ça en un programme propre (je pense que ces fonctions qui font à elle deux 285 lignes peuvent être ré-écrite en une seule fonction de 10 lignes sans aucune perte d'efficacité).