ค้นหาเส้นทางที่สั้นที่สุดผ่านสิ่งกีดขวางเมื่อเส้นทางปกติทั้งหมดถูกปิดกั้น


10

ฉันกำลังสร้าง Tower Defense และฉันมีเส้นทางการเดินขั้นพื้นฐาน แต่ฉันมีปัญหา

ฉันต้องการทำให้เส้นทางปิดกั้นได้และเมื่อมีการบล็อกเกิดขึ้นนักวิ่งจะโจมตีหอคอยปิดกั้น

ดังนั้นสิ่งที่ฉันต้องการคือวิธีหาเส้นทางที่สั้นที่สุดที่สำคัญกว่าคือมีจำนวนหอคอยที่ต่ำที่สุด

ฉันจะทำอย่างไร


1
จะไม่เป็นการตรวจจับการชนภายในเส้นทางเดินของคุณหรือไม่
Prix

เนื่องจากหอคอยที่ปิดกั้นนั้นสามารถทำลายได้จริงจึงมีเส้นทาง ค่าใช้จ่ายในการเคลื่อนที่ผ่านพวกมันนั้นสูงกว่าการเคลื่อนที่ไปตามเส้นทางที่ไม่มีสิ่งกีดขวาง (ดูคำตอบจาก coderanger ด้านล่าง)
bummzack

คำตอบ:


21

ในการให้คะแนนเส้นทางของคุณเพียงแค่ทำให้มันผ่านหอคอยมีค่าใช้จ่ายเท่ากับการผ่านแผ่นกระเบื้องจำนวนมาก โดยทั่วไปแล้วจะพยายามหลีกเลี่ยงสิ่งเหล่านี้ แต่หากไม่มีเส้นทางดังกล่าวผลลัพธ์จะยังคงผ่านอุปสรรคจำนวนน้อยที่สุด คุณสามารถปรับบทลงโทษเพื่อให้บางครั้งพวกเขาจะผ่านไปแทนที่จะไปรอบ ๆ แผนที่หากคุณต้องการเช่นกัน


ชอบที่จะเห็นตัวอย่างโค้ดของการใช้งานนี้ฟังดูง่ายและมีประสิทธิภาพ
DFectuoso

3
อัลกอริทึม A * ( en.wikipedia.org/wiki/A * _search_algorithm) ทำงานร่วมกับค่าใช้จ่ายเส้นทาง เพียงเพิ่มค่าใช้จ่ายสำหรับกลุ่มที่วิ่งผ่านหอคอย ตัวแทนของคุณจะพยายามหลีกเลี่ยงหอคอยหรือถ้ามัน "ถูกกว่า" เพื่อโจมตีหอคอยพวกเขาจะโจมตี แนวคิดของอัลกอริทึม A * คือการลดต้นทุนดังนั้นคุณควรจะสามารถบรรลุสิ่งที่คุณต้องการโดยเพียงแค่ปรับแต่งค่าเส้นทาง ...
bummzack

นี่เป็นทางออกที่ยอดเยี่ยมที่ฉันไม่คิดเลยขอบคุณ!
jhocking

เพียงแค่ทราบ: การให้เสาหอคอยมีค่าใช้จ่ายในการเคลื่อนไหวจำนวนมากโดยไม่ต้องเพิ่มค่าประมาณที่ใช้สำหรับอัลกอริทึม A * เมื่อเส้นทางถูกบล็อกอย่างเห็นได้ชัดจะหมายความว่าตัวแทนของคุณจะตรวจสอบทุกโหนดในส่วนของอุปสรรคก่อนตัดสินใจหยุดพัก ผ่านจุด ขึ้นอยู่กับจำนวนของโหนดและเอเจนต์สิ่งนี้อาจทำให้อัลกอริทึมช้าลง
Martin Sojka
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.