https://en.wikipedia.org/wiki/Losing_chess
এটি মূলত দাবা টুর্নামেন্ট , তবে অ্যান্টিথেসের জন্য;)
উদ্ভাবিত অনেক দাবা রূপগুলির মধ্যে একটি অ্যান্টিচেস । লক্ষ্যটি হ'ল আপনার সমস্ত টুকরা হারাতে (এটি কিছুটা অদ্ভুত বলে মনে হতে পারে তবে এটি একটি কারণে অ্যান্টিথেস বলে)।
নিয়ম
অ্যান্টিচেসের নিয়মগুলি স্ট্যান্ডার্ড দাবা'র সাথে খুব মিল - তবে কয়েকটি মোটামুটি ছোটখাটো পার্থক্য রয়েছে। আমি উপরে উল্লিখিত লক্ষ্যটি হ'ল আপনার সমস্ত টুকরোগুলি হারাতে। এটি ঘটানোর জন্য, যদি আপনার প্রতিপক্ষের কাছে আপনার কোনও একটি টুকরো ক্যাপচার করার সুযোগ থাকে, তবে তিনিই এই পদক্ষেপ নিতে পারেন। আপনি যদি তাকে এক পালনে একাধিক সম্ভাবনা দেন তবে অন্য খেলোয়াড় তার পালা বেছে নিতে পারে। আরেকটি বিষয় যা পরিবর্তিত হয়েছে তা হ'ল রাজার কোনও বিশেষ ক্ষমতা নেই - যেমন আপনি নিজের প্রতিপক্ষকে থামাতে পারবেন না, এবং আপনি তাকে জোর করে পরীক্ষা করতে পারবেন না।
মানক গেমের নিম্নলিখিত পরিবর্তনগুলিও প্রযোজ্য (তারা গেমটি সহজতর করতে সহায়তা করে):
- এন পাসেন্ট উপেক্ষা করা হবে।
- কাস্টিং সম্ভব নয়।
- পঞ্চাশ-পদক্ষেপ নিয়ম স্বয়ংক্রিয়ভাবে (ক ড্র খেলা প্রান্ত অর্থ) প্রযোজ্য।
- পন্ডিতরা তারা কী প্রচার করে তা চয়ন করতে সক্ষম হবে।
- যদি কোনও খেলোয়াড়ের চলতে 2 সেকেন্ডের বেশি সময় প্রয়োজন হয় তবে সে খেলাটি হারাবে।
- একটি অবৈধ পদক্ষেপ ফিরিয়ে দেওয়ার ফলে গেমটি হারাতে হবে।
- জয়ের জন্য, আপনার বিরোধীদের অবশ্যই আপনার সমস্ত টুকরো ক্যাপচার করতে হবে ।
- হোয়াইট খেলা শুরু।
- সাদা ক্ষেত্রের "নীচে" (y = 0) স্থাপন করা হয়েছে, কালো শীর্ষে অবস্থিত (y = 7)।
- আপনার বট (ইন্টারনেট, ফাইল, অন্যান্য বট, ...) ব্যতীত অন্য সংস্থানগুলিতে অ্যাক্সেস নিষিদ্ধ।
স্কোরিং
- বিজয়ী আপনাকে 3 পয়েন্ট, একটি অঙ্কন 1 পয়েন্ট এবং 0 পয়েন্ট হারাবে।
- প্রতিটি জমা 10 বার (সাদা হিসাবে 5 বার, কালো হিসাবে 5) একে অপরের জমা দেওয়ার বিরুদ্ধে খেলবে।
আপনার বট লেখা
কন্ট্রোলার কোডটি এখানে রয়েছে: https://github.com/JJ-Atkinson/SimpleAntichessKOTH
আপনি জাভা বা গ্রোভির যে কোনও একটিতে আপনার বট লিখতে পারেন। বট লিখতে আপনাকে অবশ্যই Player
ক্লাসটি প্রসারিত করতে হবে । খেলোয়াড় শ্রেণীর একটি বিমূর্ত পদ্ধতি রয়েছে Move getMove(Board board, Player enemy, Set<Move> validMoves)
।
দরকারী পদ্ধতিগুলির জন্য এখানে দ্রুত পাল্টে দেওয়া:
Player
:
List<Piece> getPieces(Board board)
: বোর্ডে থাকা আপনার সমস্ত টুকরো ফিরিয়ে দিন।PieceUpgradeType pieceUpgradeType
: যদি / যখন আপনার কোনও পদ্ম বোর্ডের শেষ প্রান্তে পৌঁছে যায়, আপনি আপগ্রেড করতে চান এমন টুকরোটির সাথে এটি নির্ধারণ করতে হবে। আপনি এর উপায় নেইROOK
,KNIGHT
,QUEEN
,BISHOP
, এবংKING
।
Board
:
Field getFieldAtLoc(Location loc)
:Field
লোকেশন এ ফিরে । এটির একটি মিলে যাওয়ারgetAt
পদ্ধতি রয়েছে যাতে আপনি গ্রোভি ব্যবহার করে লিখতে পারেনboard[loc]
।Field getFieldAtLoc(int x, int y)
:Field
লোকেশন এ ফিরে । এটির একটি মিলে যাওয়ারgetAt
পদ্ধতি রয়েছে যাতে আপনি গ্রোভি ব্যবহার করে লিখতে পারেনboard[x, y]
।Board movePiece(Player player, Move move)
: বোর্ডে সরানো যাতে আপনি দেখতে পান যে এটি কীভাবে কার্যকর হবে। এটি নতুন বোর্ড ফেরত দেয়।
যদি আপনি আপনার বিরোধীদের টুকরো দেখতে চান তবে কেবল লিখুন enemy.getPieces(board)
। আপনার বটটি লাইনআপে যুক্ত করতে নিম্নলিখিত লাইনটি যুক্ত করুন PlayerFactory
:
put(YourBot.class, { new YourBot() } )
আপনার বটটি ডিবাগ করছে:
আমি আপনার বটগুলি ডিবাগ করতে সহায়তা করার জন্য বেশ কয়েকটি সরঞ্জাম অন্তর্ভুক্ত করেছি। আপনার গেমটি সরাসরি চালিত হয়েছে তা দেখতে আপনি Game#DEBUG
পতাকাটিকে সত্যে সেট করতে পারেন । আপনি এই জাতীয় একটি আউটপুট পাবেন:
Game started. Players: [OnePlayBot(WHITE), SacrificeBot(BLACK)]
...
BLACKs turn.
validMoves: [Move(Piece(BLACK, PAWN, Loc(0, 6)), Loc(0, 5)), ...]
board:
RKBQIBKR
PPPPPPPP
--------
--------
--------
p-------
-ppppppp
rkbqibkr
captureless turns: 1
chosen move: Move(Piece(BLACK, PAWN, Loc(7, 6)), Loc(7, 4))
Game over? false
==============================
WHITEs turn.
validMoves: [Move(Piece(WHITE, ROOK, Loc(0, 0)), Loc(0, 1)), ...]
board:
RKBQIBKR
PPPPPPP-
--------
-------P
--------
p-------
-ppppppp
rkbqibkr
...
(হোয়াইট আপার কেস, বাদশাকে দেখানো হয়েছে i
)
যদি আপনার কনসোল utf-8 বিশেষ অক্ষর সমর্থন করে, আপনি এমনকি দাবা চরগুলি দিয়ে বোর্ডটি প্রদর্শন করে এটি ব্যবহার করতে পারেন Board#USE_UTF8_TO_STRING
:
♜♞♝♛♚♝—♜
♟—♟♟♟♟♟♟
————————
—♟——————
————————
♙———————
—♙♙♙♙♔♙♙
♖♘♗♕—♗♘♖
(এটি একটি মনো স্পেসযুক্ত ফন্টের সাথে আরও ভাল দেখাচ্ছে)
অযাচিত আউটপুটটির বন্যা রোধ Main#main
করতে আপনার এই ফাংশনটি এমন কিছুতে পরিবর্তন করা উচিত :
new Game(new MyBot(), new SacrificeBot()).run()
আপনার বটটি সাদা হিসাবে খেলতে বাম দিকে রাখুন, কালো হিসাবে খেলতে ডানদিকে রাখুন।
নিয়ামক নির্মাণ:
কন্ট্রোলারটি গ্রোভিতে লেখা হয়, সুতরাং আপনার অবশ্যই জাভা এবং গ্রোভি ইনস্টল করা উচিত। আপনি গ্রোভি ইনস্টল করতে না চাইলে আপনি গ্রেডল বিল্ড ফাইলটি ব্যবহার করতে পারেন যা নিয়ামকের সাথে আসে (এটি পরীক্ষা করা হয়নি)। আপনি যদি গ্রোভি বা গ্রেড ব্যবহার করতে না চান তবে আপনি সর্বশেষ প্রকাশের জারটি ব্যবহার করতে পারেন ( https://github.com/JJ-Atkinson/SimpleAntichessKOTH/relayss )। আপনি যদি এটি করেন তবে আপনার নিজের main
পদ্ধতি তৈরি করতে হবে এবং খেলোয়াড় কারখানায় ম্যানুয়ালি আপনার বট যুক্ত করতে হবে। উদাহরণ:
PlayerFactory.players.put(YourBot.class, { new YourBot() } )
new Runner().runGames();
(নোট করুন যে আপনি এখনও ডিবাগ পতাকা এবং স্টাফ সেট করতে পারেন)
যে কোনও এবং সমস্ত বাগ সন্ধান প্রশংসা করা হয়!
স্কোর:
SearchBot -> 101
SacrificeBot -> 81
MeasureBot -> 37
RandomBot -> 28
OnePlayBot -> 24
দয়া করে মনে রাখবেন যে আমি সর্বদা নতুন জমা দিতে ইচ্ছুক!