Snake7 : Algorithme du mouvement du serpent

Voici comment j’ai développé le mouvement du serpent dans Snake7. Pour rappel, le serpent va dans toutes les directions de manière fluide (à l’inverse du serpent classique qui va de « carré en carré » dans 4 directions).
[youtube=http://www.youtube.com/watch?v=CbzXohlMvMc]
Situation de base : Le serpent est constitué de plusieurs tronçons et de la tête. Le joueur contrôle uniquement le déplacement de la tête, et les tronçons doivent suivre.
Problématiques : 

  • Un tronçon ne connait que le tronçon qui le précède. Il n’y a pas d’intérêt à ce qu’il connaisse la position ou le comportement de la tête.
  • Pas question non plus qu’un tronçon suive exactement le même chemin que le tronçon précédent (A l’instant t, la position du tronçon x ne sera pas la position du tronçon x-1 à l’instant t-1) : Cela donnerai un mouvement trop rigide !

Solution : A chaque instant, un tronçon doit toujours se trouver la même distance du tronçon précédent. Si le tronçon précédent s’éloigne, le tronçon doit s’en approcher par le chemin le plus court.
Voici un schéma de la structure du serpent , ici composé de 4 tronçons :

… où tous les segments rouges sont de la même longueur.
Scénario 
Prenons 2 tronçons A et B, séparés de la longueur « d ». B se déplace, A doit suivre et venir se « coller » à B en gardant la même distance « d » :

Comment déterminer le chemin que doit prendre A ? Schématisons un peu mieux la situation :

d, x1 et y1 sont connus ! Reste à connaitre x2 et y2 (déplacement horizontal et vertical de A)
Et bien pour cela, on ressort nos bons vieux théorèmes de Pythagore et Thalès !

ColorSeeds pour Windows Phone 7

ColorSeeds pour WP7 disponible depuis novembre 2010.
## UPDATE 18/02/2011
La version 1.1 a été mise à jour en 2.0 (avec le fameux mode « infini »).
Une version debuggée de la 1.1 passe en gratuit sur le Marketplace (version 1.2). En 3 jours de présence, déjà 600 exemplaires téléchargés !
## UPDATE 23/12/2010
Blog officiel du jeu : http://colorseeds.wordpress.com
## UPDATE 19/11/2010
Voici donc « ColorSeeds » disponible sur le MarketPlace Zune !
Je voulais le proposer gratuitement, mais impossible d’insérer une bannière pub pour les développeurs européens !
Le jeu propose une version d’essai de 15 niveaux, puis 0.99€ pour les 56 niveaux 😉
Pourquoi ce changement de nom de ColorVirus à ColorSeeds ? J’avais peur que le terme « Virus » effraie le comité de validation des appli et la ménagère de moins de 50 ans lol
##
 
Me voilà reparti depuis 2 mois sur le portage de ColorVirus pour mobile.
J’avais déjà fait un essai infructeux pour Android (Eclipse + plugins = l’enfer !). Et puis Microsoft se décide à offrir tout un toolkit de développement pour Windows Phone 7 :

  • Visual Studio 2010 Express pour Windows Phone
  •  Emulateur Windows Phone
  •  Silverlight pour Windows Phone
  •  XNA Game Studio 4.0

Une aubaine !
J’espère pouvoir soumettre mon appli sur market place à l’automne, quand les premiers smartphones débarqueront.