Lua, Love2d, dvě hry se stejným názvem třídy v různých složkách

0

Otázka

Jsem nový Lua a Love2D, jsem udělal 2-3 jednoduché hry, a chtěl jsem je dát dohromady. Udělal jsem okno, kde můžete vybrat, které hru, kterou chcete hrát. To uspět; s trochu problém. Dvě mé hry pomocí míče. Takže oba mají Míč.lua Souboru. Používám vyžadují funkce načíst Míč soubor v každém z mé hry. To funguje na první, můžete hrát Game1, vraťte se zpět a hrát Game2 bez problémů. Ale když jsem se vrátit, a chtějí hrát Game1 znovu. Jeho míč.lua Soubor nebude nutné, protože vyžadují nahrát pouze jednou. Pak tam budou mít chybu, protože můj game1 je snažím použít Game2 ples Třídy.

Chtěl jsem vědět, které řešení by bylo nejlepší :

  1. Stačí přejmenovat soubory. (Rád bych se vyhnul, je napevno na mě)
  2. Použití doFile. (Nikdy jsem ho nepoužil, ani nevím, jestli to bude fungovat)
  3. Vyžadují dvě Koule Tříd v Hlavním menu a předat parametrem při načítání každé hry (nevím, jestli to bude fungovat taky)

Pokud chcete vidět můj kód pro další vysvětlení, zde je odkaz : https://github.com/cbelangerstpierre/Games/tree/main/Games

Díky předem !

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

Nejlepší odpověď

0

Jak víte, require bude pouze spouštět každý soubor jednou. Nicméně to bude také uložit návratovou hodnotu souboru, takže můžete require souboru, tolikrát, kolikrát chcete, a ještě dostat stejné hodnoty.

Ve vašem Ball.lua soubory, aby vaše Ball prohlášení místní:

local Ball = Class{}

Pak se ve spodní části těchto souborů přidat:

return Ball

Pak, změnit svůj main.lua soubory ukládat do globální Ball proměnné:

Ball = require "Atari-Breakout.Ball"

a

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

V ideálním případě, je doporučeno, aby všechny vaše místní proměnné a vrátit se stoly ze souborů, které potřebujete require.

2021-11-23 20:50:02

Ohhh pěkné to fungovalo ! Díky moc, říkáte, že vám by používat lokální proměnné místo. Ale nechápu, bude používat lokální proměnné VŠUDE ? jako když řeknete, já Míč = vyžadovat, není to globální ?
Cédric Bélanger-St-Pierre

Ano, napsal jsem to, že způsob, jak minimalizovat změny v kódu. Normálně bych dal něco jako local Ball = require "Atari-Breakout.Ball" v horní části každého souboru, který používá Míč třídy. Pak každý z těchto souborů by mít své vlastní lokální proměnné, které odkazují na stejnou tabulku, která definuje třídu nebo knihovna.
luther

V jiných jazycích

Tato stránka je v jiných jazycích

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