Scriptbot Warz!
ผลลัพธ์อยู่ในและAssassinเป็นแชมป์ของเราชนะ 2 จาก 3 แมทช์! ขอบคุณทุกคนที่ส่ง Scriptbots! ขอขอบคุณเป็นพิเศษสำหรับแตรสำหรับBestOpportunityBotซึ่งแสดงเส้นทางที่ยอดเยี่ยมและใช้ประโยชน์จากตัวเลือกการดำเนินการทั้งหมด
แผนที่ 1
แอสแซสซินดึงเอาโอกาสที่ดีที่สุดออกมาก่อนและการแข่งขันที่เหลือก็ค่อนข้างน่าเบื่อ รายละเอียดการเล่นโดยการเล่นที่นี่
- Assassin: 10 HP, 10 Dealt ความเสียหาย, 3 ดาเมจที่ได้รับ
- The Avoider v3: 10 HP, จัดการความเสียหาย 0, รับความเสียหาย 0
- ต้องกินให้หมด: 10 HP, ทำดาเมจ 0 ค่า, ทำลายดาเมจเป็น 0
- BestOpportunityBot: 0 HP, 3 ดาเมจดาเมจ, ดาเมจ 10 ดาเมจ
แผนที่ 2
BestOpportunityBot ทำผลงานได้เกือบทั้งหมดในเกมนี้ แต่ Assassin ก็สามารถพาเขาออกมาได้ในที่สุด รายละเอียดการเล่นโดยการเล่นที่นี่
- นักฆ่า: 2 HP, 10 ความเสียหายจัดการ, 9 ความเสียหายที่ได้รับ
- BestOpportunityBot: 0 HP, 32 Dealt ความเสียหาย, 10 ดาเมจที่ได้รับ
- The Avoider v3: 0 HP, 0 การจัดการความเสียหาย, การทำดาเมจ 12 ครั้ง
- ต้องกินจนจบ: 0 HP, 0 ดาเมจทำดาเมจ, ดาเมจ 11 ดาเมจ
แผนที่ 3
BestOpportunityBot ผลักให้ทุกคนเข้าสู่กับดักในการแข่งขันครั้งนี้ เด็ดมาก รายละเอียดการเล่นโดยการเล่นที่นี่
- BestOpportunityBot: 10 HP, 30 Damage Dealt, 0 Damage ที่ได้รับ
- นักฆ่า: 0 HP, 0 ความเสียหายที่ทำ, ความเสียหายที่ได้รับ 0
- ต้องกินให้หมด: 0 HP, 0 ดาเมจทำดาเมจ, 0 ดาเมจที่ทำ
- The Avoider v3: 0 HP, 0 การทำดาเมจ 0, ดาเมจที่เกิดความเสียหาย
ขอบคุณสำหรับคำตอบ! เนื่องจากมีเพียง Scriptbots 4 ตัวเราจึงละทิ้งแผนการทัวร์นาเมนท์สำหรับการแข่งขันฟรีสามรายการทั้งหมดหนึ่งรายการในแต่ละแผนที่ด้านล่าง scriptbot ที่มีสถิติการชนะสูงสุดเป็นผู้ชนะ ในกรณีที่มีการเสมอกันเราจะเข้าสู่ความตายโดยฉับพลันโดย scriptbot ที่ทำลายการเสมออันดับแรก
งานของคุณถ้าคุณเลือกที่จะรับมันก็คือการเขียนรหัส Scriptbot ซึ่งสามารถท่องแผนที่ ASCII และทำลายฝ่ายตรงข้าม การต่อสู้แต่ละครั้งจะอยู่ในรูปแบบของเกมเทิร์นเบสแบบสุ่มเริ่มต้นโดยที่ Scriptbot แต่ละคนมีโอกาสใช้คะแนนพลังงาน (EP) เพื่อดำเนินการ สคริปต์ GameMaster จะป้อนข้อมูลเข้าและตีความผลลัพธ์จาก Scriptbot แต่ละรายการ
สิ่งแวดล้อม
แต่ละ Scriptbot มีอยู่ในสารบบของตัวเองที่จะสามารถอ่านจากmap
และstats
ไฟล์และอ่าน / เขียนไปยังdata
แฟ้ม data
ไฟล์สามารถนำมาใช้ในการจัดเก็บข้อมูลแบบถาวรที่คุณอาจพบว่ามีประโยชน์
ไฟล์สถิติ
stats
ไฟล์มีข้อมูลเกี่ยวกับฝ่ายตรงข้ามของคุณและมีรูปแบบดังนี้ ผู้เล่นแต่ละคนจะแสดงในแถวที่แยกต่างหาก คอลัมน์แรกคือรหัสผู้เล่น ( @
หมายถึงคุณ) คอลัมน์ที่สองคือสุขภาพของผู้เล่นนั้น
1,9HP
@,10HP
3,9HP
4,2HP
ไฟล์แผนที่
map
ไฟล์อาจมีลักษณะบางอย่างเช่นนี้ ...
####################
# # # #
# 1 # # 2 #
# #
### ###
# #
# # #
# # ! #
# # #
# !#### #
# ####! #
# # #
# ! # #
# # #
# #
### ###
# #
# 3 # # @ #
# # # #
####################
... หรือนี่ ...
######################################
# # 1 # @ #
# # # #! #
# # # #### #
# # # # # !#! #
# # # # # ##### #
# ### # #### # # #
# # #! ### # #
# ###### # # # ##### #
# #! # ###### # !# #
# ### # # # #
# # 2 # # 4 # #
######################################
... หรือนี่ ...
###################
###!!!!!!#!!!!!!###
##! !##
#! 1 ! 2 !#
#! ! !#
#! !#
#! !#
#! !!! !#
## !! !!! !! ##
#! !!! !#
#! !#
#! !#
#! ! !#
#! 3 ! @ !#
##! !##
###!!!!!!#!!!!!!###
###################
... หรือมันอาจดูแตกต่างอย่างสิ้นเชิง ไม่ว่าจะด้วยวิธีใดอักขระที่ใช้และความหมายจะยังคงเหมือนเดิม:
#
ผนังที่ไม่สามารถใช้ได้และไม่ยอมรับ1
,2
,3
... ตัวเลขที่แสดงเป็นผู้เล่นที่ศัตรู ตัวเลขเหล่านี้สอดคล้องกับรหัสประจำตัวผู้เล่นในstats
ไฟล์!
กับดัก. Scriptbots ที่ย้ายไปยังสถานที่เหล่านี้จะตายทันที@
ตำแหน่ง Scriptbot ของคุณพื้นที่เปิดโล่งซึ่งคุณสามารถเดินไปมาได้อย่างอิสระ
เพลย์
สคริปต์ GameMaster จะกำหนดลำดับเริ่มต้นแบบสุ่มให้กับ Scriptbots Scriptbots จะถูกเรียกใช้ในลำดับนี้ขณะที่ยังมีชีวิตอยู่ Scriptbots มี 10 คะแนนสุขภาพ (HP) และเริ่มต้นด้วย 10 คะแนนพลังงาน (EP) ทุกครั้งที่พวกเขาสามารถใช้เพื่อย้ายหรือโจมตี ในตอนเริ่มต้นของการเปิดแต่ละครั้ง Scriptbot จะรักษา HP หนึ่งตัวหรือจะได้รับ EP เพิ่มเติมหนึ่งอันหากมีอยู่ที่ 10 HP (ดังนั้นการวิ่งอาจเป็นกลยุทธ์ที่ใช้งานได้ในบางครั้ง)
การต่อสู้สิ้นสุดลงเมื่อ Scriptbot รอดชีวิตเพียงคนเดียวหรือเมื่อ 100 รอบที่ผ่านไป หากหลาย ๆ สคริปบอทยังมีชีวิตอยู่ในตอนท้ายของการต่อสู้ตำแหน่งของมันจะถูกกำหนดตามเกณฑ์ต่อไปนี้:
- สุขภาพส่วนใหญ่
- ความเสียหายส่วนใหญ่กระทำ
- ความเสียหายส่วนใหญ่ที่ได้รับ
Scriptbot Input
GameMaster จะพิมพ์แผนที่การต่อสู้ไปยังไฟล์ที่ชื่อว่าmap
ซึ่ง Scriptbot จะสามารถเข้าถึงเพื่ออ่านได้ แผนที่อาจมีรูปแบบใด ๆ ดังนั้นจึงเป็นสิ่งสำคัญที่ Scriptbot สามารถตีความได้ Scriptbot ของคุณจะถูกเรียกใช้โดยมีพารามิเตอร์หนึ่งตัวระบุ EP ตัวอย่างเช่น...
:> example_scriptbot.py 3
Scriptbot จะถูกเรียกใช้จนกว่าจะใช้ EP ทั้งหมดหรือสูงสุด10 11 ครั้ง ไฟล์แผนที่และสถิติจะได้รับการอัพเดตก่อนการร้องขอแต่ละครั้ง
Scriptbot เอาท์พุต
Scriptbots ควรแสดงผลการกระทำของพวกเขาเพื่ออ้วน รายการของการกระทำที่เป็นไปได้มีดังนี้:
MOVE <DIRECTION> <DISTANCE>
ค่าใช้จ่าย 1 EP
DISTANCE
ต่อMOVE
คำสั่งย้าย Scriptbot ไปรอบ ๆ แผนที่ หากมีบางอย่างในทางเช่นกำแพงหรือ Scriptbot อื่น GameMaster จะย้าย Scriptbot ของคุณเท่าที่จะทำได้ หากมีDISTANCE
มากกว่า EP ที่เหลือของ Scriptbot GameMaster จะย้าย Scriptbot จนกว่า EP ของมันจะหมดDIRECTION
อาจจะเป็นทิศทางใด ๆ ของเข็มทิศN
,E
, หรือS
W
PUSH <DIRECTION> <DISTANCE>
ค่าใช้จ่าย 1 EP
DISTANCE
ต่อPUSH
คำสั่งช่วยให้ Scriptbot ที่จะย้าย Scriptbot อื่น Scriptbot ที่ออกคำสั่งจะต้องอยู่ถัดจาก Scriptbot ที่ถูกผลักโดยตรง Scriptbots ทั้งสองจะเคลื่อนที่ไปในทิศทางที่ระบุหากไม่มีวัตถุที่ถูกบล็อค Scriptbot ที่ถูกผลักDIRECTION
และDISTANCE
เป็นเช่นเดียวกับMOVE
คำสั่งATTACK <DIRECTION>
เสียค่าใช้จ่ายหนึ่ง EP
ATTACK
คำสั่งข้อตกลง 1 ความเสียหายให้กับ Scriptbot โดยตรงต่อไปที่จะออก Scriptbot และในทิศทางที่ระบุไว้DIRECTION
เป็นเช่นเดียวกับMOVE
คำสั่งPASS
จบเทิร์นของคุณ
ภาษาที่รองรับ
เพื่อให้เหมาะสมกับฉันฉันจะยอมรับภาษาต่อไปนี้:
- ชวา
- Node.js
- หลาม
- PHP
คุณถูก จำกัด ไว้ที่ห้องสมุดซึ่งบรรจุด้วยภาษาของคุณโดยทั่วไป โปรดอย่าทำให้ฉันค้นหาไลบรารีที่ไม่ชัดเจนเพื่อให้โค้ดของคุณใช้งานได้
การส่งและการตัดสิน
โพสต์ซอร์สโค้ด Scriptbot ของคุณด้านล่างและตั้งชื่อที่ดี! โปรดระบุรุ่นภาษาที่คุณใช้ด้วย Scriptbots ทั้งหมดจะถูกตรวจสอบสำหรับ tomfoolery ดังนั้นโปรดแสดงความคิดเห็นให้ดีและอย่าทำให้รหัสของคุณยุ่งเหยิง
คุณอาจส่งมากกว่าหนึ่งรายการ แต่โปรดทำให้เป็นรายการที่ไม่ซ้ำกันโดยสิ้นเชิงและไม่ใช่รุ่นเดียวกัน ตัวอย่างเช่นคุณอาจต้องการรหัสบอท Zerg Rush และบอร์กอริลลาสงคราม ไม่เป็นไร. อย่าโพสต์ Zerg Rush v1, Zerg Rush v2 เป็นต้น
ในวันที่ 7 พฤศจิกายนฉันจะรวบรวมคำตอบทั้งหมดและคำตอบที่ผ่านการตรวจสอบเบื้องต้นจะถูกเพิ่มลงในวงเล็บแข่งขัน แชมป์เปี้ยนจะได้คำตอบที่ยอมรับได้ วงเล็บในอุดมคติแสดงอยู่ด้านล่าง เนื่องจากมีแนวโน้มว่าจะไม่เท่ากับ 16 รายการวงเล็บบางตัวจึงอาจมีเพียงสามหรือสองบ็อต ฉันจะพยายามทำให้วงเล็บเป็นธรรมที่สุด การเล่นพรรคเล่นพวกที่จำเป็นใด ๆ (ในกรณีที่จำเป็นต้องมีสัปดาห์ก่อนเช่น) จะมอบให้กับบอทที่ส่งมาก่อน
BOT01_
BOT02_|
BOT03_|____
BOT04_| |
|
BOT05_ |
BOT06_|___ |
BOT07_| | |
BOT08_| | |_BOT ?_
|___BOT ?_|
BOT09_ ___BOT ?_|___CHAMPION!
BOT10_| | _BOT ?_|
BOT11_|__| |
BOT12_| |
|
BOT13_ |
BOT14_|____|
BOT15_|
BOT16_|
Q & A
ฉันแน่ใจว่าฉันไม่ได้รับรายละเอียดดังนั้นอย่าลังเลที่จะถามคำถาม!
ขอให้เราเชื่อมั่นว่าไฟล์แผนที่ล้อมรอบด้วยสัญลักษณ์ # เสมอหรือไม่ ถ้าไม่เป็นเช่นนั้นจะเกิดอะไรขึ้นในกรณีที่บอทพยายามเดินออกจากแผนที่ - BrainSteel
ใช่แผนที่จะถูกล้อมรอบด้วย # และ Scriptbot ของคุณจะเริ่มต้นภายในขอบเขตเหล่านี้
หากไม่มีบอทอยู่ในทิศทางที่ระบุในคำสั่ง PUSH ฟังก์ชันคำสั่งจะทำงานอย่างไร - BrainSteel
GameMaster จะไม่ทำอะไรเลยจะใช้ศูนย์ EP และ Scriptbot จะถูกเรียกอีกครั้ง
EP ที่ไม่ได้ใช้มีการสะสมหรือไม่ - feersum
ไม่แต่ละ Scriptbot จะเริ่มรอบ / หมุนด้วย 10 EP EP ใด ๆ ที่ไม่ได้ใช้จะเสียไป
ฉันคิดว่าฉันเข้าใจแล้ว แต่เพื่อชี้แจง: ด้วยบอต A และ B คือลำดับของเหตุการณ์ A @ 10EP-> MOVE MAP_UPDATE B @ 10EP-> PUSH MAP_UPDATE A @ 9EP-> ATTACK MAP_UPDATE B @ 9EP-> การโจมตี ... หรือ A @ 10EP-> ย้าย A @ 9EP-> ATTACK ... MAP_UPDATE B @ 10EP-> PUSH B @ 9EP-> ATTACK ... MAP_UPDATE หรือไม่ ในคำอื่น ๆ การกระทำทั้งหมดในอะตอมลูปคิวรีคอนโทรลเลอร์บอทควบคุมเดียวหรือไม่ ถ้าเป็นเช่นนั้นทำไมลูป? ทำไมไม่ส่งคืนไฟล์เดียวพร้อมกับการกระทำทั้งหมดที่จะทำให้เสร็จ มิฉะนั้นบ็อตจะต้องเขียนไฟล์สถานะของตัวเองเพื่อติดตามลำดับการทำงานหลายแบบ ไฟล์ map / stats จะใช้ได้ก่อนดำเนินการครั้งแรกเท่านั้น - COTO
ตัวอย่างที่สองของคุณใกล้เคียง แต่ไม่ถูกต้องนัก ในระหว่างการหมุน Scriptbot จะถูกเรียกซ้ำ ๆ จนกระทั่ง EP ถูกใช้ไปหรือสูงสุด 11 ครั้ง ไฟล์แผนที่และสถิติจะได้รับการอัพเดตก่อนการร้องขอแต่ละครั้ง การวนซ้ำนั้นมีประโยชน์ในกรณีที่ bot ให้ผลลัพธ์ที่ไม่ถูกต้อง GameMaster จะจัดการกับเอาต์พุตที่ไม่ถูกต้องและทำให้บ็อตกลับมาอีกครั้งทำให้บอทมีโอกาสที่จะแก้ไขเพราะมันผิดพลาด
คุณจะปล่อยสคริปต์ GameMaster เพื่อทำการทดสอบหรือไม่ - IchBinKeinBaum
สคริปต์ GameMaster จะไม่ถูกปล่อยออกมา ฉันขอแนะนำให้คุณสร้างไฟล์แผนที่และสถิติเพื่อทดสอบพฤติกรรมของบอท
หาก robotA ผลักดันหุ่นยนต์ B ไปยังกับดักหุ่นยนต์จะให้เครดิตกับ "ดาเมจที่ได้รับความเสียหาย" ซึ่งเท่ากับคะแนนปัจจุบันของหุ่นยนต์ B หรือไม่ - Mike Sweeney
ใช่นั่นเป็นความคิดที่ดี บอทจะได้รับคะแนนความเสียหายเท่ากับสุขภาพของบอทที่มันดันเข้ากับดัก
#
และ Scriptbot ของคุณจะเริ่มต้นภายในขอบเขตเหล่านี้
map
ไฟล์นั้นล้อมรอบด้วย#
สัญลักษณ์เสมอ? ถ้าไม่เป็นเช่นนั้นจะเกิดอะไรขึ้นในกรณีที่บอทพยายามเดินออกจากแผนที่