Matrice bloque deplacement ? |
Auteur |
Message |
Ggcool
Invité
|
Posté le : Mer 04 Mai 2011, 18:51
|
|
|
Bonsoir, ce midi (ayant 2heures pour manger) un ami et moi avons décidé de commencer a programmer un programme (bah oui pas des patates =) qui fait qu'un curseur se deplace. Pas très intéressant hein ? Mais chuis débutant. Et je voulais faire que le curseur passe d'un ecran a un autre avec des decors differents, j'ai reussi. Mais ! Les decors, soit je passe au dessus du decors soit en dessous (depends de si j'affiche le decors avant ou après mon curseur) hors je voudrais que le curseur s’arrête contre le decors. (Ex: Je mets un 0 pour une pierre je voudrais que ca bloque le chemin)
Mon ami m'a dit qu'il fallait utiliser des matrices seulement j'y comprends rien il faudrait apparement que le matrice fasse 8*16 comme l'ecran de la TI et que a l'endroit ou il y'a le 0 il y'ait un 1 sur la matrice et que je fasse un code pour empecher si la matrice est égale a 1 (j'ai a peu près tout compris mais j'arrive pas a trouver le code pour ca) Merci par avance =)
|
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Mer 04 Mai 2011, 21:05
|
|
|
Euh oui, je veux bien t'expliquer mais pas ce soir, c'est compliqué les matrices.
Promis je t'explique dès que j'ai le temps, sauf si quelqu'un l'a fait avant moi.
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 04 Mai 2011, 21:22
|
|
|
Code | Lbl 0
getKey->K
Y-(K=25)+(K=34->T
X-(K=24)+(K=26->S //capte commande de déplacement + stockage provisoire
If not([A](T,S //(le "not" revient à écrire "=0")
Then //contenu executé seulement si prochaine case =0
Output(Y,X," "
Output(T,S,"X
T->Y
S->X //stocke les nouvelles coordonnées
End
Goto 0 |
L'essentiel est de stocker les prochaines coordonnées sans écraser les anciennes afin de tester la prochaine case. On n'effectue le déplacement que si le test est valide.
Méfie-toi des parenthèses fermantes : j'ai enlevé celles qui sont innutiles mais il faut les mettre quand il y a quelque chose après.
On peut écrire Z->[A](Y,X) pour remplir chaque case.
On peut éditer la matrice entière via le menu matrice>édit.
On peut lire une case de la matrice avec [A](Y,X)
second édit : j'ai croisé les stockages et affichages dans le If car ils n'étaient pas dans le bon ordre.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
Akmdad
Autorisation : Membre
Nb de messages : 717
Inscrit le : Mar 22 Jui 2010, 21:03
|
Posté le : Jeu 05 Mai 2011, 1:21
|
|
|
... en faisant manuellement ta matrice avant évidemment.
et comme j'aime raconter ma vie, si tu veux qu'il y ait plusieurs "objets" qu'on ne peut pas traverser, alors tu classe tes objets en 2 parties
1 pour les objets "traversable" stoqués entre 1 et 50
1 pour les objets non "traversable" entre 51 et 99
et plus tard, dans le test, tu met
IF [A](T,S<51
then
transversable...
else
pas trans.
end
voilaaaa, c'est a peu pres ce que j'ai fait dans mon grand projet de RPG 68k
---------------------- retrouvez moi sur twitter!!!
j'ai une ti 82 stats fr et une ti89 titanium |
|
|
|
Ggcool
Invité
|
Posté le : Jeu 05 Mai 2011, 18:14
|
|
|
Bon, j'ai pas vraiment compris les matrices ... On ma dit de mettre 1 pour les objets non traversables et 0 pour ceux qui sont traversables : ex: . = espace/+ = curseur/ - = objet non traversable
................
................
---.............
.......+........
---.............
................
................
................
Donc on m'a dit dans la matrice de faire ca :
0000000000000000
0000000000000000
1110000000000000
0000000000000000
1110000000000000
0000000000000000
0000000000000000
0000000000000000
Et que si dans la matrice c'etait egal a 1 alors c'etait pas possible d'y aller
(En attendant j'ai reussi a faire un truc mais ca marche que dans un sens si j'arrive de l'autre coté ca me téléporte de l'autre coté de la barrière (représentée par les moins))
J'ai fait :
If Y=3 et X<4:4->Y
If Y=5 et X<4:4->Y
Mais apres ... Si j'essaye de faire par exemple :
If Y=3 et X<4:2->Y
Ca me ramene en dessous de la barriere du haut ... C'est pour ca j'ai besoin des matrices (sinon j'fais un pokemon xD)
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Jeu 05 Mai 2011, 18:49
|
|
|
Ce qu'Akmdad et moi avons écrit devrait suffir pour ton programme. Tu sembles ne pas les avoir lu.
Malgré tout je n'avais pas posté d'information générale sur la manipulation des matrices alors j'ai édité mon message.
Tu as compris le remplissage de la matrice.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
Ggcool
Invité
|
Posté le : Ven 06 Mai 2011, 19:54
|
|
|
Ben en fait j'avais pas compris et par conséquent pas testé >< Je viens de tester ca marche nikel =) J'vais pouvoir faire mon RPG (on verra plus tard pour les combats je fais des quêtes avec les connaissances que j'ai deja =) pour le moment j'ai reussi a demander d'aller a l'ecran suivant et de creuser a des coordonnées qui changent a chaque partie )
|
|
|
|