Lua, Love2d, deux jeux avec le même nom de classe dans des dossiers différents

0

La question

Je suis nouveau sur Lua et Love2D, j'ai fait 2-3 jeux simples et je voulais les mettre ensemble. J'ai fait une fenêtre où vous pouvez choisir le jeu auquel vous voulez jouer. C'est réussi, avec un peu de problème. Deux de mes jeux utiliser une boule. Donc, les deux ont une Boule.Fichier lua. J'utilise le besoin de la fonction pour charger le Ballon file dans chacun de mes jeux. Il fonctionne au premier abord, je peux jouer Game1, revenir en arrière et jouer Game2 sans aucun problème. Mais si je reviens et que vous voulez jouer le Game1 de nouveau. Sa balle.Fichier lua ne sera pas nécessaire, puisque nécessitent seulement de charger une fois. Alors il y aura une erreur depuis mon game1 est d'essayer d'utiliser mon Game2 de boule de Classe.

Je voulais savoir quelle solution serait la meilleure :

  1. Il suffit de renommer les fichiers. (Je voudrais l'éviter, il se sent coder en dur pour moi)
  2. Utilisation doFile. (Je ne l'ai jamais utilisé, je ne sais même pas si il fonctionne)
  3. Exiger que les deux d'un Ballon de Classes dans mon menu Principal et le passer en paramètre lors du chargement de chaque jeu (je Ne sais pas si ça marcherait aussi)

Si vous voulez voir mon code pour plus d'explication, voici le lien : https://github.com/cbelangerstpierre/Games/tree/main/Games

Merci à l'avance !

2d-games file love2d lua
2021-11-23 17:13:24
1

La meilleure réponse

0

Comme vous le savez, require n'exécutera chaque fichier une fois. Cependant, il sera également enregistrer la valeur de retour du fichier de sorte que vous pouvez require le fichier autant de fois que vous le souhaitez et toujours obtenir la même valeur.

Dans votre Ball.lua fichiers, faire de votre Ball les déclarations locales:

local Ball = Class{}

Puis, en bas de ces fichiers ajouter:

return Ball

Ensuite, modifiez votre main.lua les fichiers à stocker pour le mondial Ball variable:

Ball = require "Atari-Breakout.Ball"

et

Ball = require("Switching-Ball.Ball")

Idéalement, il est recommandé de faire tous vos variables locales et les tables de retour à partir des fichiers que vous avez besoin de require.

2021-11-23 20:50:02

Ohhh nice, il a travaillé ! Merci beaucoup, dites-Vous que vous pouvez utiliser des variables locales à la place. Mais je ne comprends pas, serait d'utiliser des variables locales PARTOUT ? comme quand tu dis que je fais de la Balle = demander, n'est-il pas mondiale ?
Cédric Bélanger-St-Pierre

Oui, je l'ai écrit de cette façon à minimiser les changements de votre code. Normalement, vous devez mettre quelque chose comme local Ball = require "Atari-Breakout.Ball" près du haut de chaque fichier qui utilise le Ballon de la classe. Ensuite, chacun de ces fichiers, qui serait variable locale qui fait référence à la même table qui définit la classe ou à la bibliothèque.
luther

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................