ฉันไม่แน่ใจจริงๆว่า "เขาวงกต" เป็นคำที่ถูกต้อง ผู้ใช้โดยทั่วไปเริ่มต้นในซิงเกิลRoom
ที่มี 4 ประตู (N, S, E และ W) พวกเขาสามารถไปในทิศทางใดก็ได้และห้องถัดไปแต่ละห้องจะมีอีกห้องหนึ่งโดยมีประตูตั้งแต่ 1 ถึง 4 ประตูที่ไปยังห้องอื่น
"เขาวงกต" ควรจะมีขนาดไม่ จำกัด และเพิ่มขึ้นเมื่อคุณย้ายห้อง มีจำนวน จำกัดRooms
แต่จำนวนที่มีอยู่นั้นเป็นแบบไดนามิกและสามารถเปลี่ยนแปลงได้
ปัญหาของฉันคือฉันไม่แน่ใจว่าโครงสร้างข้อมูลที่ดีที่สุดสำหรับรูปแบบประเภทนี้
ครั้งแรกที่ฉันคิดว่าจะใช้แค่ชุดของRoom
วัตถุ[X] [X] แต่ฉันค่อนข้างจะหลีกเลี่ยงเพราะสิ่งนี้ควรจะเติบโตในทุกทิศทางและควรสร้างห้องที่ "เยี่ยมชม" เท่านั้น
อีกความคิดหนึ่งคือการให้แต่ละRoom
คลาสมี 4 Room
คุณสมบัติที่เชื่อมโยงสำหรับ N, S, E และ W และเพียงแค่เชื่อมโยงไปยังก่อนหน้านี้Room
แต่ปัญหาของการที่ฉันไม่รู้วิธีระบุว่าผู้ใช้เข้าห้องหรือไม่ มีห้องที่อยู่ติดกันแล้ว "สร้าง"
ตัวอย่างเช่น,
--- --- ---------- | | | | เริ่ม 5 4 | | | | --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
หากผู้ใช้ย้ายจาก Start> 1> 2> 3> 4> 5 ดังนั้นRoom
# 5 จำเป็นต้องรู้ว่า W มีห้องเริ่มต้น S คือห้อง # 2 และในกรณีนี้ไม่ควรพร้อมใช้งานและ N อาจเป็น ใหม่Room
หรือกำแพง (ไม่มีอะไร)
บางทีฉันอาจต้องมีการผสมผสานของอาเรย์และห้องที่เชื่อมโยงกันหรือบางทีฉันอาจจะมองแค่นี้ผิด
มีวิธีที่ดีกว่าในการสร้างโครงสร้างข้อมูลสำหรับ "เขาวงกต" ประเภทนี้หรือไม่? หรือฉันอยู่ในแนวทางที่ถูกต้องกับกระบวนการคิดในปัจจุบันของฉันและฉันขาดข้อมูลบางอย่าง
(ในกรณีที่คุณสนใจโครงการเป็นเกมที่คล้ายกับMunchkin Quest )