Lua, Love2d, două jocuri cu același nume de clasă în diferite dosare

0

Problema

Sunt nou pentru a Lua și Love2D, am facut 2-3 jocuri simple și am vrut să le-a pus împreună. Am făcut-o fereastră în care puteți alege ce joc vrei să joci. A reuși; cu o mica problema. Două dintre jocurile mele folosi o minge. Deci ambele au o Minge.Fișier lua. Eu folosesc nevoie de funcția de a încărca fișierul în fiecare dintre jocurile mele. Acesta funcționează în primul rând, eu pot juca Game1, du-te înapoi și să se joace Game2 fara nici o problema. Dar dacă mă întorc și vreau să joace Game1 din nou. Mingea lui.Fișierul nu va fi necesară, deoarece necesită încărca doar o singură dată. Atunci nu va avea o eroare de când mi-game1 este încercarea de a utiliza meu Game2 balul de Clasa.

Am vrut să știu ce soluție ar fi mai bun :

  1. Doar redenumi fișierele. (Aș dori să-l evite, se simte hardcoding pentru mine)
  2. Utilizarea doFile. (N-am folosit-o, nici nu știu dacă s-ar lucra)
  3. Necesită două Mingea Clase în meniul Principal și trece-l prin parametrul de încărcare atunci când fiecare joc (nu știu dacă s-ar lucra, de asemenea)

Dacă doriți să vedeți codul meu pentru mai multe explicații, aici e link-ul : https://github.com/cbelangerstpierre/Games/tree/main/Games

Multumesc anticipat !

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

Cel mai bun răspuns

0

După cum știți, require va executa numai fiecare fișier o dată. Cu toate acestea, acesta va salva, de asemenea, valoarea returnată de fișier astfel încât să puteți require fișierul ca de multe ori, după cum doriți și încă obține aceeași valoare.

În Ball.lua fișierele, face Ball declarațiile locale:

local Ball = Class{}

Apoi la partea de jos a acestor fișiere, adăuga:

return Ball

Apoi, schimba-ti main.lua fișiere pentru a stoca la nivel mondial Ball variabilă:

Ball = require "Atari-Breakout.Ball"

și

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

În mod ideal, este recomandat pentru a face toate variabilele locale și a reveni tabelele din fișierele de care aveți nevoie pentru a require.

2021-11-23 20:50:02

Ohhh frumos lucrat ! Mulțumesc mult, Vă spun că le-ar folosi variabile locale în loc. Dar nu inteleg, ar folosi variabile locale peste tot ? ca atunci când spui că faci Minge = necesită, nu global ?
Cédric Bélanger-St-Pierre

Da, am scris asta pentru a minimiza modificările la cod. În mod normal, le-ar pune ceva de genul local Ball = require "Atari-Breakout.Ball" lângă partea de sus a fiecare fișier care utilizează Balonul de clasă. Apoi fiecare din aceste fișiere ar putea avea propriul său variabilă locală care face referire la aceeași masă, care definește clasa sau bibliotecă.
luther

În alte limbi

Această pagină este în alte limbi

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