que doit "savoir" un objet Block() ?

ou quels attributs dois je lui donner

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Hello !

Je travaille sur un remake d'un de mes propres jeux (reprog complète en gros), et je m'interroge sur plusieurs points, dont en voici un (majeur d'après moi, ca va changer la direction de dev en fonction des choix ; avant je n'utilisais pas de class Block pour gérer mes tiles) : quels attributs doit avoir ma class Block ?

Pour faire bref, le projet utilise 1 class Map qui instancie 3 fois la class TileMap (pour constituer mes layers) (niveau techno, une tilemap n'est autre qu'un wrapping -honteusement copié de la doc de SFML- d'un vertex array).

La class Map a un std::vector<Block> level (dont la taille vaut HEIGHT * WIDTH du niveau).

Quand je crée mes layers, je fais juste un tilemap_object.load(level) et la tilemap va lire les id des blocks contenu dans le vector.

Et donc je me demande plusieurs choses sur la class Block :

  • doit elle avoir un attribut position, comme ça la notion d'ordre dans le vector, peut importe, et on peut déplacer plus facilement un Block ?

  • doit elle aussi avoir un attribut "cast shadow" et "collide" ? ou bien devrais je me référer à une table des attributs dans la class Map pour savoir quoi faire ?

Pour le dernier point, quand je dis table des attributs, je parle d'une sorte de std::map<int, std::map<std::string, bool>> qui fonctionnerai ainsi :

table[id du block]["cast shadow"]

table[id du block]["collide"]

En choisissant cette méthode, ca voudrait dire que l'on ne pourrait pas modifier un block unique sans toucher aux autres blocks ayant le même id …

Bref je sais pas trop comment m'y prendre ici ^^' avant j'avais un dict python avec mes blocs dedans (id -> image) (oui c'est pas le top) et je gérais ni collision ni shadow. Donc pour savoir si je devais collider, je trichais : si !(id%2) alors collide, sinon tu passes. degueu quand même hein … –'

Merci de votre aide, 6torrent :p

Ma chaine YouTube ! | Seventh, un micro langage communautaire ! | Mon projet : Unamed (en pleine reprogrammation en C++11/SFML2.4) | Mon tuto sur Pygame !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte