Lua, Love2d, dve hry s rovnakým meno triedy v rôznych zložkách

0

Otázka

Som nový Lua a Love2D, ja som 2-3 jednoduché hry a chcel som dať dohromady. Ja som sa okno, kde si vyberiete, ktorý hru, ktorú chcete hrať. To podarí; s trochu problém. Dve z mojich hry pomocou gule. Tak ako majú Loptu.lua Súbor. Používam vyžadujú funkcie nahrať Loptu súbor v každom z mojej hry. Funguje to na prvý, môžem hrať Game1, vrátiť a hrať Game2 bez akýchkoľvek problémov. Ale ak sa vrátim a chcete hrať Game1 znova. Jeho loptu.lua Súbor nebude potrebné, pretože vyžadujú nahrávať iba raz. Potom tam bude chyba, pretože môj game1 sa snaží používať moje Game2 je lopta Triedy.

Chcel som vedieť, aké riešenie by bolo najlepšie :

  1. Stačí premenovať súbory. (Rád by som, aby sa zabránilo to, cíti tvrdé-kódovanie pre mňa)
  2. Použitie doFile. (Nikdy som nepoužíval, ani vlastne neviem, či to bude fungovať)
  3. Vyžadujú sa dve Gule Tried v mojom Hlavnom menu a odovzdať ju parameter pri načítaní každej hre (Neviem, či to bude fungovať príliš)

Ak chcete vidieť môj kód pre bližšie vysvetlenie, tu je odkaz : https://github.com/cbelangerstpierre/Games/tree/main/Games

Vďaka vopred !

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

Najlepšiu odpoveď

0

Ako viete, require bude len vykonať každý súbor raz. Bude však tiež uložiť návratová hodnota súboru, takže môžete require súbor toľkokrát, koľko chcete, a stále mať rovnakú hodnotu.

Vo vašom Ball.lua súbory, aby sa váš Ball vyhlásenia miestnej:

local Ball = Class{}

Potom na konci tých súbory pridať:

return Ball

Potom, zmeniť svoj main.lua súbory na ukladanie na globálne Ball premenná:

Ball = require "Atari-Breakout.Ball"

a

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

V ideálnom prípade sa odporúča, aby všetky premenné lokálne a vrátiť tabuliek z súbory, ktoré potrebujete require.

2021-11-23 20:50:02

Ohhh pekné fungovalo to ! Ďakujeme, Ste povedali, že by ste použiť lokálne premenné miesto. Ale nechápem, by sa použiť lokálne premenné VŠADE ? ako keď poviete, že som to Loptu = požadovať, nie je to na celom svete ?
Cédric Bélanger-St-Pierre

Áno, napísal som to tak, aby sa minimalizovalo zmien vo vašom kóde. Normálne, mali by ste dať niečo ako local Ball = require "Atari-Breakout.Ball" v hornej časti každý súbor, ktorý používa Loptu triedy. Potom sa každý z týchto súborov by mať vlastné lokálnej premennej, že odkazy tej istej tabuľke, ktorá definuje triedy alebo v knižnici.
luther

V iných jazykoch

Táto stránka je v iných jazykoch

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