07-03-2010, 06:02 PM
Pour commencer, un petit conseil : n'appelle pas ta table "cases" ou "case", c'est un mot clé réservé (comme "force") par MySQL et ça te posera des problèmes (y compris dans le nommage de tes variables/classes). Je te conseille plutôt le terme "tuile" (en anglais tile, tiles au pluriel), habituel dans les jeux de plateau.
Le défaut de ton approche, c'est qu'on peut n'avoir qu'un effet et qu'un état par case.
Admettons le cas suivant :
Comment fais-tu ? Le sol a 3 états qui auront probablement tous une durée différente.
Il vaut mieux mettre en place une relation N, N avec une table pour les états (states), une table pour les tuiles (tiles) et une table de relation states_tiles qui dispose des colonnes :
En bonus, tu peux mettre des colonnes annexes, telles que :
Voilà, voilà !
Sephi-Chan
Le défaut de ton approche, c'est qu'on peut n'avoir qu'un effet et qu'un état par case.
Admettons le cas suivant :
- Le joueur mort-vivant maudit un lopin de terre ;
- Un elfe de la nuit voit ça et — choqué — décide d'entamer une prière à la déesse de la lune pour y déverser la lumière ;
- Un élémentaire de glace apparaît, éclate l'elfe et le mort-vivant puis gèle le sol ;
Comment fais-tu ? Le sol a 3 états qui auront probablement tous une durée différente.
Il vaut mieux mettre en place une relation N, N avec une table pour les états (states), une table pour les tuiles (tiles) et une table de relation states_tiles qui dispose des colonnes :
- state_id, qui fait référence à l'un des états de la table states ;
- tile_id, qui fait référence à l'une de tes 250000 tuiles
En bonus, tu peux mettre des colonnes annexes, telles que :
- La date à laquelle l'état a été posé ;
- La durée de l'état (en nombre de tours ou bien en minutes, selon le type de jeu) ;
- L'identifiant du joueur qui a causé cet état ;
- La "puissance" de l'état. Pour reprendre ton exemple, un terrain maudit avec une puissance de 10 est tellement maudit qu'on peut y invoquer un démon sans pénalité !
Voilà, voilà !
Sephi-Chan