ความท้าทายนี้สิ้นสุดลงแล้ว หากต้องการดูคะแนนสุดท้ายของคู่แข่งคลิกที่นี่
ในความท้าทายนี้การส่งแต่ละครั้งจะเป็นหนึ่งบอท บอทแต่ละอันควรเป็นฟังก์ชัน Javascript บอทจะต่อสู้เพื่อให้ได้มูลค่ารวมสูงสุดในทองคำ ทองสามารถทำไร่ไถนาหรือได้รับจากการฆ่าบอทอื่น ๆ และใช้เพื่อยกระดับการรักษาการโจมตีการป้องกันและการทำฟาร์ม
วัตถุประสงค์:
จำนวนรอบที่มีมากถึง 1,000 รอบ (จบลงเมื่อเหลือบอทเพียงอันเดียว) บอทที่มีมูลค่ารวมสูงสุด (ผลรวมของทองคำทั้งหมดที่ได้รับ) จะเป็นผู้ชนะ
ย้อนกลับ:
ในแต่ละเทิร์นบอททุกอันที่ยังมีชีวิตอยู่ (> 0 HP) จะถูกเรียกใช้ครั้งเดียว สามารถส่งคืนการย้ายซึ่งสามารถเป็นหนึ่งในสิ่งต่อไปนี้:
- รักษา: ฟื้น HP
- การโจมตี: ลบ HP ออกจากบอทอื่น
- โล่: ป้องกันการโจมตีในภายหลัง
- Stun: ข้ามการเปิดรอบถัดไปของ bot อื่น
- ฟาร์ม: รับทองด้วยค่า HP
- อัพเกรด: ทำให้การเคลื่อนไหวบางอย่างดีขึ้น
บอตทั้งหมดจะกลับมาเคลื่อนไหวก่อนที่จะถูกประหารดังนั้น stun, Heal, Attack, shield, ฯลฯ จะไม่ส่งผลต่อบอทที่เคลื่อนที่ในภายหลังในเทิร์นนั้น ตัวอย่างเช่นหากบอท A ตะลึงบอท B และบอทบีอยู่หลังบอท A ตามลำดับเทิร์นบอท B จะยังคงเคลื่อนที่ในภายหลังในเทิร์นเดียวกันและจะเกิดการสตันในเทิร์นถัดไป
การต่อสู้การทำนาและการอัพเกรด:
บอทแต่ละอันมี HP สูงสุดได้สูงสุด 100 และโพสต์ที่ได้รับมอบหมายระหว่าง 0 ถึง 99 โพสต์นี้จะเปลี่ยนหลังจากทุกรอบและเป็นวิธีที่บอตติดตามกันและกัน
การรักษาเป็นหนึ่งในท่าที่ง่ายที่สุดเพิ่ม HP ตามจำนวนที่กำหนด (เริ่มที่ 5 HP) บอทไม่สามารถรักษาได้ 100 HP ที่ผ่านมา
การโจมตีบอทด้วย UID ของมันนั้นเป็นไปได้อีกท่าหนึ่งโดยมีความเสียหายพื้นฐาน 5 HP ที่ระดับ 0 บอทสามารถถูกสตันได้ด้วยการข้ามรอบถัดไปของพวกเขาไปซึ่งยังใช้ UID ด้วย
บอทนั้นมีเกราะป้องกัน HP เพิ่มเติมซึ่งไม่มีขีด จำกัด โล่ HP นี้จะดูดซับความเสียหายจากการโจมตีโดยตรงจากบอทอื่น ๆ และถูกเพิ่มโดยการป้องกัน ที่ระดับ 0 การป้องกันจะเพิ่ม 5 โล่ HP
การทำฟาร์มจะได้รับทองคำ 5 ระดับที่ค่า HP 2 HP 2 ตัวนี้ไม่สามารถป้องกันได้ การใช้งานสำหรับทองเท่านั้น (เกินกว่าจะชนะ) คือการอัพเกรดการเคลื่อนไหว การรักษาการโจมตีและการป้องกันมีค่าพื้นฐาน 5 HP และการทำฟาร์มเริ่มที่ 5 ทอง การเคลื่อนไหวแต่ละอย่างนั้นมีระดับของแต่ละบุคคลซึ่งเริ่มต้นที่ 0 สูตรเหล่านี้จะกำหนดค่าใน HP หรือทองของการเคลื่อนไหวโดยที่ L คือระดับ:
- การรักษา:
L + 5
- ทุ่ม:
1.25L + 5
- ป้องกัน:
1.5L + 5
- เครื่องจักร:
2L + 5
ค่าใช้จ่ายในการอัพเกรดการย้ายใด ๆ จะเหมือนกันในระดับหนึ่งและถูกกำหนดโดย2.5L² + 2.5L + 10
ที่ L คือระดับปัจจุบัน บอทสามารถใช้ฟังก์ชั่นcost(currentLevel)
เป็นทางลัดเพื่อตรวจสอบสิ่งนี้
บอทเริ่มต้นด้วย 25 ทองทำให้พวกเขาอัพเกรดได้อย่างรวดเร็วทั้งสองย้ายเป็นระดับ 1 หรือย้ายไปที่ระดับ 2 ทองเริ่มต้นนี้จะไม่นับรวมกับมูลค่าบอททั้งหมด การฆ่าบอทจะให้ครึ่งหนึ่งของมูลค่าทั้งหมดของคุณในทองคำปัดเศษขึ้นและหากบอทสองตัวฆ่าอีกเทิร์นเดียวกันพวกเขาทั้งคู่จะได้รับรางวัล
Input / Output:
เพื่อสื่อสารกับคอนโทรลเลอร์ค่าส่งคืนของฟังก์ชันใช้เพื่อส่งข้อมูลการย้าย หนึ่งในสิ่งเหล่านี้ควรถูกส่งคืน:
- รักษา:
heal()
- โจมตี:
attack(uid)
- โล่:
shield()
- งัน:
stun(uid)
- ฟาร์ม:
farm()
- ปรับรุ่น:
upgrade("heal" / "attack" / "shield" / "farm")
ในการข้ามการเลี้ยว (ไม่ทำอะไรเลย) ไม่ต้องส่งคืนหรือคืนค่าที่ผิดพลาด
เพื่อให้ได้จำนวนเปิดปัจจุบัน (เริ่มต้นที่ 1) turn()
การใช้งาน
ข้อโต้แย้งของฟังก์ชั่นของคุณจะรวมถึงข้อมูลเกี่ยวกับบ็อต UID ของบ็อตอื่น ๆ และที่เก็บข้อมูลระหว่างทาง อาร์กิวเมนต์แรกเป็นวัตถุที่มีคุณสมบัติดังต่อไปนี้: uid
, hp
, และgold
shield
นี่คือสำเนาของข้อมูลปัจจุบันของบอทของคุณ นอกจากนี้ยังมีวัตถุที่ซ้อนกันlevels
กับตัวเลขระดับของheal
, attack
, และshield
farm
อาร์กิวเมนต์ที่สองเป็นอาร์เรย์สับของบอทมีชีวิตอื่น ๆ ทั้งหมดกว่าของคุณในรูปแบบที่เป็นวัตถุที่มีคุณสมบัติuid
, hp
(บวกโล่) worth
และattack
(ระดับการโจมตี) อาร์กิวเมนต์ที่สามเป็นวัตถุว่างซึ่งสามารถใช้สำหรับการจัดเก็บระหว่างเทิร์น
บอทตัวอย่าง:
บอทนี้จะทำฟาร์มจนกว่าจะสามารถอัพเกรดการโจมตีเป็นระดับ 5 จากนั้นโจมตีบอทสุ่มทุกเทิร์นจนกว่ามันจะตาย (หรือชนะ) ไม่ค่อยมีประสิทธิภาพเนื่องจากขาดการรักษา / การป้องกัน
function freeTestBotA(me, others, storage) {
if (me.levels.attack < 5) {
if (me.gold < cost(me.levels.attack))
return farm();
return upgrade("attack");
}
return attack(others[0].uid);
}
บอทนี้มีสองโหมด: การรุกและการป้องกัน มันจะทำให้ตกใจบอทสุ่มหรือรักษาเมื่ออยู่ในโหมดการป้องกันและมันจะโจมตีหรือป้องกันเมื่ออยู่ในโหมดที่น่ารังเกียจ มันจะพยายามอัพเกรดการโจมตีทุกครั้งที่ทำได้
function freeTestBotB(me, others, storage) {
if (me.gold >= cost(me.levels.attack))
return upgrade("attack");
if (me.hp < 50)
if (Math.random() < 0.5)
return stun(others[0].uid);
else
return heal();
else
if (Math.random() < 0.5)
return attack(others[0].uid);
else
return shield();
}
กฎ:
- ห้ามมีช่องโหว่มาตรฐาน
- บอตอาจไม่อ่านแก้ไขหรือเพิ่มตัวแปรใด ๆ ที่อยู่นอกขอบเขตของพวกเขาอาจไม่พยายามโกงและอาจไม่เรียกฟังก์ชันที่กำหนดโดยคอนโทรลเลอร์หรือฟังก์ชัน DOM
- ค่าส่งคืนต้องเป็นเท็จหรือเป็นหนึ่งในฟังก์ชันของเอาต์พุตด้านบน
- บอตไม่ควรได้รับการออกแบบมาเพื่อกำหนดเป้าหมายเฉพาะบอท แต่สามารถออกแบบมาเพื่อใช้ประโยชน์จากกลยุทธ์ทั่วไป
- บอตไม่สามารถโจมตีตนเองได้ (ค้นพบเนื่องจากความคิดเห็นโดย @Ness)
- บอตจะต้องแตกต่างจากบอทอื่น ๆ อย่างเพียงพอที่พวกเขาสามารถพิจารณาได้อย่างสมเหตุสมผล
- ไม่อนุญาตการทำงานเป็นทีม
- สามารถดูคอนโทรลเลอร์ได้ที่นี่
- ห้องสนทนา
การดีบักคอนโทรลเลอร์ใหม่:
การใช้ไฟล์gold-battle-log.js
คุณสามารถตั้งค่าdebug
คุณสมบัติของบอทbotData
เป็น 0 (ไม่มีการบันทึก), 1 (การย้ายบันทึก) หรือ 2 (บันทึกการเคลื่อนไหว, HP, ทอง, ระดับ ฯลฯ )
การท้าทายสิ้นสุดเวลา 1700 UTC ในวันศุกร์ที่ 9 สิงหาคม
[closed]
ท้ายที่สุดก็น่าจะทำให้ผู้ชมทั่วไปข้ามการอ่านความท้าทายของฉันเนื่องจากพวกเขาคิดว่ามันมีคุณภาพต่ำหรือไม่เป็นหัวข้อ