এই কিং-অফ-হিলি খেলাটি একটি কৌশল খেলা যা আপনাকে অবশ্যই একটি জলের বেলুনের চারপাশে নিক্ষেপ করতে হবে এবং জলে ছড়িয়ে পড়া এড়াতে হবে। সর্বাধিক পয়েন্ট অর্জন লক্ষ্য। আপনাকে মাঠের একটি মানচিত্র এবং জলের বেলুনের অবস্থান দেওয়া হবে। আপনি হয় প্রত্যাবর্তন করতে পারেন যে আপনি জলের বেলুনটি (যদি আপনি যথেষ্ট কাছাকাছি থাকলে) কোনও নির্দিষ্ট দিকে আঘাত করতে চান বা আপনি কোনও নির্দিষ্ট দিকে যেতে চান।
বিশেষত: জলের বেলুনটি (0, 0)30 ইউনিট উচ্চ এবং ড্রপ থেকে শুরু হবে । যদি জলের বেলুনটি মাটিতে আঘাত করে তবে একজন খেলোয়াড় এলোমেলোভাবে 4 পয়েন্ট হারাতে বেছে নেওয়া হবে, যারা বেলুনের কাছাকাছি তাদের আরও বেশি ওজন দেওয়া হবে। তদতিরিক্ত, যে প্লেয়ারটি সর্বশেষে বেলুনটি আঘাত করেছে এটি 3 পয়েন্ট অর্জন করবে। অতএব, আপনি যদি সরাসরি বেলুনটি আঘাত করেন তবে আপনি সম্ভবত 1 পয়েন্ট হারাবেন।
আপনি প্রসারিত একটি ক্লাস লিখবেন Player। আপনার কনস্ট্রাক্টর প্রয়োগ করতে হবে। নির্মাতা দেখতে পাবেন:
public Player1() {
super(/* Some numbers */ 3, 3, 4)
}
এই সংখ্যাগুলি doubleএস। প্রথম সংখ্যাটি প্লেয়ারের গতির প্রতিনিধিত্ব করে, দ্বিতীয়টি শক্তিটিকে উপস্থাপন করে এবং তৃতীয়টি ভাগ্যের প্রতিনিধিত্ব করে। সংখ্যাগুলি অবশ্যই 10 বা তার বেশি যোগ করতে হবে এবং কোনও সংখ্যা শূন্যের চেয়ে কম বা সমান হতে পারে না ।
দ্বিতীয়ত, আপনাকে অবশ্যই moveপদ্ধতিটি প্রয়োগ করতে হবে । এটি একটি উদাহরণ moveপদ্ধতি:
@Override
protected Action move(Map<Player, Point2D> map, Balloon b) {
// Get my own location
Point2D myself = map.get(this);
// If I'm close enough to the balloon
// then hit the balloon
if (myself.distanceSq(b.getLocation()) <= 16) {
double d = (r.nextDouble() - 0.5) * 3;
// Random y direction, z direction is what's left
return new Hit(0, d, Math.sqrt(9 - d*d));
} else {
double diffX = b.getLocation().getX() - myself.getX(),
diffY = b.getLocation().getY() - myself.getY();
// Move towards the balloon
return new Movement(Math.signum(diffX)*3/Math.sqrt(2), Math.signum(diffY)*3/Math.sqrt(2));
}
}
এখানে বেশ কয়েকটি গুরুত্বপূর্ণ বিষয় রয়েছে। প্রথমে লক্ষ্য করুন যে ক্ষেত্রটি a হিসাবে উত্তীর্ণ হয়েছে Map<Player, Point2D>। ক্ষেত্রটি অসীম - আপনি কতদূর যেতে পারবেন তার সীমা নেই। এটি 2-মাত্রিক অ্যারে বা এর মতো কিছু নয়। তদতিরিক্ত, এর অর্থ হ'ল আপনার অবস্থান হিসাবে আপনার অ-পূর্ণসংখ্যা স্থানাঙ্ক হবে। এটা পুরোপুরি ঠিক আছে।
আরেকটি পরিণতি হ'ল প্লেয়ার এবং বেলুনটি ওভারল্যাপ হতে পারে। আসলে দুই খেলোয়াড় হুবহু একই জায়গায় থাকতে পারে!
বেলুনের একটি নির্দিষ্ট বেগ এবং দিক রয়েছে। সাধারণভাবে, এটি 3 ইউনিট / পদক্ষেপের হারে নেমে আসবে। এটি একটি xদিক এবং yদিকের দিকেও অগ্রসর হয় । আপনি যখন ফিরে আসেন Hit, আপনি বেলুনটি চাপছেন এমন x, y এবং z দিকগুলি পাস করুন। আপনি একটি বেলুন আপনি (মাত্র দুটি মাত্রা দিকে) থেকে যার উচ্চতা 10 থেকে বড় বা কার দূরত্ব 4. বেশি অতিরিক্ত মারতে পারেন না, যদি সত্যি যে x^2 + y^2 + z^2 > s^2যেখানে sআপনার শক্তি, এবং x, yএবং zনির্দেশাবলী যে তোমাকে আঘাত দ্বারা , আপনার ক্রিয়াটি বাতিল করা হয়েছে। আপনার হিটের শক্তিটি এলোমেলো সংখ্যার মধ্যে 0এবং এর মধ্য দিয়ে প্রশস্ত হয় luck(যার অর্থ আপনার ভাগ্য কম থাকলে এটি নামতে পারে)।
একইভাবে, আপনি যদি একটি আসতে পারেন Movementসঙ্গে xএবং yস্থানাঙ্ক যে আপনি (মনে রাখবেন আপনি বাতাসে লাফ করা যাবে না) সরিয়ে নিয়ে যাচ্ছি। যদি আপনার গতি x^2 + y^2 > s^2কোথায় থাকে sতবে আপনার ক্রিয়াটি বাতিল করা হবে।
যদি জলের বেলুনটি মাটিতে আঘাত করে তবে একটি এলোমেলো খেলোয়াড় বেছে নেওয়া হয়, যাদের নিকটতম তাদের বেশি ওজন দেওয়া হয় - তবে যাদের ভাগ্য বেশি তাদের ওজনও কম থাকে। নির্বাচিত খেলোয়াড়টি 4 পয়েন্ট হারায়।
নিয়ামক: https://github.com/prakol16/water-balloon-wars/tree/master
গেমটি 1000 ধাপে স্থায়ী হয়। শেষে, একটি ফাইল কল হবে log.out। গেমটি দেখার জন্য এই ফ্রিডিতে ডেটা অনুলিপি করুন এবং আটকান: https://jsfiddle.net/prankol57/s2x776dt/e এমবেডড / রেজাল্ট /
বা আরও ভাল, এটি 3D তে দেখুন: http://www.brianmacintosh.com/waterballoonwars (বিএমএকে ধন্যবাদ)
100 এর পরে সর্বোচ্চ স্কোরের খেলোয়াড় (আরও বেশি হতে পারে তবে কম নয়) গেমস জিততে পারে।
আপনি যদি কোনও সমাধান জমা দিতে চান তবে আপনি https://github.com/prakol16/water-balloon-wars/tree/master- এ সত্যই নির্দিষ্ট বিশদটি পড়তে চাইতে পারেন ।
3/8 সম্পাদনা করুন :
এগুলি এখনকার চূড়ান্ত স্কোর (১ হাজার এবং ২ জন খেলোয়াড়কে বাদ দিয়ে 1000 পুনরাবৃত্তি)। আপনি যদি আপনার পোস্ট সম্পাদনা করেন, আপনি মন্তব্য করতে পারেন, এবং আমি স্কোরগুলি আবার করব:
{
class players.BackAndForth=-75.343,
class players.Hydrophobe=-0.800,
class players.KeepAway=-53.064,
class players.Weakling=39.432,
class players.Repeller=21.238,
class players.LuckyLoser=-30.055,
class players.AngryPenguin=-49.310
}
বিজয়ীর Weaklingগড় ৩৯ পয়েন্ট ছিল। ২ য় স্থান ছিল Repeller২১ পয়েন্টের সাথে।
speedএবং strengthপ্লেয়ার কনস্ট্রাক্টর মধ্যে।
dirX, dirYএবং dirZ(আপনার ভাগ্য দ্বারা প্রশস্ত) কেবল বেলুনের বেগগুলিতে যুক্ত করা হয়েছে। যদি একাধিক লোক এটি হিট করে (কিছুটা অসম্ভব) তবে প্লেয়ার যিনি তিন পয়েন্ট পেতে পারেন তার ভাগ্য সম্পর্কে সিদ্ধান্ত নেওয়া হয়েছে (নির্দিষ্ট বিবরণ দেখুন)
