Se connecter avec
S'enregistrer | Connectez-vous

besoin d'aide pr la création d'un serpent

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

perlemaria a dit :
je dois créer un serpent.
Sa tête doit être représentée à l'écran par '*' sa queue par '.' et son corps par un caractère droit quelconque
Je n'arrive pas à chaîner les éléments du serpent.
il me semble que je dois faire une liste chaînée mais quelqu'un pourrait me dire comment on le fait en langage C?

Avec des noeuds comme ça :
  1. struct node
  2. {
  3. struct node *p_next;
  4. /* donnees... */
  5. };

Ensuite, il faut créer des fonctions d'ajout, de lecture etc. Fait de ton mieux et poste le code.

Nota : pour gérer efficacement une liste chainée, je recommande une structure de liste :
  1. struct list
  2. {
  3. struct node *p_head;
  4. struct node *p_tail;
  5. };

  1. /* la structure du serpent */
  2.  
  3. typedef struct snake {
  4. int longueur ; /* taille du serpent */
  5. struct serpent*tete; /* tete pointe sur un element du serpent */
  6. struct serpent*nouveau;
  7. struct serpent*suivant;
  8. struct serpent*courant
  9. } serpent;
  10.  
  11. /* initialisation du serpent */
  12.  
  13. void creation_serpent ( serpent*x) {
  14.  
  15. int i=0;
  16. /* création d'un serpent */
  17. x->longueur = 0; /* le serpent est initialisé */
  18. x->longueur = (aleaInt (4)) + 4; /* serpent ayant entre 5 et 8 éléments */
  19. x->taille_queue = x->longueur*0.3; /*la queue fait 30% du corps */
  20. tete->suivant = NULL; /*liste vide*/
  21. nouveau = (snake*)malloc(sizeof (struct snake));
  22. nouveau->suivant = tete;
  23. tete = nouveau;
  24. x->tete='*';
  25. if (tete!=NULL){
  26. courant = tete;
  27. while(courant->suivant != NULL){
  28. courant = courant->suivant;
  29. }
  30. }
  31. for(i=0;i<longueur;i ++){
  32. nouveau = (snake*)malloc(sizeof(struct snake));
  33. courant->suivant = nouveau;
  34. nouveau->suivant = null
  35. }
  36. nouveau->suivant = queue;
  37. queue = nouveau;
  38. x->queue = '.';


voilà j'ai fait de mon mieux! est-ce correct?
Lassé par la pub ? Créez un compte