Scriptbot वारज़!
परिणाम में हैं और हत्यारे हमारे चैंपियन हैं, 3 में से 2 मैच जीत रहे हैं! उन सभी को धन्यवाद जिन्होंने अपने स्क्रिप्टबोट्स को प्रस्तुत किया! बेस्टऑक्टुनिटीबोट के लिए सींगों के लिए विशेष धन्यवाद जिसने उत्कृष्ट पथ प्रदर्शन किया और सभी कार्रवाई विकल्पों का पूरा उपयोग किया।
नक्शा 1
हत्यारे ने बेस्टऑक्टुनिटीबोट को जल्दी से निकाल लिया, और बाकी मैच काफी उबाऊ थे। यहां विस्तृत प्ले-बाय-प्ले।
- हत्यारे: 10 एचपी, 10 डैमेज डील, 3 डैमेज टेकन
- द एवरर v3: 10 एचपी, 0 डैमेज डील, 0 डैमेज टेकन
- गोटा खत्म खाना: 10 एचपी, 0 नुकसान निपटा, 0 नुकसान लिया
- बेस्टऑक्युनिटीबॉट: 0 एचपी, 3 डैमेज डील, 10 डैमेज टेकन
नक्शा 2
बेस्टऑफट्यूनिटीबोट ने इस मैच में अधिकांश काम किया, लेकिन हत्यारा उसे अंत में बाहर ले जाने में सक्षम था। यहां विस्तृत प्ले-बाय-प्ले।
- हत्यारा: 2 एचपी, 10 डैमेज डील, 9 डैमेज टेकन
- बेस्टऑक्युनिटीबॉट: 0 एचपी, 32 डैमेज डील, 10 डैमेज टेकन
- अवॉइडर्स वी 3: 0 एचपी, 0 डैमेज डील, 12 डैमेज टेकन
- गोटा खत्म खाना: 0 एचपी, 0 नुकसान निपटा, 11 नुकसान लिया
नक्शा 3
इस मैच पर बेस्टऑफट्यूनिटीबोट ने सभी को जाल में धकेल दिया। बहुत ही शांत। यहां विस्तृत प्ले-बाय-प्ले।
- बेस्टऑक्युनिटीबॉट: 10 एचपी, 30 डैमेज डील, 0 डैमेज टेकन
- हत्यारा: 0 एचपी, 0 नुकसान की डील, 0 नुकसान लिया
- गोटा खत्म खाना: 0 एचपी, 0 नुकसान निपटा, 0 नुकसान लिया
- द एवरर v3: 0 एचपी, 0 डैमेज डील, 0 डैमेज टेकन
आपके उत्तर के लिए धन्यवाद! चूंकि सिर्फ 4 स्क्रिप्टबॉट्स हैं, इसलिए हम तीन फ्री-फॉर-ऑल मैचों के लिए टूर्नामेंट की योजना को छोड़ रहे हैं, जिनमें से प्रत्येक नक्शे पर है। सबसे ज्यादा जीत की रिकॉर्ड जीत के साथ स्क्रिप्टबोट। एक टाई होने की स्थिति में, हम अचानक मृत्यु में प्रवेश करेंगे जिसमें स्क्रिप्टबोट जो टाई को तोड़ता है, पहले जीतता है।
आपका कार्य, क्या आपको इसे स्वीकार करना चाहिए, एक स्क्रिप्टबोट को कोड करना है जो एएससीआईआई के नक्शे को पार कर सकता है और अपने विरोधियों को नष्ट कर सकता है। प्रत्येक लड़ाई एक रैंडम-स्टार्टिंग-ऑर्डर-टर्न-आधारित गेम का रूप लेगी जहां प्रत्येक स्क्रिप्टबोट को कार्रवाई करने के लिए अपने ऊर्जा बिंदु (ईपी) खर्च करने का मौका मिलता है। गेममास्टर स्क्रिप्ट इनपुट को फ़ीड करेगा, और प्रत्येक स्क्रिप्टबोट से आउटपुट की व्याख्या करेगा।
वातावरण
प्रत्येक स्क्रिप्टबोट अपनी स्वयं की निर्देशिका में सम्मिलित है जहां यह फाइलों से पढ़ सकता है mapऔर statsफ़ाइल को पढ़ / लिख dataसकता है। dataफ़ाइल किसी भी लगातार आपके लिए उपयोगी जानकारी स्टोर करने के लिए हो सकता है इस्तेमाल किया जा सकता।
आँकड़े फ़ाइल
statsफ़ाइल अपने विरोधियों के बारे में जानकारी है और इस प्रारूप में है। प्रत्येक खिलाड़ी को एक अलग पंक्ति में दर्शाया गया है। पहला कॉलम प्लेयर आईडी ( @मतलब आप) है। दूसरा कॉलम उस खिलाड़ी का स्वास्थ्य है।
1,9HP
@,10HP
3,9HP
4,2HP
नक्शा फ़ाइल
mapफ़ाइल कुछ इस तरह लग सकता है ...
####################
# # # #
# 1 # # 2 #
# #
### ###
# #
# # #
# # ! #
# # #
# !#### #
# ####! #
# # #
# ! # #
# # #
# #
### ###
# #
# 3 # # @ #
# # # #
####################
... या यह...
######################################
# # 1 # @ #
# # # #! #
# # # #### #
# # # # # !#! #
# # # # # ##### #
# ### # #### # # #
# # #! ### # #
# ###### # # # ##### #
# #! # ###### # !# #
# ### # # # #
# # 2 # # 4 # #
######################################
... या यह...
###################
###!!!!!!#!!!!!!###
##! !##
#! 1 ! 2 !#
#! ! !#
#! !#
#! !#
#! !!! !#
## !! !!! !! ##
#! !!! !#
#! !#
#! !#
#! ! !#
#! 3 ! @ !#
##! !##
###!!!!!!#!!!!!!###
###################
... या यह बिल्कुल अलग लग सकता है। किसी भी तरह से, उपयोग किए गए वर्ण और उनके अर्थ समान रहेंगे:
#एक दीवार, अगम्य और अभेद्य।1,2,3... एक नंबर एक दुश्मन खिलाड़ी का प्रतिनिधित्व। ये नंबरstatsफाइल में प्लेयर आईडी से मेल खाते हैं ।!एक जाल। इन स्थानों पर जाने वाले स्क्रिप्टबोट तुरंत मर जाएंगे।@आपका स्क्रिप्टबोट का स्थान।खुली जगह जिसे आप अंदर घुमाने के लिए स्वतंत्र हैं।
गेमप्ले
GameMaster स्क्रिप्ट Scriptbots के लिए एक यादृच्छिक प्रारंभिक आदेश देगी। स्क्रिप्टबोट्स को तब इस क्रम में लागू किया जाता है जबकि वे अभी भी जीवित हैं। स्क्रिप्टबॉट्स में 10 हेल्थ पॉइंट्स (एचपी) हैं, और प्रत्येक मोड़ पर 10 एनर्जी पॉइंट्स (ईपी) के साथ शुरू करते हैं, जिसका उपयोग वे स्थानांतरित करने या हमला करने के लिए कर सकते हैं। प्रत्येक मोड़ की शुरुआत में, एक स्क्रिप्टबोट एक एचपी के लिए चंगा करेगा, या एक अतिरिक्त ईपी प्रदान किया जाएगा यदि पहले से ही 10 एचपी (इस प्रकार चल रहा हो तो कई बार एक व्यवहार्य रणनीति हो सकती है)।
लड़ाई तब समाप्त होती है जब केवल एक स्क्रिप्टबोट बच जाती है या जब 100 मोड़ बीत चुके होते हैं। यदि एक लड़ाई के अंत में कई स्क्रिप्टबॉट्स जीवित हैं, तो उनका स्थान निम्नलिखित मानदंडों के आधार पर निर्धारित किया जाता है:
- अधिकांश स्वास्थ्य।
- सबसे ज्यादा नुकसान निपटा।
- सबसे ज्यादा नुकसान हुआ।
Scriptbot इनपुट
गेममास्टर लड़ाई के नक्शे को एक फ़ाइल में प्रिंट करेगा जिसका नाम mapस्क्रिप्टबोट होगा जिसमें से पढ़ने के लिए एक्सेस होगा। नक्शा कोई भी रूप ले सकता है, इसलिए यह महत्वपूर्ण है कि स्क्रिप्टबोट इसकी व्याख्या करने में सक्षम हो। ईपी का संकेत देने वाले एक पैरामीटर के साथ आपका स्क्रिप्टबोट मंगवाया जाएगा। उदाहरण के लिए...
:> example_scriptbot.py 3
जब तक वह अपने ईपी या की एक अधिकतम के सभी खर्च करता है Scriptbot द्वारा सक्रिय किया जाएगा 10 11 बार। प्रत्येक आह्वान से पहले नक्शा और आँकड़े फ़ाइलें अद्यतन की जाती हैं।
स्क्रिप्टबोट आउटपुट
स्क्रिप्टबोट्स को स्टाउट के लिए अपने कार्यों का उत्पादन करना चाहिए। संभावित कार्यों की एक सूची इस प्रकार है:
MOVE <DIRECTION> <DISTANCE>लागत 1 ईपी प्रति
DISTANCE।MOVEआदेश नक्शा चारों ओर अपने Scriptbot ले जाता है। यदि दीवार या किसी अन्य स्क्रिप्टबोट जैसे रास्ते में कुछ है, तो गेममास्टर आपके स्क्रिप्टबोट को यथासंभव आगे बढ़ाएगा। अगरDISTANCEस्क्रिप्टबॉट के शेष ईपी से अधिक दिया जाता है, तो गेममास्टर स्क्रिप्टबोट को स्थानांतरित करेगा जब तक कि उसका ईपी बाहर नहीं निकल जाता है।DIRECTIONके किसी भी कम्पास दिशा में हो सकता हैN,E,S, याW।PUSH <DIRECTION> <DISTANCE>लागत 1 ईपी प्रति
DISTANCE।PUSHआदेश एक और Scriptbot स्थानांतरित करने के लिए एक Scriptbot सक्षम बनाता है। स्क्रिप्ट जारी करने वाले स्क्रिप्टबोट को सीधे धक्का दिया जा रहा है। यदि स्क्रिप्टबॉट को धकेले जाने वाली कोई वस्तु नहीं है तो दोनों स्क्रिप्टबोट संकेत दिए गए दिशा में आगे बढ़ेंगे।DIRECTIONऔर कमांड केDISTANCEलिए समान हैंMOVE।ATTACK <DIRECTION>एक ईपी का खर्च आता है।
ATTACKआदेश जारी करने Scriptbot करने और दिशा निर्दिष्ट में किसी भी Scriptbot को 1 क्षति सौदों सीधे अगले। कमांड केDIRECTIONलिए समान हैMOVE।PASSअपनी बारी समाप्त करता है।
समर्थित भाषाएँ
मेरे लिए इसे उचित रखने के लिए, मैं निम्नलिखित भाषाओं को स्वीकार करूंगा:
- जावा
- Node.js
- अजगर
- पीएचपी
आप उन पुस्तकालयों तक सीमित हैं जो आमतौर पर आपकी भाषाओं के साथ बॉक्स से बाहर हैं। कृपया मुझे अपना कोड काम करने के लिए अस्पष्ट पुस्तकालयों का पता न लगाएं।
सबमिशन और जजिंग
नीचे अपना Scriptbot स्रोत कोड पोस्ट करें और इसे एक अच्छा नाम दें! कृपया आपके द्वारा उपयोग की जाने वाली भाषा के संस्करण को भी सूचीबद्ध करें। सभी स्क्रिप्टबॉट्स की समीक्षा टोमफूलरी के लिए की जाएगी ताकि कृपया अच्छी तरह से टिप्पणी करें और अपने कोड को बाधित न करें।
आप एक से अधिक प्रविष्टि जमा कर सकते हैं, लेकिन कृपया उन्हें पूरी तरह से अद्वितीय प्रविष्टियाँ दें, और एक ही प्रविष्टि के संस्करण नहीं। उदाहरण के लिए, आप एक ज़र्गे रश बॉट और गोरिल्ला वारफेयर बॉट को कोड करना चाह सकते हैं। कोई बात नहीं। Zerg रश v1, Zerg रश v2, आदि पोस्ट न करें।
7 नवंबर को मैं सभी उत्तरों को एकत्र करूंगा और जो प्रारंभिक समीक्षा पास करेंगे उन्हें एक टूर्नामेंट ब्रैकेट में जोड़ा जाएगा। चैंपियन को स्वीकृत जवाब मिलता है। आदर्श ब्रैकेट नीचे दिखाया गया है। चूंकि संभवतः 16 प्रविष्टियाँ नहीं होंगी, इसलिए कुछ कोष्ठक केवल तीन या दो बॉट हो सकते हैं। मैं यथासंभव यथासंभव कोष्ठक बनाने की कोशिश करूंगा। किसी भी आवश्यक पक्षपात (इस घटना में कि उदाहरण के लिए एक अलविदा सप्ताह की आवश्यकता होती है) उन बॉट्स को दिया जाएगा जो पहले जमा किए गए थे।
BOT01_
BOT02_|
BOT03_|____
BOT04_| |
|
BOT05_ |
BOT06_|___ |
BOT07_| | |
BOT08_| | |_BOT ?_
|___BOT ?_|
BOT09_ ___BOT ?_|___CHAMPION!
BOT10_| | _BOT ?_|
BOT11_|__| |
BOT12_| |
|
BOT13_ |
BOT14_|____|
BOT15_|
BOT16_|
क्यू एंड ए
मुझे यकीन है कि मैंने कुछ विवरण याद किए हैं, इसलिए प्रश्न पूछने में संकोच न करें!
क्या हमें भरोसा है कि एक मानचित्र फ़ाइल हमेशा # प्रतीकों से घिरी रहती है? यदि नहीं, तो उस घटना में क्या होता है कि कोई बॉट नक्शे से चलने का प्रयास करता है? - ब्रेनसेल
हां नक्शा हमेशा # से घिरा होगा और आपकी स्क्रिप्टबॉट इन सीमाओं के अंदर शुरू हो जाएगी।
यदि PUSH कमांड में निर्दिष्ट दिशा में कोई बॉट मौजूद नहीं है, तो कमांड कैसे कार्य करता है? - ब्रेनसेल
गेममास्टर कुछ नहीं करेगा, शून्य ईपी खर्च किया जाएगा, और स्क्रिप्टबोट को फिर से बुलाया जाएगा।
क्या अप्रयुक्त ईपी जमा होता है? - झगड़ा
नहीं। प्रत्येक स्क्रिप्टबोट 10 ईपी के साथ गोल / बारी शुरू करेगा। खर्च नहीं किया गया कोई भी ईपी बेकार जाएगा।
मुझे लगता है कि मुझे यह मिल गया है, लेकिन केवल स्पष्ट करने के लिए: बॉट्स ए और बी के साथ, ए @ 10EP-> MOVE MUP_UPDATE B @ 10EP-> PUSH MAP_UPDATE A @ 9EP>> ATTACK MAP_UPDATE B @ 9EP-> का क्रम है। ATTACK ..., या A @ 10EP-> MOVE A @ 9EP-> ATTACK ... MAP_UPDATE B @ 10EP-> PUSH B @ 9EP-> ATTACK ... MAP_UPDATE? दूसरे शब्दों में, क्या सभी कार्रवाई एक नियंत्रक-बॉट क्वेरी लूप परमाणु में होती है? यदि हां, तो लूप क्यों? सभी कार्यों को पूरा करने के साथ एक भी फाइल क्यों नहीं लौटाते? अन्यथा बॉट्स को मल्टी-एक्शन दृश्यों पर नज़र रखने के लिए अपनी खुद की राज्य फ़ाइलों को लिखना होगा। नक्शा / आँकड़े फ़ाइल केवल पहली कार्रवाई से पहले मान्य होगी। - सीओटीओ
आपका दूसरा उदाहरण करीब है, लेकिन बिल्कुल सही नहीं है। एक मोड़ के दौरान, स्क्रिप्टबॉट को बार-बार आह्वान किया जाता है जब तक कि उनका ईपी खर्च नहीं किया जाता है, या अधिकतम 11 बार। प्रत्येक आह्वान से पहले नक्शा और आँकड़े फ़ाइलें अद्यतन की जाती हैं। लूप उस घटना में उपयोगी है जो एक बॉट अमान्य आउटपुट देता है। गेममास्टर अमान्य आउटपुट से निपटेगा और बॉट को फिर से अनचेक करेगा, बॉट को गलती के लिए सही करने का मौका देगा।
आप परीक्षण के लिए GameMaster स्क्रिप्ट जारी करेंगे? - इचबिनकेनबम
गेममास्टर स्क्रिप्ट रिलीज़ नहीं होगी। मैं आपको अपने बॉट के व्यवहार का परीक्षण करने के लिए एक नक्शा और आँकड़े फ़ाइल बनाने के लिए प्रोत्साहित करूँगा।
अगर रोबोटा रोबोटबी को एक जाल में धकेलता है, तो रोबोटा को "नुकसान से निपटा" अंक के साथ श्रेय दिया जाता है, जो रोबोटबी के वर्तमान स्वास्थ्य के बराबर है? - माइक स्वीनी
हाँ, यह एक अच्छा विचार है। एक बॉट को किसी भी बॉट के स्वास्थ्य के बराबर क्षति अंक प्रदान किए जाएंगे जिसे वह जाल में धकेलता है।
#रहेगा और आपका स्क्रिप्टबॉट इन सीमाओं के अंदर शुरू हो जाएगा।
mapफाइल हमेशा#प्रतीकों से घिरा होता है? यदि नहीं, तो उस घटना में क्या होता है कि कोई बॉट नक्शे से चलने का प्रयास करता है?