How to detect collisions ?

Aide et questions

Steph

NEW il y a 5 ans

JFT JFT

You will probably see more clearly when you read this article:

Tu y verras sans doute + clair en lisant cet article :

http://www.cplusplus.com/forum/articles/10627

JFT

NEW il y a 5 ans

Merci.
Petite question concernant les appels de fichiers.
Depuis un fichier initial.INO j'appelle un fichier secondaire.INO par le code "secondaire();".
Depuis secondaire.INO je souhaite retourner, sous certaines conditions, après la ligne d'appel du fichier dans initial.INO.
Dois-je utiliser un simple "return;" ?

Steph

il y a 5 ans

Pour les fichiers .ino le processus est différent : en fait l'IDE Arduino concatène tous les fichiers .ino qu'il trouve dans le répertoire de ton projet (tous ceux qui sont situés au même niveau que ton croquis (sketch) principal). Tout se passe donc comme s'il compilait un seul et même fichier construit en mettant bout à bout tous tes fichiers .ino. Donc si ton croquis principal appelle une fonction située dans un croquis secondaire... aucun problème : tu n'as besoin de te soucier de rien.

Par ailleurs, le flux de contrôle de ton programme reprendra tout seul à la ligne qui suit ton appel de fonction (qu'elle retourne un résultat ou non).

Steph

NEW il y a 5 ans

JFT JFT

Pour les fichiers .ino le processus est différent : en fait l'IDE Arduino concatène tous les fichiers .ino qu'il trouve dans le répertoire de ton projet (tous ceux qui sont situés au même niveau que ton croquis (sketch) principal). Tout se passe donc comme s'il compilait un seul et même fichier construit en mettant bout à bout tous tes fichiers .ino. Donc si ton croquis principal appelle une fonction située dans un croquis secondaire... aucun problème : tu n'as besoin de te soucier de rien.

Par ailleurs, le flux de contrôle de ton programme reprendra tout seul à la ligne qui suit ton appel de fonction (qu'elle retourne un résultat ou non).

JFT

NEW il y a 5 ans

D'accord, merci pour les explications.
Sauf que là il ne s'agit pas de fonctions.

Dans mon croquis principal LAST-DEFENDER.INO, j'ai un appel vers enemy();

Dans le croquis enemy.INO j'ai :
lignes de code;
char u = 0;
while (tab_en[3][en_turn] == 5 and u != 4) {
if (en_turn == 4) en_turn=1; else en_turn++;
u++; }
if (u == 4) "retourner à la ligne suivant l'appel enemy(); de LAST-DEFENDER.INO" ; // comment faire ?
lignes de code;

Bien qu'il est conseillé de ne pas employer GOTO, si je souhaitais l'utiliser, cela fonctionnerait-il donc en mettant un label après enemy(); dans LAST-DEFENDER.INO et un GOTO après mon "if (u == 4)" dans enemy.INO ? Ou bien faut-il tout de même avoir le label et le goto dans le même fichier ?

clement

il y a 5 ans

en fait si tu est bien dans une fonction. si je comprend bien ton code tu as : 

principal.ino

// tout un tas de code 
// le init
// le loop
// au bout d un moment un appel as une fonction secondaire
//ici tu n appelle pas ton deuxième fichier mais bien la fonction secondaire
secondaire();
// encore du code a executer

puis tu as un fichier secondaire.ino

void secondaire() 
{
   // un tas de code 
   // au bout d un moment je veux sortir de secondaire
   if(foo == bar) {
     return;
   }
   // si foo == bar le code plus bas ne sera pas executer on sort de la fonction
}

Pour faciliter la lecture de ton code je te conseil de ne pas faire de return dans le corp d une  methode et aucun dans des method void

exemple

int maMethod()
{
  // je retourne un resulta = 0 par default
  int resultat = 0;
  // pas trop de ligne de code sinon ca devient illisible

  // a parement il peux se passer quelque chose de fou 
  if(quelqueChodeDeFou > 10) {
     resultat = 20;
  }
  // toujours pas trop de ligne de code, cette methode fait trop de chose a mon gout

  // enfin je fait un seul return 
  return resultat;
}

++

clement

NEW il y a 5 ans

JFT JFT

en fait si tu est bien dans une fonction. si je comprend bien ton code tu as : 

principal.ino

// tout un tas de code 
// le init
// le loop
// au bout d un moment un appel as une fonction secondaire
//ici tu n appelle pas ton deuxième fichier mais bien la fonction secondaire
secondaire();
// encore du code a executer

puis tu as un fichier secondaire.ino

void secondaire() 
{
   // un tas de code 
   // au bout d un moment je veux sortir de secondaire
   if(foo == bar) {
     return;
   }
   // si foo == bar le code plus bas ne sera pas executer on sort de la fonction
}

Pour faciliter la lecture de ton code je te conseil de ne pas faire de return dans le corp d une  methode et aucun dans des method void

exemple

int maMethod()
{
  // je retourne un resulta = 0 par default
  int resultat = 0;
  // pas trop de ligne de code sinon ca devient illisible

  // a parement il peux se passer quelque chose de fou 
  if(quelqueChodeDeFou > 10) {
     resultat = 20;
  }
  // toujours pas trop de ligne de code, cette methode fait trop de chose a mon gout

  // enfin je fait un seul return 
  return resultat;
}

++