Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Une map en ti-basic
Shad le 23/10/2013 à 00:47
Bonsoir à tous !
Je programme depuis un petit bout de temps sur TI82 stats.fr et j'aimerai savoir comment créer une map pour un rpg.
Me conseilleriez vous d'utiliser des matrices et des tiles ? Des text sprites ? Ou juste avec du texte ( ce sera moche ^^ ).
Toute idée est bonne à prendre, merci!m@thieu41 le 23/10/2013 à 09:40
Bonjour,
Ca dépend de ce que tu veux faire... Si tu veux privilégier la partie graphique, dessine la map sur l'écran graphique, mais les perso il vaut mieux qu'ils soient de simples caractères, et non des images (faits avec des textes sprites ou autres), parce que sinon ça ne sera jamais très rapide, et encore moins fluide.
Pour la position de tes personnages, et pour gérer les collisions, une matrice n'est pas une mauvaise idée (ou une liste, parce que les listes sont plus rapides d'accès que les matrices).Shad le 24/10/2013 à 02:31
Tout d'abord merci de ta réponse

!
Mais que veux tu dire par dessiner la map ? Je pensais faire plusieurs tableaux qui s'enchaineraient entre eux, tu me proposes donc de dessiner chaque tableau sééparement et de les enregistrer un par un dans une image ?
Et comment pourrais je utiliser les listes pour gérer les collisions du coup ?
En tout cas merci d'éclairer ma chandelle, j'avais déjà fait un joli petit rpg non graphique, mais là c'est trop dur de gérer la vitesse d'affichage

m@thieu41 le 24/10/2013 à 09:16
Je ne comprends pas ce que tu entends par "plusieurs tableaux qui s'enchainent entre eux"...linkakro le 24/10/2013 à 11:30
Tu veux que chaque écran soit fixe et qu'il y ait transition aux bords ?
Chaque écran devrait être associé à une case de matrice. Et chaque case de matrice devrait identifier le contenu.
Tu peux utiliser une matrice intermédiaire pour représenter l'écran dans lequel se trouve le personnage.
Je te conseille ça plutôt que de stocker tous les objets, ce qui prendrait probablement trop de place.
Une liste peut s'utiliser exactement comme une matrice, il faut juste des divisions ou des produits pour travailler en dimension 1 (liste) ou 2 (matrice).
Dans les deux cas on peut décrire l'écran.
Pour décrire un écran à partir d'une valeur, tu peux par exemple utiliser des divisions de modulo différents pour générer des variables à partir de la valeur.
A-int(A/B) avec B le modulo.Shad le 24/10/2013 à 13:09
"Tu veux que chaque écran soit fixe et qu'il y ait transition aux bords ?" Oui, c'est exactement ça.
Je pense faire comme tu m'as dit du coup : stocker différentes valeurs dans des matrices ( 1 matrice pour une map ) avec une matrice principale qui gérerait la position des maps entre elles ( pour que le personnage se déplace d'une map à l'autre et puisse revenir en arrière ).
Cependant, j'avais déjà essayé de faire un programme comme ça et j'avais eu 2 gros problèmes :
- j'étais obligé de rentrer les valeurs de chaque matrice au début du programme ( très long et très coûteux en mémoire. Et moche surtout.) Je vois pas comment on peut faire autrement ( à part l'aléatoire mais ça me ferait des maps sans queue ni tête et sans retour possible aux maps précédentes ).
- les objets s'affichait à l'écran très lentement : j'avais fait une boucle qui se baladait dans la matrice et affichait l'objet en fonction de la valeur et de sa position dans la dite matrice. Du coup le joueur avait un temps de chargement assez long à chaque fois qu'il entrait dans une nouvelle map...
Avez vous des solutions pour contrer ces 2 problemes ?
Et merci encore pour vos réponses, après promis j'arrête les question
edit : je ferai plutôt des listes à la place des matrices vu que c'est plus rapide, mais j'aurais les mêmes problèmes.
linkakro le 24/10/2013 à 22:01
Je retiens donc que tu appelles "map" chacun des écrans. "Lopin" conviendrait pour ne pas confondre.
Décrire les objets et les collisions se fait souvent de deux manières :
-soit on décrit chaque emplacement spatial et un scrute chaque coordonnée seulement quand nécessaire
-soit on décrit chaque élément par ses coordonnées et on scrute les éléments
La description des éléments est plus rapide s'il y a peu d'éléments. Par contre la scrutation des collision est ingérable dès qu'il y en a un peu trop.
Je te proposais avec les modulo de créer par le calcul l'état d'un ensemble de paramètre avec une seule variable. (envisagé dans mes souvenirs pour un programme de Persalteas, soit Herssahe soit un MineCraft jamais fait)
De cette manière il suffit de retenir une variable par lopin. (dans une matrice ou une liste.
Par exemple A-int(A/2) et A-int(A/3) permet d'avoir 6 états différents en rassemblant les deux résultats, à partir de A seulement. (je précise que les modulos doivent être premiers entre eux pour que ça marche bien)
(demande des détails si tu en veux, j'assome trop souvent)
La matrice est plus puissante que la liste à cause de la surface 99*99=9801>999 et de l'abscence de confrontation 1D/2D.
(dis clairement si tu veux des détails à propos des calculs de passage 1D/2D)
Tu peux créer aléatoirement la map entière du jeu et la stocker pour la lire plus tard. Pas de problème de retour en arrière. Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.