Lua, Love2d, due giochi con lo stesso nome della classe in cartelle diverse

0

Domanda

Sono nuovo di Lua e Love2D, ho fatto 2-3 giochi semplici e volevo metterle insieme. Ho fatto una finestra in cui scegliere il gioco che si desidera riprodurre. È successo; con un piccolo problema. Due dei miei giochi utilizzare una palla. Quindi entrambi hanno una Palla.File lua. Io uso la richiedono funzione per caricare il file Ball in ciascuno dei miei giochi. Funziona in un primo momento, posso giocare Game1, tornare indietro e giocare Game2, senza alcun problema. Ma se vado indietro e desidera riprodurre il Game1 di nuovo. La sua palla.File lua non saranno necessari, in quanto richiedono di caricare solo una volta. Allora c'è un errore in quanto il mio game1 sta cercando di utilizzare il mio Game2 palla di Classe.

Volevo sapere quale soluzione sia migliore :

  1. Basta rinominare il file. (Vorrei evitare, si sente codifica per me)
  2. Utilizzare doFile. (Non l'ho mai usato, non so nemmeno se avrebbe funzionato)
  3. Richiedono la Palla a due Classi nel mio menu Principale e passare dal parametro durante il caricamento di ogni gioco (non so se avrebbe funzionato troppo)

Se vuoi vedere il mio codice per ulteriori spiegazioni, ecco il link : https://github.com/cbelangerstpierre/Games/tree/main/Games

Grazie in anticipo !

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

Migliore risposta

0

Come sapete, require eseguire un file una sola volta. Tuttavia è anche possibile salvare il valore di ritorno di file in modo che è possibile require il file di volte come molti come si desidera e ancora ottenere lo stesso valore.

Nel Ball.lua file, fare il vostro Ball dichiarazioni locale:

local Ball = Class{}

Poi in fondo quei file di aggiungere:

return Ball

Quindi, cambiare i main.lua per memorizzare i file per il mondiale Ball variabile:

Ball = require "Atari-Breakout.Ball"

e

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

Idealmente, si consiglia di effettuare tutte le variabili locali e di ritorno tabelle del file che avete bisogno di require.

2021-11-23 20:50:02

Ohhh bello e ha funzionato!! Grazie mille, Si dice che si dovrebbe utilizzare variabili locali, invece. Ma non ho capito, vorresti utilizzare le variabili locali in tutto il mondo ? come quando ti dicono che faccio Ball = richiede, non è globale ?
Cédric Bélanger-St-Pierre

Sì, l'ho scritto in quel modo per ridurre al minimo le modifiche al codice. Normalmente, si dovrebbe mettere qualcosa di simile local Ball = require "Atari-Breakout.Ball" vicino alla parte superiore di ogni file che utilizza la Palla di classe. Poi ognuno di questi file potrebbe avere una sua variabile locale che fa riferimento alla stessa tabella che definisce la classe o in biblioteca.
luther

In altre lingue

Questa pagina è in altre lingue

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