रॉकेट बॉट
वर्ष 3024 है। युद्ध में जोखिम उठाने के लिए लोग बहुत अधिक दुर्लभ हो गए हैं, इसलिए युद्ध रोबोटों में स्थानांतरित हो गया है। आपका कार्य किसी अन्य की तरह एक बॉट का निर्माण करना है, जो रॉकेट आपके दुश्मनों पर विनाश की बारिश करेगा और आने वाले सभी खतरों को पूरा करेगा।
गेमप्ले
बॉट
गेमप्ले 10x15 ग्रिड पर होता है। आपका बॉट नीचे के किनारे पर स्थित है, और ग्रिड के स्पॉट 6,7 और 8 में तीन स्लॉट हैं। आपका प्रतिद्वंद्वी ग्रिड के शीर्ष पर स्थित है, जिसमें तीन स्लॉट सीधे आपके विपरीत हैं।
रॉकेट्स
इनमें से किसी भी स्लॉट से, आप रॉकेट को आग लगा सकते हैं, यह मानते हुए कि स्लॉट नष्ट नहीं हुआ है। एक रॉकेट में दिशाओं की एक सूची होती है जो इसे बनाते समय दी जाती है, और एक बार इन दिशाओं को निकाल देने के बाद इसे बदला नहीं जा सकता है। प्रत्येक मोड़, रॉकेट सूची के शीर्ष का उपभोग करेगा, और उस दिशा में आगे बढ़ेगा। रॉकेट एक साथ चलते हैं। यदि दो रॉकेट एक ही टाइल में समाप्त हो जाते हैं, तो वे दोनों फट जाएंगे। यदि कोई रॉकेट कमांड से बाहर निकलता है, तो उसमें विस्फोट होगा। यदि कोई रॉकेट ईंधन से बाहर निकलता है, तो 100 चालों के बाद, वह फट जाएगा। जब कोई रॉकेट फटता है, तो वह 5 टर्न के लिए उस टाइल में बना रहता है, जिससे कोई भी अन्य रॉकेट वहां तक पहुंच जाता है।
नोट: एक साथ आंदोलन के कारण, दो रॉकेट एक दूसरे को विस्फोट किए बिना पारित कर सकते हैं, जब तक कि वे दोनों एक ही टाइल में एक मोड़ को समाप्त नहीं करते।
लक्ष्य
प्रत्येक मैच का लक्ष्य आपको अपने विरोधियों के स्लॉट को नष्ट करना है जबकि आपको जीवित रखना है। एक रॉकेट को आपके पास मौजूद किसी भी लाइव स्लॉट से निकाल दिया जा सकता है, और इसे निकाल दिए जाने से पहले आपके द्वारा निर्दिष्ट मार्ग दिया जाता है। आप हर दूसरे मोड़ पर एक रॉकेट फायर करते हैं, इससे पहले कि आप एक और फायर कर सकें, रॉकेट दो बार चलेंगे। एक द्वंद्व 200 बारी के लिए रहता है, या जब तक कि एक बॉट स्लॉट सभी नष्ट नहीं हो जाते।
स्कोरिंग
मैच के अंत में, आपके पास प्रत्येक लाइव स्लॉट के लिए एक अंक मिलता है, और आपके द्वारा नष्ट किए गए प्रत्येक प्रतिद्वंद्वी स्लॉट के लिए एक बिंदु। इसका मतलब है कि यह एक शून्य-राशि का खेल है, और प्रत्येक मैच में 6 अंक दिए जाएंगे।
एक राउंड रॉबिन चलाया जाएगा ताकि प्रत्येक बॉट एक-दूसरे को एक बार बॉट का सामना करें। यदि कोई बॉट RNG का उपयोग करता है, तो प्रत्येक मैचअप के बजाय 1000 युगल होंगे।
कार्यान्वयन
प्रतियोगिता के लिए कोड यहां पाया जा सकता है: https://github.com/Cain93/RocketBots
प्रत्येक जमा को Bot
कक्षा का विस्तार करना चाहिए । आपको fireRocket
विधि को ओवरराइड करना चाहिए । इस पद्धति से रॉकेट का ग्रिड सरणी प्राप्त होता है Rocket[][]
, जो गेमबोर्ड का प्रतिनिधित्व करता है। तुम हमेशा स्पॉट पर स्लॉट के साथ, ग्रिड के निचले भाग में स्थित हैं [-1][6]
, [-1][7]
, [-1][8]
। ग्रिड पर, अप्रकाशित स्पॉट के साथ प्रतिनिधित्व किया जाएगा null
। यदि एक टाइल में एक रॉकेट मौजूद है, तो आप यह पहचान सकते हैं कि यह किस dis
क्षेत्र तक पहुंच से संबंधित है । "^" आपका रॉकेट है, और "v" आपके विरोधी हैं।
आपको इंटेगर के लिंक्डलिस्ट को वापस करना होगा जो आपके रॉकेट के लिए निर्देश देता है। ऊपर जाने के लिए, 0. का उपयोग करें। ऊपर और दाएं जाने के लिए, 1 का उपयोग करें, बस दाएं, 2 का उपयोग करें, आदि सभी ऊपर और बाएं के लिए 7 तक। रॉकेट उस क्रम में आगे बढ़ेगा, जिस पर आप इंटेगर को धक्का देते हैं। उदाहरण के लिए, निम्नलिखित कोड रॉकेट को ऊपर की ओर कुछ मोड़ देगा, ज़िग-ज़ैग कुछ मोड़ और फिर विस्फोट करेगा।
LinkedList<Integer> moves = new LinkedList<Integer>();
moves.push(0);
moves.push(0);
moves.push(0);
moves.push(1);
moves.push(7);
moves.push(1);
moves.push(7);
रॉकेट को आग लगाने के लिए किस स्लॉट को बदलने के लिए, curSlot
फ़ील्ड को बदलें । 0 आपका सबसे बाईं ओर का स्लॉट है, और 2 आपका सबसे दाहिना है। यह जांचने के लिए कि क्या कोई स्लॉट नष्ट हो गया है, का उपयोग करें getSlot(int slotNumber)
।
यदि कोई रॉकेट किसी स्लॉट पर टर्न समाप्त करता है, तो वह स्लॉट नष्ट हो जाएगा। आपको रॉकेट को मैन्युअल रूप से विस्फोट करने की आवश्यकता नहीं है।
नोट: रॉकेट उस स्थान पर स्थित है, जहां से निकाल दिया गया है, लेकिन टकरावों के मूल्यांकन से पहले एक बार चलेंगे। इसलिए यदि आप स्लॉट 0 से एक रॉकेट फायर करते हैं, और पहली चाल सही (2) है, तो आप अपने स्वयं के मध्य स्लॉट को नष्ट कर देंगे। हालांकि, ऊपर और दाएं (1) एक सुरक्षित कदम है।
यदि आप अपने बॉट को नाम देना चाहते हैं, तो name()
विधि को ओवरराइड करें ।
बॉट्स प्रत्येक द्वंद्व के लिए फिर से बनाया जाएगा, इसलिए किसी भी स्थिर चर को रीसेट किया जाएगा।
शुभ लाभ!
आपके रॉकेट सच उड़ सकते हैं और आपके विरोधियों को धातु के स्क्रैपिंग के अलावा कुछ नहीं होना चाहिए।
संकेत:
विस्फोटकों को बनाने के लिए जानबूझकर रॉकेटों को विस्फोट करना विरोधियों के रॉकेटों को मार गिराने की तुलना में बचाव का एक आसान तरीका है।
उदाहरण बॉट
package bots;
import java.util.LinkedList;
import mechanics.*;
public class SimpleBot extends Bot {
public String name(){
return "Simple";
}
public LinkedList<Integer> fireRocket(Rocket[][] g){
LinkedList<Integer> l = new LinkedList<Integer>();
for(int i = 0; i < 12; i++){
l.push(0);
}
return l;
}
}
स्कोर
6-24 से स्कोर
Simple: 900
Zigzagoon: 3654
Wall-E: 3606
Tortoise: 2248
3 Shot: 2334
HatTrickBot: 4287
Sniper: 2973
SideShooter: 2491
Terminator: 4835
StraightShot: 3378
Defender: 4570
MoreDakka: 4324