การโต้ตอบกับวัตถุอื่น ๆ ในเกมแบบข้อความใน Java

ฉันจะพยายามทำให้ชัดเจนที่สุดเกี่ยวกับเรื่องนี้เพื่อไม่ให้เกิดความสับสน นอกจากนี้ ฉันไม่ได้มองหาวิธีดำเนินการ แต่เป็นเพียงเคล็ดลับในการเริ่มต้นและมุ่งหน้าไปในทิศทางที่ถูกต้อง

ฉันค่อนข้างใหม่กับการเขียนโปรแกรมโดยทั่วไป (การเขียนโปรแกรมด้วย Java เพียง 5 เดือน) และฉันแทบจะไม่ได้เรียนรู้อะไรมากมายเกี่ยวกับการเขียนโปรแกรมเลย ฉันเข้าใจแนวคิดบางอย่างแล้ว แต่ฉันพยายามเข้าใจแนวคิดของ MVC (โมเดล มุมมอง ตัวควบคุม) ฉันได้ทำการวิจัยมาแล้วและต้องการนำไปใช้กับเกมที่ใช้ข้อความเป็นภาพ

ในเกม ผู้เล่นสามารถสำรวจ "ห้อง" ต่างๆ ได้ บางห้องมีไว้เพื่อการสำรวจและบางห้องเป็นสิ่งที่ฉันเรียกว่า "ห้องแห่งความตาย" ซึ่งผู้เล่นจะต้องตายและต้องรีสตาร์ทที่ห้องแรก จุดประสงค์ของเกมคือการหลบหนีและค้นหาห้องทางออก และการนำทางจะถูกควบคุมโดยใช้ปุ่มสี่ปุ่มสำหรับแต่ละทิศทางทั่วไปทั้งสี่ ไม่มีอะไรยากสำหรับตอนนี้ อย่างไรก็ตาม ฉันมีปัญหาในการทำความเข้าใจวิธีทำให้วัตถุในห้องโต้ตอบกัน ตัวอย่างเช่น หากผู้เล่นคลิกปุ่มไปทางซ้าย พวกเขาควรจะสามารถเข้าไปในห้องทางด้านซ้ายของห้องที่พวกเขาอยู่ในปัจจุบันได้ โมเดลจะเป็นผู้รับผิดชอบในการอัปเดตห้องที่ผู้เล่นอยู่โดยขึ้นอยู่กับทิศทางใด ผู้เล่นต้องการไป

กล่าวอีกนัยหนึ่ง ทุกคนมีเคล็ดลับอะไรบ้างในการสร้างแบบจำลองห้องต่างๆ ที่มีการโต้ตอบกับห้องอื่นๆ ทางเหนือ ใต้ ตะวันออก และตะวันตกของห้องที่ผู้เล่นอยู่ในปัจจุบัน (หวังว่าฉันจะชัดเจนเพียงพอ หากคุณต้องการคำชี้แจง ฉันจะตอบทุกคำถาม) ขอย้ำอีกครั้ง ฉันกำลังมองหาคำแนะนำที่จะเน้นความคิดของฉัน ไม่ใช่วิธีการที่สมบูรณ์ นอกจากนี้ ฉันยังได้ตั้งค่าคลาสและอินเทอร์เฟซสำหรับห้องต่างๆ ไว้แล้ว


person LMAR1093    schedule 27.02.2013    source แหล่งที่มา


คำตอบ (1)


นี่เป็นกรณีการใช้งานที่น่าสนใจ Model-View-Controller pattern พบเห็นได้บ่อยที่สุดในเว็บแอปพลิเคชัน แต่คุณสามารถทำให้มันใช้ได้กับเกมแบบข้อความได้อย่างแน่นอน

รุ่น

ในเลเยอร์โมเดล เราจะมีเอนทิตี -- User และ Room

ตัวควบคุม

คอนโทรลเลอร์จะแยกวิเคราะห์อินพุต อัปเดตโมเดล และส่งข้อมูลที่จำเป็นสำหรับมุมมอง ดังนั้นเมื่ออินพุต 'ตะวันออก' รหัสตัวควบคุมตัวอย่างอาจเป็น:

User user = User.current();
Room east = user.getRoom().getEast();
user.move(east);
render(east);

ดู

วิธีการเรนเดอร์จะใช้ห้องใหม่เป็นอาร์กิวเมนต์ และอาจแยกวิเคราะห์เทมเพลตบางประเภทที่แสดงชื่อและคำอธิบายของห้องใหม่

หวังว่านี่จะช่วยได้ โดยส่วนตัวแล้วฉันจะใช้ รูปแบบคำสั่ง ในกรณีนี้โดยเฉพาะ

person Mirko Adari    schedule 27.02.2013
comment
ฉันคิดว่าฉันเห็นสิ่งที่คุณกำลังทำอยู่ จากสิ่งที่ฉันเข้าใจ คอนโทรลเลอร์จะเป็นผู้ฟังปุ่มต่างๆ ในเกม ขึ้นอยู่กับว่ากดปุ่มใด คอนโทรลเลอร์จะดำเนินการตามนั้น จากนั้นห้องใหม่จะแสดงในมุมมองหรือ GUI ฉันจะเริ่มต้นด้วยการกำหนดเส้นทางไปยังทางออก จากนั้นจึงเพิ่มห้องอื่นๆ เมื่อเส้นทางที่กำหนดใช้งานได้ ฉันคิดว่าฉันมีความคิดที่ดีว่าจะเริ่มต้นที่ไหนขอบคุณ - person LMAR1093; 28.02.2013
comment
นอกจากนี้รูปแบบคำสั่งยังดูน่าสนใจทีเดียวและดูเหมือนจะเข้าใจง่ายกว่าเล็กน้อยในความคิดของฉัน ฉันจะตรวจสอบเพิ่มเติมอีกเล็กน้อยและดูว่านั่นจะเป็นแนวทางที่ดีที่สุดสำหรับเรื่องนี้หรือไม่ - person LMAR1093; 28.02.2013