Lua, Love2d, dos juegos con el mismo nombre de la clase en diferentes carpetas

0

Pregunta

Soy nuevo en Lua y Love2D, hice 2-3 juegos simples y quería ponerlos juntos. Hice una ventana donde se elige el juego que quieras jugar. Su éxito; con un pequeño problema. Dos de mis juegos de utilizar una pelota. Por lo tanto tiene un Balón.lua Archivo. Yo uso la función de carga de la Bola de archivo en cada uno de mis juegos. Funciona a la primera, puedo jugar Partido1, volver atrás y jugar Partido2 sin ningún problema. Pero si vuelvo y quiero jugar el Partido1 de nuevo. Su bola.lua Archivo no será necesaria, ya que sólo requieren de la carga una vez. Entonces no tendrá un error desde mi partido1 está tratando de usar mi Partido2 bola de la Clase.

Quería saber cuál es la solución que mejor sería :

  1. Simplemente cambie el nombre de los archivos. (Me gustaría evitarlo, se siente escribir para mí)
  2. Uso doFile. (No la usé nunca, no sé ni siquiera si iba a funcionar)
  3. Exigir a los dos de la Bola de Clases en mi menú Principal y pasar por parámetro cuando la carga de cada juego (no sé si funcionaría demasiado)

Si quieres ver mi código para más explicación, aquí el link : https://github.com/cbelangerstpierre/Games/tree/main/Games

Gracias de antemano !

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

Mejor respuesta

0

Como ustedes saben, require sólo ejecutará cada archivo una vez. Sin embargo también se guarda el valor de retorno del archivo de modo que usted puede require el archivo tantas veces como quieras y aún así obtener el mismo valor.

En su Ball.lua archivos, hacer que el Ball declaraciones local:

local Ball = Class{}

Luego en la parte inferior de los archivos de añadir:

return Ball

A continuación, cambiar su main.lua archivos para almacenar para el mundial Ball variable:

Ball = require "Atari-Breakout.Ball"

y

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

Idealmente, se recomienda hacer todas sus variables locales y devolver las tablas de los archivos que usted necesita require.

2021-11-23 20:50:02

Ohhh agradable funcionó ! Muchas gracias, Te diga que le gustaría utilizar variables locales en su lugar. Pero no entiendo, sería el uso de variables locales en todas partes ? como cuando me dices hacer Pelota = se necesita, ¿no es global ?
Cédric Bélanger-St-Pierre

Sí, lo escribí de esa manera a minimizar los cambios en el código. Normalmente, debería poner algo como local Ball = require "Atari-Breakout.Ball" cerca de la parte superior de cada archivo que utiliza el Pelota de la clase. A continuación, cada uno de los archivos que tienen su propio local de la variable que hace referencia a la misma tabla que define la clase o en la biblioteca.
luther

En otros idiomas

Esta página está en otros idiomas

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