Lua, Love2d, dois jogos com o mesmo nome da classe em pastas diferentes

0

Pergunta

Eu sou novo para Lua e Love2D, eu fiz 2-3 jogos simples e eu queria colocá-los juntos. Eu fiz uma janela onde você escolhe qual jogo você quer jogar. Êxito; com um pouco de problema. Dois dos meus jogos de utilizar uma bola. Assim, os dois têm uma Bola.Arquivo lua. Eu uso o exigir função para carregar a Bola arquivo em cada um dos meus jogos. Ele funciona em primeiro lugar, eu posso jogar Jogo1, voltar e jogar Game2, sem qualquer problema. Mas se eu voltar e quero jogar o Jogo1 novamente. Sua bola.lua Arquivo não será obrigatória, uma vez que necessitam carregar apenas uma vez. Então lá vai ter um erro desde o meu jogo1 está tentando usar meu Game2 bola de Classe.

Eu queria saber qual a solução que seria melhor :

  1. Basta renomear os arquivos. (Eu gostaria de evitar, sente-se codificar para mim)
  2. Use doFile. (Eu nunca usei, nem sei se iria funcionar)
  3. Requerem os dois Bola de Classes no meu menu Principal e passe pelo parâmetro quando o carregamento de cada jogo (não sei se daria certo também)

Se você quiser ver o meu código para mais explicação, aqui está o link : https://github.com/cbelangerstpierre/Games/tree/main/Games

Obrigado antecipadamente !

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

Melhor resposta

0

Como você sabe, require só será executado em cada arquivo de uma só vez. No entanto, ele também irá guardar o valor de retorno de arquivo para que você possa require o arquivo quantas vezes desejar e ainda obter o mesmo valor.

Em seu Ball.lua arquivos, faça o seu Ball declarações local:

local Ball = Class{}

Em seguida, na parte inferior dos ficheiros de adicionar:

return Ball

Em seguida, altere o seu main.lua arquivos para armazenar global Ball variável:

Ball = require "Atari-Breakout.Ball"

e

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

Idealmente, é recomendável fazer todas as suas variáveis locais e tabelas de retorno dos arquivos de que você precisa require.

2021-11-23 20:50:02

Ohhh bom que funcionou ! Muito obrigado, Você disse que você iria usar variáveis locais em vez disso. Mas eu não entendo, seria usar variáveis locais em todos os lugares ? gosto de quando você diz que eu faça Bola = requer, não é global ?
Cédric Bélanger-St-Pierre

Sim, eu escrevi que forma a minimizar as alterações ao seu código. Normalmente, você teria que colocar algo como local Ball = require "Atari-Breakout.Ball" perto do topo de cada arquivo que usa a Bola de classe. Em seguida, cada um dos arquivos gostaria de ter o seu próprio local de variável que referencia a mesma tabela que define a classe ou biblioteca.
luther

Em outros idiomas

Esta página está em outros idiomas

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