Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Ven 06 Fév 2009, 21:56
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
Autorisation : Membre
Nb de messages : 879
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Sam 07 Fév 2009, 12:39
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.
Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Dim 08 Fév 2009, 0:00
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
Autorisation : Membre
Nb de messages : 40
Inscrit le : Ven 06 Fév 2009, 21:49
Posté le : Mer 11 Fév 2009, 18:58
Comme prévu, je n'arrive pas à utiliser la fonction
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
---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
Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Jeu 12 Fév 2009, 12:07
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.