Le but est de faire un déplacement correct pour un rpg (cms bien sûr), en 100% basic.
Nous avons une matrice de dimention 10 sur 6. Le joueur veut se déplacer d'une case, donc on utilise un getkey, puis on définit les nouvelles coordonnées, qu'on place dans une liste : pos{x,y}. Il faut tester :
1) Que le perso va bien se déplacer sur l'écran (sinon on fait scroller comme dans zelda gameboy)
2) Que la case de destination n'est pas un obstacle
Si les deux conditions sont bonnes, on déplace. Mais il reste encore quelques trucs à tester. La "case" sur laquelle se trouve le perso contient une valeur, c'est un nombre à 4 chiffres. Les 3 premiers indiquent le sprite et le dernier indique le type de case.
Il faut donc :
1) Séparer le n° du sprite et le type de case
2) Tester la case
3) Voir si ça va déclancher qq chose de spécial, un combat, etc...
Bref venons en à l'algo lui-même, le mien ressemble pour l'instant à ça :
lbl deplace
*getkey -> définir la case d'arrivée dans arrivée_x et arrivée_y*
if *la destination est dans l'écran* then
matrice[position_y,position_x]->valeur_case
else
goto *le programme de scrollage*
endif
{mod(valeur_case,10),int(valeur_case/10)}->valeur_separee // On sépare les 3 premiers chiffres du dernier
if *la destination est la même que l'arrivée* or *l'arrivée est un mur* then
*afficher le perso immobile*
else
*afficher le perso en déplacement d'une case à l'autre*
*mettre à jour les nouvelles coordonnées (remplacer position_x et position_y par arrivée_x et arrivée_y)*
endif
if *un certain nombre aléatoire est plus petit qu'une valeur* then
*déclancher un combat*
endif
goto deplace
Voilà... Tout ce que j'ai mit en *violet* ce sont des parties sans interet ou des sous-programmes. Il reste donc cette portion de code.
Mais avec tous ces tests, évidement c'est TRES lent (basic oblige

Est-ce que qqun voit une solution qui supprimerait des tests, en allegerait certains, de façon a optimiser ça du mieux possible ?
P.S : évitez les remarques du style "fais ça en C", merci
