Language,Love2d งสองเกมส์กับเดียวกับชั้นเรียนชื่อโฟลเดอร์ต่างกัน

0

คำถาม

ฉันยังใหม่กั Language และ Love2D ฉันทำ 2-3 ง่ายอย่างเกมและฉันอยากให้พวกเขาอยู่ด้วยกัน ฉันทำหน้าต่างที่คุณเลือกที่เกมคุณต้องการที่จะเล่น มันสำเร็จ;กับปัญหานิดหนอย. สองคนของเกมส์การใช้งานเต้นรำแล้ว ดังนั้นทั้งสองมีบอลlanguage แฟ้ม ผมจะขอใช้ห้องต้องการฟังก์ชันที่จะโหลดลูกบอลแฟ้มในแต่ละคนของฉันเกมส์ มันทำงานในตอนแรก,ฉันสามารถเล่น Game1 กลับเข้าไปและเล่น Game2 นโดยที่ไม่มีปัญหาแล้ว แต่ถ้าฉันกลับไปนอยากจะเล่น Game1 อีกครั้ง เขาบอลlanguage แฟ้มจะไม่ถูกต้องการตั้งแต่ต้องการเพียงโหลดครั้งเดียว แล้วมันจะมีข้อผิดพลาดตั้งแต่ฉัน game1 นพยายามที่จะใช้ของฉัน Game2 เป็นลูกบอลห้องเรียน

ฉันอยากจะรู้จักซึ่งแก้ปัญหาจะดีที่สุด:

  1. แค่เปลี่ยนชื่อแฟ้ม (ฉันอยากจะหลีกเลี่ยงมันรู้สึก hardcoding องฉัน)
  2. ใช้ doFile. (ฉันไม่เคยใช้มัน,ฉันไม่รู้ด้วยซ้ำว่ามันจะทำงาน)
  3. ต้องการคนสองลูกบอลคือชั้นเรียนในหลักของเมนูและส่งมันโดยพารามิเตอร์ตอนที่กำลังโหลดแต่ละเกม(ไม่รู้จักถ้ามันจะทำงานเกิน)

ถ้าคุณต้องการเห็นของรหัสสำหรับมากกว่าคำอธิบายนี่คือการเชื่อมต่อ: https://github.com/cbelangerstpierre/Games/tree/main/Games

ขอบคุณล่วงหน้า!

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

คำตอบที่ดีที่สุด

0

อย่างที่คุณรู้ require จะเดียวที่ประมวลผลแฟ้มแต่ละแฟ้มครั้งหนึ่ง ไงก็ตามมันจะยังช่วยกลับค่าของแฟ้มดังนั้นคุณสามารถ require แฟ้มกี่ครั้งอย่างที่คุณต้องการและยังคงได้ค่า.

ในของคุณ Ball.lua แฟ้มให้คุณ Ball declarations ท้องถิ่น:

local Ball = Class{}

แล้วที่ด้านล่างของแฟ้มพวกนั้นเพิ่ม:

return Ball

งั้นเปลี่ยนของคุณ main.lua แฟ้มที่จะเก็บไปที่โกลบอล Ball ตัวแปร:

Ball = require "Atari-Breakout.Ball"

แล้ว

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

เข้าท่าดีนิเราจะทำทุกอย่างที่เราทำมันเป็นการแนะนำเพื่อทำให้ทั้งหมดของคุณตัวแปรท้องถิ่นและกลับมาใช้เวลาออกจากกองทัพเรือจากแฟ้มที่คุณต้อง require.

2021-11-23 20:50:02

Ohhh ดีมันได้ผล! ขอบคุณมากคุณบอกว่าคุณจะใช้ตัวแปรภายในแทน แต่ฉันไม่เข้าใจเลยว่าจะใช้ตัวแปรภายในทุกที่? เหมือนตอนที่คุณบอกว่าฉันทำงา=ต้องการไม่ได้มันโกลบอล?
Cédric Bélanger-St-Pierre

ใช่ฉันเขียนมันเป็นอย่างนั้นเพื่อย่อเล็กสุดการเปลี่ยนแปลงไปนรหัสของพ่อ โดยปกติคุณจะต้องใส่อะไรบางอย่างอย่าง local Ball = require "Atari-Breakout.Ball" ใกล้ตอนบนของทุกแฟ้มที่ใช้ลูกบอลห้องเรียน แล้วแต่ละแฟ้มพวกนั้นจะต้องของมันเองท้องถิ่นตัวแปรนั้นจะอ้างอิงไปยังที่เดียวกันโต๊ะนที่เป็นตัวตนแท้จริงของที่ชั้นเรียนหรือสมุด
luther

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่