রকেট বটস
বছরটি 3024 war মানুষ যুদ্ধে ঝুঁকিপূর্ণ হওয়ার পক্ষে খুব কম সংস্থান হয়ে উঠেছে, সুতরাং যুদ্ধটি রোবটগুলিতে স্থানান্তরিত হয়েছে। আপনার কাজটি অন্য কারও মতো বট তৈরি করা নয়, কে রকেটগুলি আপনার শত্রুদের উপর ধ্বংসের বৃষ্টিপাত করবে এবং আগত সমস্ত হুমকিকে ছুঁড়ে মারবে।
গেমপ্লের
বট
গেমপ্লে 10x15 গ্রিডে স্থান নেয়। আপনার বটটি নীচের প্রান্তে অবস্থিত এবং গ্রিডের 6,7 এবং 8 স্পটে তিনটি স্লট রয়েছে। আপনার বিপরীতে আপনার বিপরীতে তিনটি স্লট সহ গ্রিডের শীর্ষে অবস্থিত।
রকেটস
এই স্লটগুলির যে কোনও একটি থেকে আপনি রকেট গুলি চালাতে পারেন, ধরেই নেওয়া স্লটটি ধ্বংস হয়নি। রকেটটি তৈরি করার সময় প্রদত্ত দিকনির্দেশগুলির একটি তালিকা তৈরি করে এবং একবার চালিত হয়ে গেলে এই দিকনির্দেশগুলি পরিবর্তন করা যায় না। প্রতিটি পালা, রকেট তালিকার শীর্ষটি গ্রাস করবে এবং সেই দিকে চলে যাবে। রকেট একই সাথে চলাফেরা করে। দুটি রকেট যদি একই টাইলের শেষ হয় তবে সেগুলি উভয়ই বিস্ফোরিত হবে। কোনও রকেট যদি কমান্ডের বাইরে চলে যায় তবে এটি বিস্ফোরিত হবে। যদি কোনও রকেট জ্বালানীর বাইরে চলে যায়, 100 টি পদক্ষেপের পরে, এটি বিস্ফোরিত হবে। যখন কোনও রকেট বিস্ফোরিত হয়, তখন এটি 5 টর্কের জন্য সেই টাইলের মধ্যে থাকবে, অন্য কোনও রকেটগুলি সেখানে বিভক্ত হয়ে বিস্ফোরণ ঘটায়।
দ্রষ্টব্য: একই সাথে চলাফেরার কারণে, দুটি রকেট বিস্ফোরণ ছাড়াই একে অপরকে পাস করতে পারে, যতক্ষণ না তারা উভয়ই একই টাইলের একটি পালা শেষ না করে।
লক্ষ্য
প্রতিটি ম্যাচের লক্ষ্য হ'ল আপনার বাঁচিয়ে রাখার সময় আপনার প্রতিপক্ষের স্লটগুলি ধ্বংস করা। আপনার যে কোনও লাইভ স্লট থেকে রকেট নিক্ষেপ করা যেতে পারে, এবং গুলি চালানোর আগে আপনাকে মনোনীত একটি পথ দেওয়া হয়। আপনি প্রতি দ্বিতীয় ঘুরে একটি রকেট নিক্ষেপ করেন, এর অর্থ আপনি আরও একটি গুলি চালানোর আগে রকেট দু'বার সরে যাবে। একটি দ্বৈরথ 200 টির জন্য স্থায়ী হয় বা একটি বট স্লট সমস্ত ধ্বংস না হওয়া অবধি।
স্কোরিং
ম্যাচ শেষে, আপনার কাছে থাকা প্রতিটি লাইভ স্লটের জন্য আপনি একটি পয়েন্ট পাবেন এবং প্রতিটি প্রতিপক্ষের জন্য একটি পয়েন্ট আপনি ধ্বংস করেছেন। এর অর্থ এটি একটি শূন্য-সমষ্টি গেম এবং প্রতি ম্যাচটিতে points পয়েন্ট দেওয়া হবে।
একটি বৃত্তাকার রবিন চালানো হবে যাতে প্রতিটি বট একবার একে অপরের বটের মুখোমুখি হয়। যদি কোনও বটগুলি আরএনজি ব্যবহার করে তবে প্রতিটি ম্যাচআপ পরিবর্তে 1000 ডুয়েল হবে।
বাস্তবায়ন
প্রতিযোগিতার কোডটি এখানে পাওয়া যাবে: https://github.com/Cain93/ রকেটবটস
প্রতিটি জমা Bot
ক্লাস প্রসারিত করা উচিত । আপনাকে অবশ্যই fireRocket
পদ্ধতিটি ওভাররাইড করতে হবে । এই পদ্ধতিটি রকেটগুলির একটি গ্রিড অ্যারে গ্রহণ করে Rocket[][]
যা গেমবোর্ডকে উপস্থাপন করে। আপনি সর্বদা স্থানে স্লট সঙ্গে, গ্রিড নীচে অবস্থিত হয় [-1][6]
, [-1][7]
, [-1][8]
। গ্রিডে, অচেতন দাগগুলি প্রতিনিধিত্ব করা হবে null
। যদি টাইলটিতে রকেট উপস্থিত থাকে তবে আপনি dis
ক্ষেত্রটি অ্যাক্সেস করে সনাক্ত করতে পারবেন এটি কার সাথে সম্পর্কিত belongs "^" হ'ল আপনার রকেট, এবং "ভি" আপনার বিরোধী।
আপনাকে অবশ্যই একটি সংযুক্ত লিস্টলিস্ট ফিরিয়ে দিতে হবে যা আপনার রকেটের জন্য নির্দেশনা দেয়। উপরের দিকে যেতে, 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