कंप्यूटर गेम एक अंतहीन लूप है:
- अपडेट: खेल को एक छोटे समय के स्लाइस के रूप में आगे बढ़ाएं (जैसे 1/80 सेकंड)।
- वर्तमान खेल स्थिति पेंट करें।
इनकी विविधताएँ हैं। कुछ खेलों में प्रत्येक पेंट के बीच अधिक अपडेट होते हैं, या यह उन्हें अलग-अलग मशीनों पर गेम के प्रवाह को समान रूप से सुचारू बनाने के लिए अलग-अलग कर सकता है। लेकिन वह तकनीकी विवरण है।
अद्यतन चरण जो प्रत्येक सेकंड में 50 और 100 बार होता है (हाँ ऐसा अक्सर होता है)
- खेल भौतिकी अद्यतन करें। कहते हैं कि एक अभिनेता का एक वेग होता है। अद्यतन उसे सही दिशा में एक छोटे से कदम चाहिए। इसके अलावा, यदि आप एक भौतिकी इंजन का उपयोग करते हैं, तो इसे अन्य एक्टोस या बाधाओं के साथ टकराव की जांच करनी चाहिए।
- गेम के नियमों को अपडेट करें। यह वही है जो इसे एक खेल बनाता है न कि एक भौतिकी प्रयोग। बतादें कि एक गोली खिलाड़ी अभिनेता को लगी। खेल के नियम खिलाड़ी को स्वास्थ्य के X अंक और अनिष्ट करने के लिए गोली से कटौती करने के लिए कहते हैं।
- ऐ अपडेट। कभी-कभी कंप्यूटर नियंत्रित अभिनेताओं को यह बताना चाहिए कि क्या करना चाहिए। बाएं या दाएं जाएं? एक अच्छी जगह होने के लिए एक रास्ता खोजें। एक हथियार आग।
- इनपुट नियंत्रण कीबोर्ड पर दबाए गए बटन के अनुसार खिलाड़ी अभिनेता को अपडेट करें।
- अद्यतन दृश्य ग्राफ। यह एक एनीमेशन को एक कदम आगे बढ़ा सकता है, या यह दिखाने के लिए GUI को अपडेट कर सकता है कि खिलाड़ी के पास अब 10 अंक कम स्वास्थ्य है। यह केवल उद्देश्य है कि खेल को देखो और अच्छा महसूस करो।
कहां से शुरू करें?
ग्राफिकल गेम के लिए मूल आवश्यकता ग्राफिक्स प्रोग्राम करना है। सुनिश्चित करें कि आप एक खिड़की खोल सकते हैं, और इसमें एक गेंद खींच सकते हैं।
मुझे लगता है कि आप कुछ प्रकार की कक्षाएं बना सकते हैं। बॉल क्लास बनाओ। इसके सदस्य निम्नलिखित हैं: x, y, deltaX, deltaY। सभी पूर्णांक और पिक्सेल स्केल में हैं। अब, इस लूप को लिखें।
forever, do this {
start measure time (in milliseconds)
//physics part
add deltaX to x
add deltaY to y
if x is bigger than the screen width, assign -deltaX to deltaX
if y is bigger than the screen height, assign -deltaY to deltaY
if x is less than 0, assign -deltaX to deltaX
if y is less than 0, assign -deltaY to deltaY
//paint
paint the ball at x, y
stop measuring time, assign this to workTime
make the thread sleep for (25 - workTime) milliseconds
}
यह खिड़कियों की सीमाओं की गेंद को उछाल देगा। यह अभी तक एक खेल नहीं है , बल्कि एक शारीरिक सिमुलेशन है। यदि आप बॉल क्लास के अंदर बॉल्स फिजिक्स अपडेट लिखते हैं, तो कई बॉल्स को जोड़ना आसान है। उन्हें एक सूची में संग्रहीत करें और प्रत्येक फ्रेम के लिए प्रत्येक को अपडेट करें और पेंट करें।
आप एक चप्पू जोड़ सकते हैं (इसके लिए भौतिकी का अनुकरण कर सकते हैं और इसे माउस या कीबोर्ड से नियंत्रित कर सकते हैं) और एक गेम उद्देश्य जैसे कि गेंद को बाईं दीवार तक पहुंचने से रोकना। यदि खेल समय के साथ अधिक से अधिक गेंदों को जोड़ता है, तो कठिनाई बढ़ जाएगी। आपके पास एक खेल है।
(25 - वर्कटाइम) मिलीसेकंड के लिए क्यों सोते हैं ? यदि आप इसे इस तरह करते हैं, तो सिमुलेशन प्रति सेकंड 40 अपडेट और पेंट की गति से चलेगा। यह काफी चिकना होगा। यदि आप नींद वाले हिस्से को छोड़ देंगे, तो एनीमेशन झटकेदार होगा, और 100% सीपीयू लेगा। इसके अलावा, गेंद की गति इसे चलाने वाली मशीन की गति पर निर्भर करेगी। अब, गेंद ऊर्ध्वाधर गति 40 * डेल्टा पिक्सेल प्रति सेकंड है।