मैं एक साधारण गेम डिज़ाइन कर रहा हूं, जो जावा 2 डी और न्यूटनियन भौतिकी का उपयोग करता है। वर्तमान में अपने मुख्य "खेल लूप" तरह दिखता है:ओओओ तरीके से गेम डिज़ाइन
do {
for (GameEntity entity : entities) {
entity.update(gameContext);
}
for (Drawable drawable : drawables) {
drawable.draw(graphics2d);
}
} while (gameRunning);
जब एक इकाई ही अद्यतन करने के लिए यह वर्तमान बलों पर लागू किए गए के आधार पर इसकी गति और स्थिति को समायोजित करेगा के निर्देश दिए है। हालांकि, मुझे अन्य व्यवहारों को प्रदर्शित करने के लिए संस्थाओं की आवश्यकता है; जैसे अगर किसी खिलाड़ी द्वारा "बुरा लड़का" गोली मार दी जाती है तो इकाई को नष्ट कर दिया जाना चाहिए और खेल की दुनिया से हटा दिया जाना चाहिए।
मेरा प्रश्न: ऑब्जेक्ट उन्मुख तरीके से इसे प्राप्त करने का सबसे अच्छा तरीका क्या है? मैंने जिन उदाहरणों को अब तक देखा है, वे Game
जैसे कुछ गॉड क्लास में गेम लूप को शामिल करते हैं, जो चरणों को करता है: टकराव का पता लगाएं, चेक-अगर-खराब-लड़के की हत्या, चेक-अगर-प्लेयर-मारे गए, को दोबारा डालें , आदि और सभी खेल राज्य encapsulates (शेष जीवन, आदि)। दूसरे शब्दों में, यह बहुत प्रक्रियात्मक और सभी तर्क गेम क्लास में है। क्या कोई बेहतर दृष्टिकोण की सिफारिश कर सकता है?
विकल्प यहां मैं अब तक के बारे में सोचा गया है कर रहे हैं:
- प्रत्येक इकाई है जहाँ से इकाई में ही निकाल सकते हैं यदि आवश्यक हो या अद्यतन खेल राज्य के लिए एक
GameContext
दर्रा (जैसे करने के लिए "नहीं चल" अगर खिलाड़ी मारे गए)। - केंद्र
Game
कक्षा में श्रोता के रूप में प्रत्येकGameEntity
पंजीकृत करें और एक ईवेंट उन्मुख दृष्टिकोण लें; जैसे एक टक्कर के परिणामस्वरूपCollisionEvent
टक्कर में दो प्रतिभागियों को निकाल दिया जाएगा।
मुझे लगता है कि मैं अपने बग मिला - यह 'है, जबकि (gameRunning)' तुम वहाँ चाहते हैं –