Xác định vị trí con đường ngắn nhất qua chướng ngại vật khi tất cả các đường dẫn bình thường bị chặn


10

Tôi đang thực hiện một Tower Defense và tôi có hoạt động tìm đường cơ bản, nhưng tôi gặp một vấn đề.

Tôi muốn làm cho đường dẫn có thể bị chặn, và khi một khối xảy ra, người chạy sẽ tấn công các tháp chặn.

Vì vậy, những gì tôi cần là một cách để tìm ra con đường ngắn nhất mà quan trọng hơn là có số lượng tháp thấp nhất trên đường đi.

Làm thế nào để làm điều đó?


1
đó sẽ không phải là một phát hiện va chạm trong con đường đi bộ của bạn?
Giải thưởng

Vì các tháp chặn là có thể phá hủy, thực sự có một con đường. Chỉ cần chi phí di chuyển qua chúng là cao hơn so với di chuyển dọc theo một con đường không bị cản trở. (Xem câu trả lời từ coderanger bên dưới)
bummzack

Câu trả lời:


21

Trong đường dẫn của bạn, chỉ cần làm cho nó đi qua một tòa tháp có chi phí tương tự như đi qua một số lượng lớn gạch. Nói chung, nó sẽ cố gắng vượt qua chúng, nhưng nếu không có con đường như vậy, đầu ra vẫn sẽ vượt qua số lượng chướng ngại vật ít nhất. Bạn có thể điều chỉnh hình phạt để đôi khi họ sẽ chỉ đi qua thay vì đi khắp bản đồ nếu bạn muốn.


rất thích xem một ví dụ mã về triển khai này, nghe có vẻ đơn giản và mạnh mẽ
DFectuoso

3
Thuật toán A * ( en.wikipedia.org/wiki/A * _search_alacticm) hoạt động với chi phí đường dẫn. Chỉ cần tăng chi phí cho các phân khúc chạy qua một tòa tháp. Các đặc vụ của bạn sau đó sẽ cố gắng tránh các tòa tháp, hoặc nếu nó "rẻ hơn" để tấn công một tòa tháp, họ sẽ tấn công nó. Ý tưởng của thuật toán A * là để giảm thiểu chi phí, vì vậy bạn sẽ có thể đạt được những gì bạn muốn bằng cách điều chỉnh chi phí đường dẫn ...
bummzack

Đây là một giải pháp tuyệt vời mà tôi sẽ không nghĩ tới, cảm ơn!
jhocking

Chỉ cần lưu ý: Cung cấp cho các nút tháp một chi phí di chuyển khổng lồ mà không làm tăng ước tính được sử dụng cho thuật toán A * khi đường dẫn bị chặn rõ ràng sẽ có nghĩa là các nhân viên của bạn sẽ kiểm tra mọi nút trên phần chướng ngại vật trước khi quyết định phá vỡ qua điểm. Tùy thuộc vào số lượng nút và tác nhân, điều này có thể làm cho thuật toán bị chậm một cách nghiêm trọng.
Martin Sojka
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.