डिजाइनिंग स्नेक ए.आई.


9

मैं इस gamedev स्टैकचेंज के लिए नया हूं लेकिन इससे पहले गणित और सीएस साइटों का उपयोग कर चुका हूं।

इसलिए, मैं 5 मिनट के राउंड में चार अन्य सांपों के साथ प्रतिस्पर्धा करने वाले सांप के लिए एआई बनाने की प्रतियोगिता में हूं, जहां नियम पारंपरिक नोकिया सांप के खेल की तरह हैं, सिवाय इसके कि पांच सांप हैं, बोर्ड 30x30 हैं और हैं मैदान पर कई छोटी बाधाएं।

नोकिया गेम की तरह, फल मिलने पर आपका साँप बढ़ता है और यदि आप अपने आप में दुर्घटनाग्रस्त हो जाते हैं, तो एक और साँप या आपकी मृत्यु हो जाती है। गेम चालों के बीच 30ms देरी से चलता है और सर्वर हर 50ms में नया गेम स्टेट भेजता है जिसे कोड का विश्लेषण करना चाहिए और अगले कदम पर क्या नहीं और क्या आउटपुट करना चाहिए।

विजेता सांप है, जिसकी खेल में किसी भी बिंदु पर सबसे लंबी लंबाई थी। टाई ब्रेकर को मारकर तय किए जाते हैं।

अब तक मैंने जो कुछ किया है, वह यह निर्धारित करने के लिए प्रत्येक साँप से ए * ग्राफ खोज लागू किया जाता है कि क्या मेरा साँप सेब के सबसे करीब है और यदि यह है, तो यह सेब के लिए जाता है। अन्यथा, मैंने बोर्ड के खाली क्षेत्र को निर्धारित करने के लिए एक साफ सा एल्गोरिथ्म बनाया, जो कि मेरा सांप अगले सेब का अनुमान लगाने के लिए जाता है।

इसके अलावा मेरे पास यह सुनिश्चित करने के लिए कुछ छोटे बचे हुए चेक हैं कि मेरा सांप एक जाल में नहीं चल रहा है कि यह बाहर नहीं निकल सकता है और यदि यह अटक जाता है, तो मुझे इसे बाहर निकलने का बेहतर मौका देने के लिए कुछ करना होगा।

...

वैसे भी, मैंने एक परीक्षण सर्वर पर अपने साँप का परीक्षण किया है और यह काफी अच्छी तरह से करता है। आम तौर पर, केवल सेब के लिए जाने की मेरी रणनीति जब इसकी एक निश्चित चीज होती है और जब कोई अन्य सांपों की तुलना में यह तेजी से बढ़ता है तो कुछ नहीं मिलता है (कुछ सांप भी इसी तरह काम करते हैं, लेकिन अक्सर मध्य या एक कोने में जाते हैं) कभी-कभी यह जीत जाता है ये परीक्षण खेल लेकिन अक्सर उसी साँप द्वारा नहीं पीटे जाने से अधिक होते हैं जो लगता है कि जीवित रहने पर बढ़त है (मेरा साँप जल्दी बढ़ता है लेकिन फिर किसी तरह मर जाता है और यह दूसरा साँप धीरे-धीरे साथ चलता है और निरंतरता पर जीतता है।

इसलिए मैं किसी भी विचार के बारे में सोच रहा था कि किसी को भी मेरे साँप को सुधारने की कोशिश करनी होगी। या शायद एक नए दृष्टिकोण पर विचार करने के लिए। मेरे कार्य और कक्षाएं अच्छे हैं, इसलिए जो बदलाव कठोर लग सकते हैं, वे बहुत बुरे नहीं होने चाहिए। मैं सभी विचारों को प्रोत्साहित करता हूं।

कोई विचार?

जवाबों:


5

एक अच्छी रक्षात्मक रणनीति एक सही आकार करने के लिए हो सकती है (इसलिए आपके सिर और पीठ हमेशा एक दूसरे से 1 स्थान दूर हैं, और आप अपनी पूरी लंबाई में एक पूर्ण वर्ग बनाते हैं या जो भी संभव है), यह आपको बहुत अधिक बना देगा। अमर कोई सांप कभी भी आपके संलग्न क्षेत्र में नहीं जा सकता है और आप कभी भी अपने आप में नहीं दौड़ेंगे (जब तक कि कोई सेब आपके मुंह में नहीं जाता है, लेकिन मुझे लगता है कि अगर कोई जगह नहीं है तो यह असंभव है)।

यह ऐसा करता है यदि सेब वास्तव में आपके संलग्न क्षेत्र में दिखाई देता है तो आपको इसके लिए न जाने के लिए प्रोग्राम किया जा सकता है और अन्य सांप संभवतः इसे प्राप्त करने की कोशिश कर रहे हैं, तो कुछ समय बीतने के बाद आप इसे संक्रमण के लिए इस तरह से प्राप्त कर सकते हैं संभव के रूप में अपने आकार में वापस सबसे अच्छा (एक मुश्किल एल्गोरिथ्म का एक सा हो सकता है लेकिन संभव लगता है)

सेब के लिए जाने पर बस यह निर्भर करेगा कि वे कितने दूर हैं, हो सकता है कि अगर आप किसी अच्छे मार्जिन से सबसे करीब हैं, तो आप इसके लिए जा सकते हैं, लेकिन अन्यथा रूढ़िवादी रहें, कहना मुश्किल है कि शायद परीक्षण और त्रुटि के आधार पर इसे मोड़ने की आवश्यकता होगी। , लेकिन मुझे लगता है कि यह एक अच्छी रणनीति होगी।


1
तो मूल रूप से, उसका "साँप" "कछुए" होना चाहिए। xD +1 अच्छा विचार है।
साइप्रो

अच्छा था। लेकिन बोर्ड में बाधाएं हैं। तो, अन्य सांप प्रोग्रामर ने यह जांचने के लिए अपने सांपों को बनाया होगा कि क्या कोई बाधा है (क्या दीवार या अन्य सांप सेब को घेरते हैं)। वे आकर बस मर नहीं सकते। इस समस्या से बचने के लिए एक बात यह हो सकती है कि सिर और पूंछ के बीच कुछ काफी अंतर हो।
शास्वत

हम्म दिलचस्प विचार, मुझे लगता है कि मैं इस तरह के लिए कुछ लागू कर सकता हूं जब मेरा सांप बस अगले सेब के लिए इंतजार करने के लिए चारों ओर लटका हुआ है .. हाहा, मैं अपने मुंह में सेब के अंडे के बारे में थोड़ा चिंतित हूं, जिससे कुछ निश्चित होगा मृत्यु और ये खेल एक असामयिक मौत से तय नहीं होते हैं
रॉब सिप

@ रोनाल्ड वास्तव में यदि आप अपने मुंह में सेब के छिलके का पता लगाते हैं, तो आप अंदर की ओर और पीछे की ओर मुड़ सकते हैं और जारी रख सकते हैं, क्योंकि एआई में एकदम सही रिफ्लेक्स होता है, इसे लागू करने के तरीके के आधार पर वास्तव में उपाय करना आसान है (और खुद को ठीक भी कर सकते हैं)।
केविन डिग्रालिया

0

सांप को अपनी रणनीति को अपनी वर्तमान लंबाई के अनुकूल बनाना चाहिए।

एक बहुत लंबा सांप अपने शरीर का उपयोग विरोधियों को मारने के लिए कर सकता है। इसका मतलब है कि यह एक दीवार के साथ एक मुहर बनाना चाहिए।

अगर सांप पूर्व की ओर यात्रा कर रहा है, तो एक सेब उत्तर-पूर्व के साथ, उत्तर की ओर मुड़ने से पहले उसे दीवार तक जाना चाहिए, इसलिए अन्य सांपों के लिए संभावित मार्ग गंभीर रूप से सीमित हैं।

  0123456789
a ··········
b ··········
c ········A·
d ··········
e ooooooC···
f o·········
g o·········
h oooooooo··
i ··········
j ··········

सिर C वाला यह सांप ई 8 में उत्तर की ओर मुड़ना चाहिए, न कि ई 8 पर, ताकि इसके नीचे का कोई भी प्रतिद्वंद्वी फंस जाए, और 'ई' लाइन के ऊपर स्पॉन पाने वाले किसी भी सेब को खाने में असमर्थ हो।

जितना बड़ा क्षेत्र आप काट सकते हैं और जितना अधिक आप इसे पकड़ सकते हैं, उतना बेहतर होगा।

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