Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Aide: Snake perso


Kuruk_ Invité

Aide: Snake perso

Posté le 21/09/2015 21:17

Bonjour, je commence à programmer en casio.
Je ne me suis pas encore intéressé au programme graphique mais je connais une grande partie (d'après moi 8) ) des fonctions basic.
Je me suis lancé dans un snake personalisé (sans avoir regarder un snake fait par un autres)
Pour l'instant j'ai mon petit début de serpent qui bouge, qui passe d'un bout à l'autre de l'écran, j'ai des petites bouboules à attraper avec un conteur des bouboules, le problème, c'est que mon serpent ne fait que deux de long (tête plus corp ).
Et je n'arrive pas à faire pour que quand mon serpent mange des bouboules, son corp grandit de 1.
Je pourrais utiliser 2 variables pour chaque partie du corp, mais je sais qu'il y a moyen de faire plus simple.
Je voudrais une sorte de compteur mais je vois pas comment faire.


Pouvez-vous m'aidez svp?

Kuruk_


Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 21/09/2015 22:25 | #


Salut,

Ouh, j'ai fait un snake, mais y a un sacré bout de temps
Je ne sais plus du tout comment j'ai fait à vrai dire.
Alors comme ça le premier truc pas du tout optimisé c'est d'avoir une variable avec la longueur, une matriceX et une matriceY

Après à matX[0] t'as l'abscisse du premier bout de serpent, etc jusque matX[longeur-1]. Et Y pour l'ordonnée.
Après une petite boucle For pour l'affichage et c'est parti !
Mais en terme d'algorithme, y a surement plus performant. Et la lenteur du basic est un vrai défi. (ce pourquoi la majorité des snakes sont en locate --> affichage plus rapide)

1337
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 22/09/2015 00:18 | #


Utiliser les listes est une bonne idée
Une optimisation possible est de ne modifier que deux cases par tour (celle qui avance et celle qui s'efface), de manière à ne pas décaler toutes les valeurs à chaque fois. Un peu subtil à mettre en place, mais tu gagnes énormément en performance sur les serpents assez longs
Finir est souvent bien plus difficile que commencer. — Jack Beauregard


Kuruk_ Invité

Citer : Posté le 22/09/2015 13:14 | #


Merci mais le problèmes c'est que je n'ai jamais utiliser les matrices et les listes, je vois pas trop comment faire . Pour l'instant c'est avec des Locate .
Ps: mon serpent n'avance pas tout seul non plus je dois le faire avancer avec les flèche avec des getkey.


Kuruk_
Mgl64200 Hors ligne Membre Points: 649 Défis: 0 Message

Citer : Posté le 23/09/2015 08:25 | #


Kuruk_ a écrit :
Bonjour, je commence à programmer en casio.
Je ne me suis pas encore intéressé au programme graphique mais je connais une grande partie (d'après moi ) des fonctions basic.
Je me suis lancé dans un snake personalisé (sans avoir regarder un snake fait par un autres)
Pour l'instant j'ai mon petit début de serpent qui bouge, qui passe d'un bout à l'autre de l'écran, j'ai des petites bouboules à attraper avec un conteur des bouboules, le problème, c'est que mon serpent ne fait que deux de long (tête plus corp ).
Et je n'arrive pas à faire pour que quand mon serpent mange des bouboules, son corp grandit de 1.
Je pourrais utiliser 2 variables pour chaque partie du corp, mais je sais qu'il y a moyen de faire plus simple.
Je voudrais une sorte de compteur mais je vois pas comment faire.


Pouvez-vous m'aidez svp?

Kuruk_


Tu es débutant ? Si oui, tu risques de suer pas mal si tu es débutant et que c'est ton premier programme. Je peux cependant t'aiguiller : utilise une variable pour tester combien de boules il a mangé, une autre pour l'endroit ou le serpent est, et les matrices afin de faire une grille pour gagner en perfs. Les listes, ça peut servir à faire un High-Score. Fais déja un Snake sans malus et sans effet ou il se mord la queue et perd une taille. Pour le faire avancer, c'est plus complexe. Fais ça, et c'est déjà bien.
Toi t'es en train de lire ma signature là...
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 26/09/2015 22:57 | #


Un autre moyen élégant, c'est d'utiliser une liste qui contient la direction (@Xavier59 : pas besoin des coordonnées) de chaque morceau de serpent (haut/bas/gauche/droite) et de décaler son contenu d'une case à chaque frame. Le problème avec cette méthode, c'est que plus le serpent est long et plus le jeu rame.
La solution consiste alors à utiliser la fonction SortD pour trier la liste beaucoup plus rapidement. Il faut donc incrémenter un compteur à chaque tour de boucle et s'en servir pour remplir les cases de la liste (0/1/2/3/4/5/6/...), et mettre la valeur de la direction en partie décimale (0,1/1,1/2,3/3,2/4,3/5,3/6,1/...). Ce faisant, le programme n'a qu'à modifier la case correspondant au dernier bout de queue du serpent en mettant à la place la direction de la tête, et cette case se retrouve propulsée en tête de liste avec la fonction SortD.

Bon, j'ai décrit la méthode de façon très lapidaire, mais si ça intéresse quelqu'un je peux détailler davantage.


Kuruk_ Invité

Citer : Posté le 01/10/2015 16:49 | #


Moi chuis intéressé par tout !!!
J'ai arreté mon snake, puis hier j'ai fait une petite balle qui rebondit sur les bords de l'écran tout seul, du coup j'ai retenter un snake V2 qui avance tout seul avec une Var. C qui est soit 0/1/2/3 (chaque valeur une direction) donc il avance tout seul.
Le truck c'est qu'il ne grandit toujours pas, j'avais été voir dans un autre post un snake fait par qqun (son pseudo c'est qqch genre pierrot chuis plus sur) avec 2 matrices le problème c'est que il ne marche pas.... et je n'ai pas réussi à régler le probleme...
Kuruk_
Mgl64200 Hors ligne Membre Points: 649 Défis: 0 Message

Citer : Posté le 05/10/2015 14:14 | #


Oui, c'est Pierrot. Avec comme avatar des quilles ?
Toi t'es en train de lire ma signature là...

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 90 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd