Cách hiệu quả để biểu diễn logic bảng lục giác cho các trò chơi giống bào ngư


11

Tôi phải triển khai trò chơi AI cho Bào ngư và tôi tự hỏi đâu là cách tốt nhất để thể hiện logic bảng bằng cách sử dụng Java mà không lãng phí quá nhiều tài nguyên trong tất cả các kiểm tra và cập nhật các thói quen liên quan.

Là tốt hơn sử dụng danh sách khác nhau? Một ma trận của các đối tượng di động? Bất kì lời đề nghị nào?

nhập mô tả hình ảnh ở đây


1
Có một nguồn tài nguyên tuyệt vời cho lưới lục giác tại redblobgames.com Nó có mọi thứ bạn cần biết về lưới lục giác, hệ tọa độ của chúng và cách tính toán trên chúng.
Roman Reiner

Câu trả lời:


7

1) vì bảng có kích thước cố định mà bạn sẽ tiếp tục sử dụng AI, nên bạn có thể biểu diễn nó dưới dạng một mảng với số lượng ô phù hợp, trong đó mỗi ô biểu thị một khoảng trắng trên bảng. Ánh xạ mảng một chiều ra màn hình để trình bày có thể hơi lạ, nhưng đó là vấn đề bạn chỉ phải giải quyết một lần.

Điều tương tự sẽ được áp dụng để xác nhận di chuyển; bạn có thể tạo một ma trận kề, cho biết các ô nào liền kề với các ô khác hoặc đưa ra logic để xác định kề. Dù bằng cách nào, nó sẽ là một chi phí một lần.

2) Lưu ý rằng mọi lưới hex cũng là một lưới hai trục, ngoại trừ các trục là 60 hoặc 120 độ lệch với nhau, thay vì 90 độ như các lưới trong đó X và Y vuông góc nhau. (Các bảng tên gạch lục giác cũ đã sử dụng thủ thuật này để gắn nhãn các hình lục giác 1, 2, 3 theo một hướng và hướng AA, BB, CC theo hướng khác, lệch, hướng.)

Tôi đã xem mã nguồn để triển khai trên máy tính các trò chơi bảng sử dụng (2) và họ đã cung cấp các thói quen như "tìm đường giữa các hình lục giác" hoặc "tìm khoảng cách giữa các hình lục giác". Đó là một thời gian dài trước đây, vì vậy các chi tiết bị mất theo thời gian, nhưng tôi nhớ nó không quá khó.

(Đó là toán học số nguyên nhiều hơn là công cụ Pythagore .;))


1
Để tạo ra AI từ nhiều năm trước, tôi đã có một mảng 19x19 và một mảng con trỏ 192x5 đến các ô mà AI sau đó sử dụng để tìm ra bước đi của nó.
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.