Messagerie


Numéro de case virtuelle.

Kloug
1497 messages
Fusion 2.5
jeudi 21 février 2019 à 00:21
Salut à tous et à toutes.

Le numéro de case virtuelle, est une notion, un plus indispensable pour programmer, surtout avec CTF.

***** [Les mises en pratique en pièce jointe.] *****

***** Remerciements à ArturH et Seyjin.**********

A quoi sert un numéro de case virtuelle?

En gros à "simplifier" une coordonnée x,y, à réduire le nombre d'objets actifs dans la scène, car une coordonnée x,y, peut être remplacée par un numéro de case virtuelle.

But du jeu (cahier des charges):

Identifier une case virtuelle, sur une grille virtuelle, via un numéro.

Mise en pratique.

Pour les débutants une formule se met au point avec l'éditeur d'expression.

Taille de l'écran 640x480 pixels / Taille de la case (tuile invisible) 32x32 pixels.

Sens de lecture de la grille "standard" de droite à gauche, pour 300 cases virtuelles, de 0 à 299.

1) Déplacer sur la grille, le curseur.

Formule pour le curseur (actif carré rose).


Réglage du point chaud du curseur à x=0 et y=0, sinon la formule ne fonctionne plus, à moins de modifier la formule en tenant compte des valeurs d'un point chaud différent.

Cette formule oblige CTF à déplacer case par case le curseur via la souris.

Fixe la position x,y du curseur à la position du pointeur x,y de la souris / taille de la tuile de base * taille de la tuile de base

Évidemment on peut adapter la formule (ainsi que les suivantes) à la taille d'une tuile différente de 32x32 pixels, en ajoutant un autre compteur TValeur (taille de la tuile de base).

2) Numéro de case sur l'axe X (horizontal).

Formule pour le compteur XVAleur.

X( "Curseur" ) / 32 >> position x du curseur / 32 >> XValeur de 0 à 19.

3) Numéro de case sur l'axe Y (vertical).

Formule pour le compteur YVAleur.

Y( "Curseur" ) / 32 >> position x du curseur / 32 >> YValeur de 0 à 14.

_____________________________________

Le plus "hard" l'astuce pour calculer le numéro de case virtuelle.

Pour éviter le mal de tête, c'est le moment de prendre un cachet d'aspirine. >> Humour! :D

Après analyse et synthèse la formule finale doit tenir compte de deux choses.

1) Le "décalage" sur l'axe X.

Sur une ligne, le "décalage" est égale au nombre de cases virtuelles sur l'axe X.

Dans notre cas le "décalage"= 20.

2) Le "décalage" sur l'axe Y.

A chaque retour à la ligne on multiplie le "décalage" par YValeur.

Ce qui donne au final pour une grille 2D la formule suivante.

Numéro de case virtuelle = value( "XValeur" ) + ( 20 * value( "YValeur" ) )

Pour info avec un numéro de case virtuelle 3D, on ajoute autant de grilles virtuelles que besoin.

Puis on ajoute un autre "décalage", soit le nombre de numéro de cases virtuelles dans la grille virtuelle.

300 dans notre cas. >> Formule. >> value( "XValeur" ) + ( 20 * value( "YValeur" ) ) + (300 * value( "ZValeur" )).

Le compteur ZValeur étant le nombre de grilles virtuelles de 0 à selon les besoins.
______________________________________________________________________________

L'idée d'un numéro de case virtuelle, est venue à cause du raz le bol de la coordonnée x,y(,z), de doublons d'objets actifs dans la scène.

Le principe de la grille virtuelle est pratique, pour simplifier la gestion d'un monde avec des centaines de maps.

Quand on utilise le principe "grille virtuelle", on découvre des effets sympathiques.

Merci de votre attention.

Très cordialement.

Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
jeudi 21 février 2019 à 07:13
La grille virtuel c'est la base du jv !
GG Kloug
Kloug
1497 messages
Fusion 2.5
jeudi 21 février 2019 à 08:51
Merci de ton retour Monos.

En pièce jointe, une autre mise en pratique concernant une grille virtuelle, avec l'objet liste.
Remerciement à Patrice.

Édit:
Patrice si tu pouvais mettre un lien valide pour tous les exemples de ce sujet, ce serait fort sympathique.

http://comptoir-mmf.eu/Forum/index.php?topic=1371.0

Pour gagner du temps tu peux mettre tous les exemples dans un dossier, un fichier zip, un lien.

Merci de ton attention, de tout ce que tu fais pour le comptoir.


Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
jeudi 21 février 2019 à 10:57
Le grand avantage du numéro de case virtuelle est qu’il y a au final une seule valeur à gérer et stocker.

L’inconvénient, c’est qu’il faut que la largeur de la grille doit être définie au départ. De ce fait, si on veut une grille de taille variable il faudrait utiliser le coordonnées virtuelles, et donc utiliser deux valeurs…

Quel autre moyen peut-t-on utilisé pour avoir deux nombre entier dans un seul nombre ?
Et si on utilisait un nombre décimal en inscrivant les coordonnées virtuelles après la virgule. Ce qui donnerait pour la case [x=12  Y=17] la valeur 12,17. La formule serait donc value( "vX" ) + ( value( "vY" ) / 100.0 ).

Pour revenir aux coordonnées on fait :
vX = Round(notre valeur)
vY = ( (notre valeur) - Round(notre valeur) ) *100 ou ( (notre valeur) mod 1 ) * 100

[edit] Il y a étrangement un décalage d’1 pixel à certains endroits. J’ai beau refaire et retourner les calculs dans tous les sens, je ne trouve aucune erreur. D’autant plus qu’en affichant le résultat du calcul avec un compteur, j’ai bien la bonne valeur.
Modifié le vendredi 23 août 2019 à 15:27 par Seyjin
Emmanuel
2412 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
jeudi 21 février 2019 à 12:19
kloug pour que ta formule marche du a oublie de précise que il faut que les objet on le point chaut soi en haut a gauche.
Kloug
1497 messages
Fusion 2.5
jeudi 21 février 2019 à 14:08
Merci de l'exemple Seyjin.

Merci de ton retour Emmanuel, je vais le préciser.

Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
jeudi 21 février 2019 à 21:40
Formule que j'utilise pour trouver l'id d'un tableau 1d (on se passe souvent des tableaux 2d en prog)sur deux coordonnées.

- Position_Y en case * Taille_largeur_map en case + Position_X


Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
jeudi 21 février 2019 à 21:54
Voici un exemple de grille virtuelle carrée penchée (pour un jeu en isométrique par exemple). Celle ci m’a servi à améliorer la grille hexagonale que j’ai faite pour Re/World.

La scène 1 est la même que celle de mon exemple précédent, bug du pixel en moins corrigé. La grille penchée est en scène 2.
Kloug
1497 messages
Fusion 2.5
dimanche 3 mars 2019 à 12:45
Merci de vos retours.

En PJ, l'exemple "Maze Traductor and Move" utilise un n° de case virtuelle.

@+
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 27 visiteurs au total

Derniers messages