खेल सकते हैं लात मारो!
हालांकि मोगी वर्तमान विजेता है, अगर कोई भी अपना ताज ले सकता है तो उन्हें ऐसा करने के लिए प्रोत्साहित किया जाता है
किक द कैन एक बच्चों का खेल है। एक रक्षक, और कई हमलावरों को शामिल करना। आज यह ऐसा खेल नहीं है! आपका काम एक बॉट लिखना है जो इसे खेलता है, जीतने के लिए, राजा-की-पहाड़ी शैली!
https://en.wikipedia.org/wiki/Kick_the_can
इस खेल में कुछ प्रमुख अंतर हैं। पहला मुख्य अंतर यह है कि खेल मल्टीप्लेयर (5v5) है। दूसरा महत्वपूर्ण अंतर यह है कि बॉट के दोनों सेट दोनों खानों और फेंके गए बमों से दुश्मन के खिलाड़ियों को मार सकते हैं और खत्म कर सकते हैं! बॉट पांच खानों से अधिक दूरी पर किसी भी खानों (दूरी की परवाह किए बिना) या खिलाड़ियों को नहीं देख सकते हैं!
नक्शा निम्नानुसार भूलभुलैया है।
इस भूलभुलैया को पहले गहराई से पुनरावर्ती बैकग्राउंडिंग एल्गोरिथ्म का उपयोग करके भूलभुलैया बनाने के द्वारा प्रक्रियात्मक रूप से उत्पन्न किया जाता है। और फिर दिखाए गए छिद्रों को अंदर रखकर (साथ ही भूलभुलैया को और अधिक "अपूर्ण" बना दें। भूलभुलैया 65x65 ब्लॉक चौड़ी है, और शून्य अनुक्रमित है। इस प्रकार नीला झंडा (कर सकते हैं) 1,1 पर है और लाल झंडा (कैन)) 63,63 पर। ब्लू टीम 2,2 और 3,3 4,4 इत्यादि में रेड टीम स्पॉन्ज 62,62 और 61,61, 60,60 आदि स्पैन में, सियान में ब्लॉक ब्लू टीम पर बॉट हैं, और मैजेंटा में ब्लॉक लाल बॉट हैं। खेल हमेशा पांच बनाम पांच होता है। टीम पर प्रत्येक बॉट आपके कोड का उपयोग करेगा (लेकिन अन्य उदाहरण चर को स्टोर कर सकता है (या स्थानीय फाइलें बना सकता है) राज्य और अलग-अलग भूमिकाओं का ट्रैक रखने के लिए।
गेमप्ले
माइन्स को रखा जा सकता है जैसा कि आप ग्रे रंग में देख सकते हैं। और बम को अधिकतम चार ब्लॉक तक दूरी पर फेंका जा सकता है। ये चार ब्लॉक तक दीवारों और अन्य खिलाड़ियों के माध्यम से यात्रा करते हैं जो केवल दुश्मनों की हत्या करते हैं जो आपके रास्ते में खड़े होते हैं। प्रत्येक चरण के बाद उनके पास गिरने का 40% मौका है। तो उनके पास १ रेंज का १००% मौका २ रेंज पर ६०% ३ रेंज में ३६% और तीन रेंज में २१.६% एक खदान रखने या बम फेंकने से एक टीम बारूद ले जाती है। यह 0 से शुरू होता है और नारंगी बक्से को इकट्ठा करके बढ़ाया जा सकता है। ध्यान दें कि इन बारूद के चार (4) आसानी से केंद्रित होंगे। बॉट्स दो लाल और दो नीले रंग की एक सरणी में पंक्तिबद्ध हैं। IE RRRRBBBBB। ध्वज को देखने की अनुमति है, लेकिन सावधान रहें कि ध्वज के पास होने (यानी पांच से कम ब्लॉक) के परिणामस्वरूप धीमापन आता है, और केवल गति की अनुमति देता है। हर तीन मोड़। अखाड़ा प्रत्येक मोड़ के लिए एक यादृच्छिक स्टार्टर चुनता है। मैं।
उद्देश्य
अपने पांच बॉट (प्रत्येक में एक ही वर्ग फ़ाइल) को सफलतापूर्वक नेविगेट करने के लिए प्रोग्राम करें और आकस्मिक रूप से खुद को कैन पर कदम रखने या खदान पर कदम न रखने के दौरान विरोध को छूने दें।
प्रोग्रामिंग
अखाड़ा और बॉट प्रविष्टियाँ वर्तमान में जावा में हैं लेकिन अन्य भाषाओं के लिए एक स्टडिन / आउट रैपर मौजूद है।
अखाड़ा कोड उपलब्ध कराया जाएगा, लेकिन यहां प्रासंगिक विवरण है।
बॉट क्लास
public class YourUniqueBotName extends Bot{
public YourUniqueBotName(int x , int y, int team){
super(x,y,team);
//optional code
}
public Move move(){//todo implement this method
//it should output a Move();
//A move has two paramaters
//direction is from 0 - 3 as such
// 3
// 2-I-0
// 1
// a direction of 4 or higher means a no-op (i.e stay still)
//And a MoveType. This movetype can be
//MoveType.Throw
//MoveType.Mine
//MoveType.Defuse defuse any mine present in the direction given
//MoveType.Move
}
}
प्रमुख विधियाँ उपलब्ध हैं
ध्यान दें कि डेटा को संशोधित करने या एक्सेस करने के लिए किसी भी तकनीक का उपयोग करने के लिए आपके पास आमतौर पर पहुंच की अनुमति नहीं है और इसके परिणामस्वरूप अयोग्यता होगी।
Arena.getAmmo()[team];//returns the shared ammo cache of your team
Arena.getMap();//returns an integer[] representing the map. Be careful since all enemies more than 5 blocks away (straight line distance) and all mines are replaced with constant for spaces
//constants for each block type are provided such as Bot.space Bot.wall Bot.mine Bot.redTeam Bot.blueTeam Bot.redFlag Bot.blueFlag
Arena.getAliveBots();//returns the number of bots left
getX();//returns a zero indexed x coordinate you may directly look at (but not change X)
getY();//returns a zero indexed y coordinate (y would work to, but do not change y's value)
//Although some state variables are public please do not cheat by accessing modifying these
StdIn / Out आवरण इंटरफ़ेस विशिष्टता
इंटरफ़ेस में दो मोड होते हैं: इनिशियलाइज़ेशन और रनिंग।
प्रारंभिक मोड के दौरान, एक एकल INIT फ्रेम को स्टडआउट के माध्यम से भेजा जाता है। इस फ्रेम का स्पेसिफिकेशन इस प्रकार है:
INIT
{Team Membership Id}
{Game Map}
TINI
कहां: {टीम सदस्यता आईडी} एक एकल चरित्र है: आर या बी बी का अर्थ ब्लू टीम, आर का अर्थ है लाल टीम।
{खेल का नक्शा} मानचित्र की एक पंक्ति का प्रतिनिधित्व करने वाले अस्सी पात्रों की पंक्तियों की एक श्रृंखला है। निम्नलिखित अस्सी वर्ण मान्य हैं: F = नीला ध्वज G = लाल ध्वज O = खुली जगह W = दीवार
खेल तो प्रत्येक बॉट को stdout पर खेल फ्रेम भेजने के लिए आगे बढ़ना होगा:
FRAME
{Ammo}
{Alive Bot Count}
{Bot X},{Bot Y}
{Local Map}
EMARF
कहाँ पे:
{Ammo} अंकों की एक स्ट्रिंग है, मान 0 या अधिक होगा {अलाइव बॉट काउंट} अंकों का एक स्ट्रिंग है, मान 0 या अधिक होगा {Box X} अंकों का एक स्ट्रिंग है जो बीओटी के एक्स-कोऑर्डिनेट का प्रतिनिधित्व करता है खेल के नक्शे पर। मान 0 <= X <मानचित्र चौड़ाई होगा। {बॉक्स वाई} खेल के नक्शे पर बॉट के वाई को-ऑर्डिनेट का प्रतिनिधित्व करने वाले अंकों की एक स्ट्रिंग है। मान 0 <= Y <मानचित्र ऊंचाई होगा। {स्थानीय मानचित्र} बोट के आस-पास पूरे मानचित्र का प्रतिनिधित्व करने वाले अस्सी वर्णों की पंक्तियों की एक श्रृंखला है। निम्नलिखित अस्सी वर्ण मान्य हैं: F = नीला ध्वज G = लाल ध्वज O = खुली जगह W = दीवार R = लाल टीम बॉट B = ब्लू टीम बॉट M = मेरा A = बारूद
नियंत्रक को उम्मीद है कि आपके बॉट तब प्रारूप में एकल पंक्ति प्रतिक्रिया का उत्पादन (स्टडआउट करने के लिए) करेगा:
{Action},{Direction}
कहाँ पे:
{Action} इनमें से एक है: मूव डिफ्यूज माइन थ्रो
{दिशा} 0 और 4 समावेशी के बीच एक एकल अंक है। (पहले दिशा की जानकारी देखें)
नोट: सभी तार पंक्ति वर्ण के \ n अंत तक सीमांकित किए जाएंगे।यह एक एलिमिनेशन टूर्नामेंट होगा। मेरे नमूने बॉट भराव के रूप में भाग लेंगे, लेकिन मैं खुद को जीत नहीं दूंगा। मेरे एक बॉट द्वारा एक जीत की स्थिति में, शीर्षक दूसरे स्थान के सदस्य के पास जाता है, और तब तक जारी रहेगा जब तक कि एक बॉट नहीं है जो मेरा नहीं है। प्रत्येक मैच में किक के 11 राउंड शामिल हो सकते हैं। यदि किसी भी टीम ने एक भी मैच नहीं जीता है, तो वे दोनों समाप्त हो जाते हैं। यदि नॉन-जीरो स्कोर की टाई है तो एक टाई ब्रेकर मैच खेला जाएगा। यदि एक टाई बनी हुई है तो दोनों समाप्त हो जाते हैं। बाद के दौरों में अधिक मैच शामिल हो सकते हैं। टूर्नामेंट का बीजारोपण 7/31/16 (परिवर्तन के अधीन होने की तिथि) तक की संख्या के आधार पर होगा।
प्रत्येक मैच 4096 बदल जाता है। एक जीत एक अंक देती है। एक टाई या नुकसान शून्य अंक देता है। सौभाग्य!
इस GitHub रेपो में कोड को देखने के लिए स्वतंत्र महसूस करें या इसकी आलोचना करें।
https://github.com/rjhunjhunwala/BotCTF/blob/master/src/botctf/Arena.java
ध्यान दें कि मेरे कंप्यूटर पर बहुत सारी भाषाओं के लिए व्याख्याकार नहीं हैं, और मुझे अपने कंप्यूटर पर सिमुलेशन चलाने के लिए स्वयंसेवकों की आवश्यकता हो सकती है। या मैं भाषा दुभाषिया डाउनलोड कर सकते हैं। कृपया सुनिश्चित करें कि आपके बॉट।
- समय की उचित मात्रा में जवाब दें (250 ms कहें)
- मेरे मेजबान मशीन को नुकसान नहीं पहुंचाएगा

