আপনি এমন একটি উদ্যোগী বিন্দু যিনি এর নিয়ন্ত্রণাধীন জমিটি বাড়াতে চান। এটি বেশ সহজ - আপনার বর্তমান ভূমির বাইরে ভ্রমণ এবং আপনার জমিতে ফিরে আসা এবং সেই লুপের সমস্ত কিছুই এখন আপনার নিজের। তবে একটি ধরা আছে। যদি অন্য কোনও বিন্দু কোনওভাবে আপনার লুপটি সন্ধান করে এবং এটি অতিক্রম করে তবে আপনি মারা যান।
আপনি যদি ইতিমধ্যে এটি চেষ্টা না করে থাকেন তবে স্প্লিক্স.আইওতে যান এবং একটি গেমটি চেষ্টা করুন। আপনার চলাচল নিয়ন্ত্রণ করতে তীর কীগুলি ব্যবহার করুন।
জিআইএফ
ক্রেডিট: http://splix.io/
সুনির্দিষ্ট
সমস্ত খেলোয়াড় 200x200 বোর্ডে এলোমেলো অবস্থান থেকে শুরু করে। (আমি এটি পরিবর্তন করার অধিকার সংরক্ষণ করি :)। সম্ভব সর্বাধিক সংখ্যক পয়েন্ট সংগ্রহ করতে আপনার কাছে একটি নির্দিষ্ট পরিমাণের পদক্ষেপ থাকবে। পয়েন্টগুলি দ্বারা দীর্ঘ করা:
- আপনি খেলোয়াড়ের সংখ্যা 300 বার মারা গেছেন
- রাউন্ড শেষে আপনার নিজের পরিমাণ জমির পরিমাণ
এটি এমন পয়েন্টটি উপস্থিত করে যে অন্যরা আপনার জমি চুরি করতে পারে। যদি তারা এমন কোনও লুপ শুরু করে যা আপনার কিছু জমিকে ছেদ করে তবে তারা এটি দাবি করতে পারে। যদি আপনি রাউন্ডের সময় মারা যান তবে আপনি এই রাউন্ডের জন্য সমস্ত পয়েন্ট হারাবেন।
প্রতিটি রাউন্ডে এলোমেলোভাবে নির্বাচিত প্লেয়ারের গ্রুপ রয়েছে (সর্বাধিক 5 টি অনন্য প্লেয়ার) (পরিবর্তনের সাপেক্ষে)। প্রতিটি খেলোয়াড় সমান সংখ্যক রাউন্ডে অংশ নেয়। আপনার বটের চূড়ান্ত স্কোরটি প্রতি গেমের গড় স্কোর দ্বারা নির্ধারিত হয়। প্রতিটি গেম 2000 টি পালা (এছাড়াও পরিবর্তন সাপেক্ষে) নিয়ে গঠিত। সমস্ত বট একই সাথে তাদের চালচলন করে।
মৃত্যু মামলা
হেড বাট
একে অপরের মাথা বাটলে উভয় খেলোয়াড় মারা যায়। উভয় খেলোয়াড় তাদের জায়গার কিনারায় থাকলেও এটি এখনও সত্য।
তবে, যখন খেলোয়াড়দের মধ্যে একটি তার জমিতে থাকে, তখন অন্য খেলোয়াড় মারা যায়।
লাইন ক্রস
এই ক্ষেত্রে, শুধুমাত্র বেগুনি প্লেয়ার মারা যায়।
আপনি নিজের লাইনটি অতিক্রম করতে পারবেন না।
বোর্ড থেকে বের হচ্ছে
কোনও খেলোয়াড় বোর্ড থেকে প্রস্থান করার চেষ্টা করলে তিনি মারা যাবেন এবং সমস্ত পয়েন্ট হারাবেন।
ক্যাপচারিং অঞ্চল
কোনও খেলোয়াড় যখন একটি ট্রেইল পেলে সে অঞ্চলটি দখল করবে এবং সে তার নিজের জমিতে আবার প্রবেশ করবে।
দুটি লাল রেখার মাঝে লাল ভরে যায়। যখন অন্য খেলোয়াড় লুপের ভিতরে থাকে কেবল তখনই কোনও খেলোয়াড় পূর্ণ হয় না। স্পষ্টতই, এটি কেবল তখনই প্রযোজ্য যখন অন্য খেলোয়াড় নিজে নিজে লুপে থাকবেন, কেবল তার মালিকানাধীন জমি নয়। একজন খেলোয়াড় অন্য ব্যক্তির কাছ থেকে জমি দখল করতে পারে। যদি কোনও খেলোয়াড় তার ট্রেইল ঘিরে থাকা জায়গাটি পূরণ করতে না পারে তবে ট্রেইলটি সরাসরি সাধারণ জমিতে রূপান্তরিত হয়। যদি অন্য খেলোয়াড়ের ল্যান্ড লুপের ভিতরে থাকা খেলোয়াড় মারা যায় তবে সেই লুপের অঞ্চলটি পূর্ণ হয়ে যায়। প্রতিবার কোনও খেলোয়াড় মারা গেলে বোর্ডটি পূরণ করা যায় এমন একটি অঞ্চলের জন্য পুনরায় পরীক্ষা করা হয়।
নিয়ামক বিশদ
নিয়ামক এখানে আছেন । এটি মূল গেমের সাথে খুব মিল, তবে কোটএইচের জন্য এবং প্রযুক্তিগত কারণে এটি আরও ভাল ফিট করার জন্য ছোট ছোট পরিবর্তন করা হয়েছে। এটা দিয়ে তৈরি করা হয়েছে @NathanMerrill এর KotHComm গ্রন্থাগার @NathanMerrill থেকে সারগর্ভ সাহায্যে পাশাপাশি, এবং। চ্যাট রুমের নিয়ামকটিতে আপনি যে কোনও বাগ খুঁজে পান সে সম্পর্কে দয়া করে আমাকে জানান । কোটএইচকমের সাথে সামঞ্জস্য বজায় রাখার জন্য, আমি নিয়ামক জুড়ে ইলিপেস সংগ্রহগুলি ব্যবহার করেছি, তবে কেবল জাভা সংগ্রহ লাইব্রেরি ব্যবহার করে বটগুলি লেখা যেতে পারে।
গিথুব প্রকাশের পৃষ্ঠায় একটি উবারজারে সবকিছু প্যাকেজ করা আছে । এটি ব্যবহার করতে, এটি ডাউনলোড করুন এবং এটি আপনার প্রকল্পের সাথে সংযুক্ত করুন যাতে আপনি এটি অটো-কমপ্লিট ( ইন্টেলিজিজ , ইক্লিপসের নির্দেশাবলী ) এর জন্য ব্যবহার করতে পারেন । আপনার জমাগুলি পরীক্ষা করার জন্য, আপনি জারটি দিয়ে চালান java -jar SplixKoTH-all.jar -d path\to\submissions\folder
। নিশ্চিত করুন যে path\to\submissions\folder
এর নামে একটি সাবফোলার রয়েছে java
এবং আপনার সমস্ত ফাইল সেখানে রাখবে । আপনার বটগুলিতে প্যাকেজের নামগুলি ব্যবহার করবেন না (যদিও এটি কোটকমকমের মাধ্যমে সম্ভব হতে পারে, এটি কেবল খানিকটা বেশি সমস্যা)। সমস্ত বিকল্প দেখতে, ব্যবহার করুন --help
। সমস্ত বট লোড করতে, ব্যবহার করুন --question-id 126815
।
একটি বট লেখা
বট লেখা শুরু করার জন্য আপনাকে অবশ্যই প্রসারিত করতে হবে SplixPlayer
।
Direction makeMove(ReadOnlyGame game, ReadOnlyBoard board)
- আপনার বটটি কোন পদক্ষেপটি তৈরি করতে চান তা এখানেই স্থির করুন। নাল ফিরে না।
HiddenPlayer getThisHidden()
- এর
HiddenPlayer
সংস্করণ পানthis
। আপনার বটকে বোর্ডের সাথে তুলনা করার জন্য দরকারী।
- এর
enum Direction
- মানগুলি
East
(x = 1; y = 0)West
(x = -1; y = 0)North
(x = 0; y = 1)South
(x = 0; y = -1)
Direction leftTurn()
- আপনি
Direction
যদি একটি বাম পালা তৈরি করেন তবে তা পাবেন Get
- আপনি
Direction RightTurn()
- আপনি
Direction
যদি সঠিক বাঁক তৈরি করেন তবে যা পাবেন তা পান ।
- আপনি
ReadOnlyBoard
এটি সেই ক্লাস যেখানে আপনি বোর্ডে অ্যাক্সেস করেন। আপনি প্লেয়ারের পজিশনের সাথে বোর্ডের স্থানীয় ভিউ (20x20), অথবা বোর্ডে অবস্থানের মালিকানাধীন এবং কারা দাবী করছেন কেবল তার তথ্য সহ একটি বৈশ্বিক দর্শন (পুরো বোর্ড) পেতে পারেন। এটিই যেখানে আপনি নিজের অবস্থান পান।
SquareRegion getBounds()
- বোর্ডের আকারটি পুনরুদ্ধার করুন।
MutableMap<com.nmerrill.kothcomm.game.maps.Point2D,ReadOnlySplixPoint> getGlobal()
- বোর্ডের একটি বৈশ্বিক মানচিত্র পান।
MutableMap<com.nmerrill.kothcomm.game.maps.Point2D,ReadOnlySplixPoint> getView()
- যেমনটি
getGlobal()
এটি আপনার প্লেয়ারের চারপাশে একটি 20x20 অঞ্চলে সীমাবদ্ধ এবং এটি খেলোয়াড়ের অবস্থান প্রদর্শন করে except
- যেমনটি
Point2D getPosition(SplixPlayer me)
- আপনার প্লেয়ারের অবস্থান পান। হিসাবে ব্যবহার করুন
board.getPosition(this)
।
- আপনার প্লেয়ারের অবস্থান পান। হিসাবে ব্যবহার করুন
Point2D getSelfPosition(ReadOnlyBoard)
- বোর্ডে আপনার অবস্থান পান। ব্যবহার:
Point2D mypos = getSelfPosition(board)
- বোর্ডে আপনার অবস্থান পান। ব্যবহার:
ReadOnlyGame
ReadOnlyGame
কেবলমাত্র খেলাগুলির মধ্যে থাকা বাঁকগুলির সংখ্যাটিতে অ্যাক্সেস সরবরাহ করে int getRemainingIterations()
।
ReadOnlySplixPoint
HiddenPlayer getClaimer()
HiddenPlayer
কে দাবী করছে দাবি করছে - দাবী করা = একটি ট্রেইলের সংস্করণ পান ।
HiddenPlayer getOwner()
- কার পয়েন্টের মালিক তা পান।
HiddenPlayer getWhosOnSpot()
- যদি প্লেয়ারটি এই স্থানে থাকে তবে এর লুকানো সংস্করণটি ফিরিয়ে দিন। শুধুমাত্র কাজ করে
getLocal()
।
- যদি প্লেয়ারটি এই স্থানে থাকে তবে এর লুকানো সংস্করণটি ফিরিয়ে দিন। শুধুমাত্র কাজ করে
Point2D
এখানে অন্যান্য ক্লাসগুলির মতো নয়, Point2D
কোটকমকম লাইব্রেরিতে রয়েছে।com.nmerrill.kothcomm.game.maps.Point2D
Point2D(int x, int y)
int getX()
int getY()
Point2D moveX(int x)
Point2D moveY(int y)
Point2D wrapX(int maxX)
x
এর ব্যাপ্তির মধ্যে থাকা মানটি মোড়ানোmaxX
।
Point2D wrapY(int maxY)
y
এর ব্যাপ্তির মধ্যে থাকা মানটি মোড়ানোmaxY
।
int cartesianDistance(Point2D other)
- এটি খেলোয়াড়কে বিন্দু থেকে বিন্দু বিতে সরতে যে কতটা মোড় নিতে পারে তা অনুবাদ করে।
ক্লোজার সমর্থন
ক্লোজার সংকলকটি এর সাথে বান্ডিল রয়েছে SplixKoTH-all.jar
, যাতে আপনি আপনার বটের জন্য ক্লোজার ব্যবহার করতে পারেন! random_bot
এটি কীভাবে ব্যবহার করতে হয় তা দেখতে আমার উল্লেখ করুন ।
একটি বট ডিবাগিং
নিয়ন্ত্রক পরীক্ষার কৌশলগুলিতে সহায়তা করতে একটি ডিবাগার নিয়ে আসে। এটি শুরু করতে, --gui
বিকল্পটি দিয়ে জারটি চালান ।
পাত্রীটি কি তবে ডিবাগার সংযুক্ত করতে, অনুসরণ এই নির্দেশাবলী IntelliJ, অথবা এই নির্দেশাবলী অন্ধকার জন্য (অন্ধকার সংস্করণ অপরীক্ষিত)।
আপনি যদি নিজের কোড দিয়ে কোনও ডিবাগার ব্যবহার করছেন তবে আপনি নিজের বটটি যা দেখছেন তা কল্পনা করতে সহায়তা করতে এটি ব্যবহার করতে পারেন। makeMove
আপনার বটের শুরুতে একটি ব্রেকপয়েন্ট সেট করুন এবং নিশ্চিত করুন যে এটি কেবলমাত্র বর্তমান থ্রেডকে বিরতি দেয়। এরপরে, ইউআইতে স্টার্ট বোতামটি ক্লিক করুন এবং আপনার কোডটি দিয়ে যান।
এখন, এটি সব একসাথে রাখার জন্য:
চলমান বট
অন্যদের সাথে আপনার বট চালানোর জন্য আপনাকে প্রকাশের পৃষ্ঠায় জার চালাতে হবে। পতাকাগুলির তালিকা এখানে রয়েছে:
--iterations
(-i
) <=int
(ডিফল্ট500
)- চলমান গেমের সংখ্যা উল্লেখ করুন।
--test-bot
(-t
) <=String
- বট অন্তর্ভুক্ত কেবলমাত্র গেমগুলি চালান।
--directory
(-d
) <= পথ- থেকে জমা দেওয়ার জন্য ডিরেক্টরি run আপনার বট চালানোর জন্য এটি ব্যবহার করুন। নিশ্চিত করুন যে আপনার বট নামে পাথ একটি subfolder একটি হয়
java
।
- থেকে জমা দেওয়ার জন্য ডিরেক্টরি run আপনার বট চালানোর জন্য এটি ব্যবহার করুন। নিশ্চিত করুন যে আপনার বট নামে পাথ একটি subfolder একটি হয়
--question-id
(-q
) <=int
(কেবল ব্যবহার126815
)- সাইট থেকে অন্যান্য জমাগুলি ডাউনলোড করুন এবং সংকলন করুন।
--random-seed
(-r
) <=int
(একটি এলোমেলো সংখ্যায় ডিফল্ট)- রানারকে একটি বীজ দিন যাতে এলোমেলোভাবে ব্যবহার করা বটগুলি পুনরায় উত্পাদন করতে পারে।
--gui
(-g
)- কোনও টুর্নামেন্ট চালানোর পরিবর্তে ডিবাগার ইউআই চালান। সঙ্গে সেরা ব্যবহার
--test-bot
।
- কোনও টুর্নামেন্ট চালানোর পরিবর্তে ডিবাগার ইউআই চালান। সঙ্গে সেরা ব্যবহার
--multi-thread
(-m
) <=boolean
(ডিফল্টtrue
)- মাল্টি-থ্রেড মোডে একটি টর্নোমেন্ট চালান। আপনার কম্পিউটারে একাধিক কোর থাকলে এটি একটি দ্রুত ফলাফল সক্ষম করে।
--thread-count
(-c
) <=int
(ডিফল্ট4
)- মাল্টি-থ্রেড অনুমোদিত হলে চালানোর জন্য থ্রেডের সংখ্যা।
--help
(-h
)- এটির মতো একটি সহায়তা বার্তা প্রিন্ট করুন।
এই পৃষ্ঠায় সমস্ত জমা চালাতে, ব্যবহার করুন java -jar SplixKoTH-all.jar -q 126815
।
আপনার পোস্ট ফর্ম্যাট করা হচ্ছে
কন্ট্রোলার সমস্ত বট ডাউনলোড করতে পারে তা নিশ্চিত করতে আপনার এই ফর্ম্যাটটি অনুসরণ করা উচিত।
[BotName], Java // this is a header
// any explanation you want
[BotName].java // filename, in the codeblock
[code]
এছাড়াও, প্যাকেজ ঘোষণার ব্যবহার করবেন না।
স্কোরবোর্ড
+------+--------------+-----------+
| Rank | Name | Score |
+------+--------------+-----------+
| 1 | ImNotACoward | 8940444.0 |
| 2 | TrapBot | 257328.0 |
| 3 | HunterBot | 218382.0 |
+------+--------------+-----------+
নিয়মের কোনও অংশ অস্পষ্ট কিনা, বা আপনি যদি চ্যাটরুমের নিয়ামকটিতে কোনও ত্রুটি খুঁজে পান তবে দয়া করে আমাকে জানান ।