खेल लूप के अंदर खेल को रोकना


12

गेम लूप के अंदर, खेल को P दबाकर रोका जाता है, जिसका अर्थ है कि गेम लूप अब नहीं चलता है। समस्या यह है कि इस लूप को रोकने के बाद, लूप को फिर से शुरू करने के लिए P को फिर से दबाया नहीं जा सकता है, क्योंकि यह लूप के अंदर ही था। इसे कैसे बनाया जाए ताकि जब पी फिर से दबाया जाए तो यह फिर से काम करता है?

जवाबों:


20

वास्तव में खेल को रोकते समय गेम लूप को बंद न करें। इसके बजाय, आपको बूल वैरिएबल को जोड़ना होगा, जो कि गेम पॉज़ होने के आधार पर सही / गलत में बदल जाता है। यदि गेम रोका गया है, तो आपको केवल गेम को अपडेट करना बंद करना होगा, लेकिन आप अभी भी इनपुट से अपडेट प्राप्त करने सहित वर्तमान फ्रेम को प्रस्तुत कर सकते हैं।

if(gameIsPaused == false)
{
    // run updates
}
checkInput();
render();

आप checkInputरुके हुए मोड और बिना रुके मोड के लिए एक अलग फ़ंक्शन करना चाहते हैं , क्योंकि कुछ नियंत्रण हो सकते हैं जो केवल एक मोड या दूसरे में उपलब्ध हैं। checkInputरुके हुए मोड के लिए समारोह अगर देख से ज्यादा कुछ नहीं कर सकता Pदबाया जाता है और फिर सेट gameIsPaused = false, लेकिन कुछ खेल भी अतिरिक्त रोकें स्क्रीन पर कार्यक्षमता जगह (90 के दशक में यह धोखा कोड के लिए छिपा इनपुट के रूप में रोकें स्क्रीन के लिए लोकप्रिय, आधुनिक था यह एक मेनू स्क्रीन के साथ गठबंधन की तरह खेल)।
फिलिप

1
हालांकि आम तौर पर मैं आपके उत्तर से सहमत होता हूं, मुझे लगता है कि यह स्पष्ट रूप से कहा जाना चाहिए कि कभी-कभी यह रुके हुए राज्य के भीतर कुछ अपडेट चलाने के लिए पूरी तरह से मान्य है । उदाहरण के लिए, मेनू आइटम या शायद कुछ ऑडियो प्रबंधन को एनिमेट करना। बड़ा विचार यह है कि ठहराव की स्थिति आपको checkInput/ render/ updateकॉल के किसी अन्य सेट में शाखा करने की अनुमति देती है ।
निकोलस मिलर

खेल को रोकने वाली एकमात्र चीज यह होनी चाहिए कि "अपडेट वर्ल्ड" बिट को छोड़ दिया जाना चाहिए। अन्य सभी कार्यक्षमता को संभवतः सामान्य रखना चाहिए।
मूविंग डक

4
मैंने उत्तर को यथासंभव सरल रखने की कोशिश की, क्योंकि यह गेम प्रोग्रामिंग में बहुत ही मूल सामग्री है और मैंने प्रश्नकर्ता को भ्रमित करने के लिए नहीं किया।
काटू

1
@ user3730788: खेल लूप के अनुसार एक बार निष्पादित होने वाली शाखा (यानी प्रति सेकंड 100 बार से कम) का कोई भी प्रदर्शन प्रभाव नहीं होगा, भले ही यह हर बार गलत तरीके से न हो ।
इल्मरी करोनें

1

इसे ऐसा करें कि पी स्विच को एक और लूप में दबाएं जो गेम स्टेट "पॉस्ड" को हैंडल करता है और पी को फिर से दबाकर मूल गेम लूप में वापस संक्रमण करने की अनुमति देता है।

आप वास्तव में गेम लूप में यह सब डाल सकते हैं और यदि आप चाहते हैं और लूप को बंद करने के बजाय, लूप के भीतर संबंधित राज्य-विशिष्ट कोड के निष्पादन के बीच स्टेट वैरिएबल को चालू करते हैं, तो आप स्टेट वेरिएबल को पेश कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.