Gamme TI-82
Partager sur Facebook Fil RSS Imprimer la page
Cacher les résultats

Résultat de la recherche



Poster un nouveau sujet Poster une réponse
Création d'un labyrinthe
Auteur Message
KillerMapper



Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Ven 06 Fév 2009, 21:56   Citer 

Bonjour à tous,

Depuis quelques mois je m'essaie à la programmation sur ma TI 82-STATS Fr.
Les programmes que j'ai fait sont pas trop poussés, du genre calculs d'aires de formes géométriques diverses ou automatisation de calculs...
J'ai donc voulu aller plus loin en essayant des programmes graphiques (des jeux par ex ).
Je me suis fixé comme objectif de faire un jeu de labyrinthe, où le joueur doit en sortir en résolvant des énigmes (items, portes & clefs, téléporteurs mais ça je vois après, d'abord faire un laby qui se fini correctement quand le joueur accède à la sortie...).
J'ai commencé par la fonction GetKey pour les déplacements du joueur. En observant un snake que j'avais recopié, j'ai donc codé le joueur (représenté par le symbole rond comme dans le snake), qui se déplace case par case.
Le seul problème que j'ai avec, c'est que quand je sors de l'écran, la calculatrice sort l'erreur domaine (ce qui est normal). Je ne vois pas comment empêcher cela.
Mais surtout, je m'attaque maintenant aux murs. Pour les murs j'utilise des lignes, mais je cherche surtout à rendre ces lignes "solides", c-a-d que le joueur ne puisse pas passer au travers (au passage, les murs entourant l'écran, plus de risque d'avoir l'erreur domaine).
Au passage, je voudrais savoir si on peut faire en sorte que quand le joueur s'approche d'un bord, la map se décale afin d'avoir un labyrinthe plus grand que l'écran (redessiner une autre partie de la map je suppose).

Voilà et merci d'avance pour l'aide.

KillerMapper.

----------------------
Level designer de Mario Kart Source
 Adresse email Haut de page Bas de page 
 
webmaster
Avatar

Autorisation : Administrateur
Nb de messages : 782
Inscrit le : Mer 18 Aoû 2004, 22:13
Posté le : Sam 07 Fév 2009, 11:25   Citer 

Salut,

J'ai peur que si tu veuilles décaler la map, la fluidité en prenne un sacré coup...

@+ Le Webmaster beer.gif

----------------------
Retrouver le site sur Facebook : http://www.facebook.com/tout82
 Adresse email Haut de page Bas de page 
 
coc5
Avatar

Autorisation : Membre
Nb de messages : 887
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Sam 07 Fév 2009, 12:39   Citer 

Tout cela est faisable mais il faut faire un système du genre RPG/Pokémon pour les cartes si tu vois ce que je veux dire, quand tu passe dans l'autre map à droite, tu passe tout à gauche de la map suivante.
Sinon pour les murs tu peux découper ton labyrinth en cases et tu fais une matrice (tableau) avec par exemple 1 pour un mur et 0 pour un vide. Sinon tu peux utiliser Pxl-Test, plus efficace, moins lourd mais délicat quand on commence.

----------------------
Ne cliquez pas ici !
 Adresse email Haut de page Bas de page 
 
KillerMapper



Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Dim 08 Fév 2009, 0:00   Citer 

Pour le décalage de la map, j'imagine bien que petit à petit c'est pas trop possible, je pensais donc à faire une autre partie, comme Pokémon et autres Zeldas.

J'ai vu la fonction Pxl-Test, mais bon n'ayant jamais vu d'exemple concrets pour ça, je ne vois pas comment ça marche (Enfin sur le snake que j'ai elle y est je crois, d'ailleurs il il y a une autre version du snake avec des murs, faudrait que j'y jette un coup d'œil. Y a pas un tuto ou une explication sur cette fonction quelque part?

Sinon, je crois que mon programme est un peu lourd pour ce que j'ai fait, 500 octets pour le code de déplacement du joueur et quelques lignes... J'essayerais de poster mon code mais sans câble, c'est bon à passer quelques temps à recopier.


Merci.

----------------------
Level designer de Mario Kart Source
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3391
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Dim 08 Fév 2009, 0:30   Citer 

Pour le pxl-test, c'est de la forme pxl-test(y,x où x est l'abscisse et y l'ordonnée)
Si il y a un point noir, ça renvoie 1, sinon ça renvoie 0.

Sangohan38

----------------------
 Adresse email Haut de page Bas de page 
 
KillerMapper



Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Mer 11 Fév 2009, 18:58   Citer 

Comme prévu, je n'arrive pas à utiliser la fonction eyeonly.gif

Bon je verrais après.
Là j'ai mon code actuel en-dessous. J'imagine qu'il y a des tas de choses optimisables, notamment avec le GetKey où je remets 2 fois la condition If K=x pour effacer l'ancien rond et afficher la nouvelle position (sinon il avance tout seul...)
J'ai copié en français par contre. Mais bon c'est pas très différent, je pense que vous connaissez.
J'ai mis quelques explications en plus winkle.gif


Code
EffDessin
0->Xmin
94->Xmax
0->Ymin
62->Ymax
AxesNAff
CoordNAff
1->A
2->B
0->E
0->T

---ces lignes qui suivent constituent les murs du labyrinthe et le contour---
---les murs sont pas définitifs, juste pour les tests---

Horizontale 0
Ligne(87,15,87,62
Horizontale 7
Ligne(88,15,94,15
Ligne(15,55,45,55
Ligne(23,56,23,61
Ligne(7,47,43,47
Ligne(7,46,7,24
Ligne(15,39,67,39
Ligne(15,40,15,46
Ligne(7,31,50,31
Ligne(7,23,25,23
Ligne(1,15,25,15
Ligne(32,7,32,23

---ces textes affichent le HUD en bas de l'écran ainsi que les éléments du jeu (objets, pièges...)

Texte(1,43,"/          ---(le "/" est un item (planche) qui peut être ramassé pour passer les trous ("*"))
Texte(48,91,"X         ---(le "X" montre la sortie du labyrinthe, mais fermée)
Texte(24,10,"*
Texte(33,1,"*          ---(le signe multiplier (*) correspond à un trou où je joueur perd si il y va sans avoir l'objet "/")
Texte(56,0,"Level:1    ---(le niveau joué, écrit avec des petites lettres et non les lettres classiques)
Texte(56,31,"ITEMS:  [    ] [    ] [    ]     ---(les items ramassés vont dans les cases: la clé "t" dans la première, la planche "/" dans le dexième)
Texte(17,10,"t         ---(correspond à un peit t dans les symboles, c'est la clé de sortie)

---code du joueur---

Lbl1
codeTouche->K
If K=24
Texte(A,B,"
If K=24
B-4->B
Texte(A,B,"º
If K=25
Texte(A,B,"
If K=25
A-4->B
Texte(A,B,"°
If K=26
Texte(A,B,"
If K=26
B+4->B
Texte(A,B,"°
If K=34
Texte(A,B,"
If K=34
A+4->B
Texte(A,B,"°

---conditions (pour chopper un item par ex)---

If A=49 et B=90
Goto 9
If A=25 et B=10
Goto 3
If A=33 et B=2
Goto 3
If A=17 et B=10
Goto 2
If A=1 et B=42
Goto 4
Goto 1

---conséquences des conditions vérifiées---

Lbl 4
Texte(56,69,3/
1->T
Goto1
Lbl3
If T=1
Goto 1
Goto 31
Lbl 31
Texte(25,30,"YOU FAIL!
Pause
EffDessin
Stop
Lbl 2
1->E
Texte(48,91,">
Texte(57,58,"t
Goto 1
Lbl 9
If E=1
Goto 92
Goto 91
B-4->B
Texte(A,B,"°
Texte(48,91,"X
Goto 1
Lbl 92
Texte(A,B,"
Text(25,30,"YOU ESCAPED!
Pause
EffDessin



Voilà j'imagine que c'est pas très joli, mais bon c'est mon premier essai en programme graphique crazy.gif

----------------------
Level designer de Mario Kart Source
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3391
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Mer 11 Fév 2009, 21:35   Citer 

J'ai remarqué que tu as mis 96 en valeur maximale pour l'abscisse or c'est 94 si tu met 0 en minimum.
Est-ce une erreur ou bien voulu?

Sinon, avec les getkey, c'est raccourcissable.

Sangohan38

----------------------
 Adresse email Haut de page Bas de page 
 
KillerMapper



Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Mer 11 Fév 2009, 22:24   Citer 

Oui je me suis effectivement trompé, bref j'ai corrigé ça (ça n'a affecté qu'une ligne heureusement).

Et donc comment je pourrais améliorer les getkeys?

Merci.

----------------------
Level designer de Mario Kart Source
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3391
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 12 Fév 2009, 12:07   Citer 

J'ai remarquer qu'après les conditions et les conséquences du getkey 24 et 26, tu met Texte(A,B,"º.
Or cette ligne n'entre pas dans les conséquences du getkey et donc, peut être simplifiable en la mettant une fois après le getkey.
Ensuite, au lieu de mettre B+4->B et B-4->B si K=24 ou K=26, tu peut mettre If K=24 or K=26:B+(25-K)4->B.
Enfin, au lieu d'effacer lorsque une flèche est pressée, met plutôt: If K=24 or K=26 or K=25 or K=34:Text(A,B," .
Et ensuite, tu réecrit le personnage.

Sangohan38

----------------------
 Adresse email Haut de page Bas de page 
 
homer__simpsons



Autorisation : Membre
Nb de messages : 2
Inscrit le : Mer 22 Déc 2010, 11:26
Posté le : Mer 22 Déc 2010, 13:08   Citer 

Tardive...

Pour deplacer le labirynthe tu peux faire:


Code

:If A=94
:Then
:1->A
:EffDessin
:RappelImage1



Et tu fait ça pour chaque coté!! Mais faut sauver les images et c'est long...

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2016 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink
 

Site hébergé par Free Page sous licence creative commons Page validée par le W3C (XHTML 1.0 Transitional) Feuille de style validée par le W3C Flux RSS 2.0 valide Page étiquetée par l'ICRA Page testée par Ocawa