truc2geek

2014/10/02

Processing, un jeu : part 3 : téléportation

Filed under: Informatique, Processing, Programmation — Étiquettes : , — truc2geek @ 01:31

Ce qui est génial avec le temps et l’espace, c’est qu’avec un peu de maîtrise, on peut se téléporter.
Notre « serpent »/ »carré » dans le jeu, va lui vivre cette expérience formidable sans comprendre ce qui lui arrive.

pourquoi, comment…

Pourquoi, ben pourquoi pas. Et puis, pour pimenter un peu ce jeu.

Comment, c’est simple : on va définir deux « points de téléportation » : deux zones qui fonctionnent ensemble. Si le serpent/carré touche l’une de ces zones, il se retrouve téléporté dans l’autre. Ces zones seront invisibles, bien sûr.

1er essai

code

Pour commencer, on va créer une classe « PointTelePort » :

01.png

On déclare deux variables globales qui seront des instances de cette classe, on les initialise dans setup() :
02.png

Dans la fonction draw() : au début, on affiche les points de téléportation ; à la fin, on vérifie si le serpent/carré est entré dans la zone d’un point de téléportation :
03.png

Et donc, voici le code de la fonction atteintPointTP() :
04.png

Ce code est simple : si le serpent/carré est entré dans la zone du point de téléportation # 1, alors on lui donne les mêmes coordonnées X et Y que le point de téléportation # 2, et on quitte la fonction.
S’il n’est pas dans la zone du 1er point, on détermine s’il est dans la zone du 2e point ; si oui, on lui donne les mêmes coordonnées X et Y que le 1er point.

test

LOL. On ne peut pas dire que la téléportation ne fonctionne pas, mais elle fonctionne vraiment trop bien!

C’est logique, évidemment : la première fois que le serpent/carré arrive sur le point de téléportation, il est téléporté dans l’autre point, comme prévu.
Et ensuite, au passage suivant dans la fonction draw, le serpent/carré est dans le 2e point de téléportation, puisqu’il vient d’y être téléporté, et du coup il est téléporté vers le 1er point, et ainsi de suite.

Ce qu’il nous manque, c’est une manière de signaler que le carré/serpent a déjà atteint une fois un point de téléportation, et qu’il a déjà été téléporté, et donc qu’il faut maintenant le laisser continuer son chemin.

2e essai

code

Cette notion de « le serpent/carré vient d’être téléporté », on va l’intégrer à la classe Serpent, via une nouvelle propriété nommée « pTelePort » :
05.png

On modifie la fonction :
07.png

test

Ok, super.
J’ai bien vérifié que le serpent/carré « rebondit » toujours quand il touche une extrémité de la fenêtre, que les cibles fonctionnent toujours : bref, on n’a pas de régression dans les fonctionnalités du jeu.
Et surtout, cette fois-ci tout se passe bien concernant la téléportation. Yeah!!

Voici le lien vers le code de cette version.

la suite

Il faudra rendre invisibles ces points de téléportation, sinon ils n’ont aucun intérêt.
Et une fois que le serpent/carré a été téléporté une fois, pourquoi pas redéfinir les points de téléportation.

La suite au prochain épisode…

 

Advertisements

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Propulsé par WordPress.com.

%d blogueurs aiment cette page :