Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Instancier des objets composés à partir d'une BDD sqlite3

0 votes

Suite à une relecture du dossier sur la POO en particulier le chapitre 5 traitant de la composition, je me suis demandé comment faire la même chose, mais à partir d'une BDD.

Pour illustrer, vous pouvez voir ici un gars qui s'amuse à bidouiller avec sqlite manager pour booster ses unités dans le jeu Blood Bowl.

Imaginons un jeu de plateau avec des unités dessus, ayant des attributs ( force, PV, rapidité, portée etc.) , des armes qui sont également des classes auxquelles on déléguera les attaques, ainsi que des sortilèges / enchantements pour modifier les calculs ou déclencher / empêcher des événements.

Comment faire pour instancier toute notre armée sur le plateau ?
Un dictionnaire par joueur pourrait compter le nombre d'unités par type d'unités, leur disposition géographique sur le plateau serait aléatoire pour simplifier.

Y'aurait plusieurs façons de faire, certaines moins raides que d'autres. Voici ce que j'ai gambergé :

Soit une unique classe Unite, et mettre un set pour les capacités qui dépend de la race.
Où bien faire une classe par type d' unité , héritant de sa propre race, héritant elle meme de la classe grand-mère Unite.
Où bien faire de la métaclasse.
Où bien créer un fichier avec une espèce de trame, que l'on remplit pour faire comme si on avait écrit une classe, que l'on importe dynamiquement (la pire solution à mon avis).

demandé 27-Dec-2015 par buffalo974 (2,570 points)

Il faudrait que tu sois un peu plus précis sur ce que tu cherche, là c'est un peu dur de vouloir t'aider. D'ailleurs, je n'ai pas compris le rapport entre sqlite et le reste de ton message (qui traite d'organisation du code pour un jeu).

Quel est ton objectif ? Si c'est de savoir comment organiser un jeu, tu peux te renseigner sur l'ECS par exemple (qui diffère de la POO). Si c'est d'apprendre à te servir d'un ORM dans le cadre de la POO, SQLAlchemy est un bon choix et il existe des bons tutos sur son utilisation. Si c'est d'apprendre à gérer la persistance des données, tu devrais aussi regarder du coté de la sérialisation (pickle notamment) avant de chercher du coté des DBs.

Mais quoi qu'il en soit, ce n'est pas trop la vocation de ce site que de répondre à ce genre de questions générales, il faudrait une question plus précise.

2 Réponses

0 votes
 
Meilleure réponse

Je pensais chercher une syntaxe, et au final je viens de découvrir un paradigme, je ne suis pas venu pour rien.
Liens pour découvrir l' ECS ici et .

Je garde l'idée d'utiliser SQLAlchemy sous le coude, pour des bdd plus petites que l' exemple à la Blood Bowl.

répondu 29-Dec-2015 par buffalo974 (2,570 points)
+1 vote

Alors à la première lecture, la première chose qui me vient à l'esprit est un ORM.

https://fr.wikipedia.org/wiki/Mapping_objet-relationnel

L'idée est ici de faire corréler les données de la base de données avec des objets Python, chaque enregistrement représentant une instance.

Lorsque la structure en base de données existe avant le modèle, certains framework (comme Django) permettent de faire de la rétroinspection et générer le modèle correspondant.

répondu 28-Dec-2015 par debnet (1,002 points)

J'ai trouvé ce tuto vidéo en français pour Flask+ SQL Alchemy.
Dommage, il explique dans le sens Objets > DB

...