यह राजा-का-पहाड़ी खेल एक रणनीति खेल है जिसमें आपको पानी के गुब्बारे के चारों ओर फेंकना चाहिए और पानी से अलग होने से बचना चाहिए। लक्ष्य सबसे अधिक अंक प्राप्त करना है। आपको खेत का नक्शा और पानी के गुब्बारे का स्थान दिया जाएगा। आप या तो वापस कर सकते हैं कि आप एक निश्चित दिशा में पानी के गुब्बारे (यदि आप काफी करीब हैं) को हिट करना चाहते हैं या आप एक निश्चित दिशा में आगे बढ़ना चाहते हैं।
विशेष रूप से: पानी का गुब्बारा (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));
}
}
यहां कई महत्वपूर्ण चीजें हैं। सबसे पहले, ध्यान दें कि फ़ील्ड को एक के रूप में पारित किया गया है 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/embedded/result/
या इससे भी बेहतर, इसे 3 डी में देखें: http://www.brianmacintosh.com/waterballoonwars (BMac के लिए धन्यवाद)
100 के बाद सबसे अधिक अंकों वाला खिलाड़ी (अधिक हो सकता है, लेकिन कम नहीं) खेल जीतता है।
यदि आप कोई समाधान प्रस्तुत करना चाहते हैं, तो आप https://github.com/prakol16/water-balloon-wars/tree/master पर वास्तव में विशिष्ट विवरण पढ़ना चाह सकते हैं ।
3/8 संपादित करें :
ये अब के लिए अंतिम स्कोर हैं (1000 पुनरावृत्तियों, खिलाड़ियों 1 और 2 को शामिल किए बिना)। यदि आप अपनी पोस्ट को संपादित करते हैं, तो आप टिप्पणी कर सकते हैं, और मैं स्कोर फिर से बनाऊंगा:
{
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औसत 39 अंकों के साथ था । 2 वाँ स्थान Repeller21 अंकों के साथ था ।
speedऔर strengthप्लेयर कंस्ट्रक्टर में।
dirX, dirYऔर dirZ(अपनी किस्मत द्वारा परिलक्षित) बस गुब्बारे का वेग से जुड़ जाते हैं। यदि कई लोग इसे (कुछ हद तक संभावना नहीं) मारते हैं, तो खिलाड़ी को तीन अंक मिल सकते हैं, भाग्य पर फैसला किया जाता है (विशिष्ट विवरण देखें)
