Tôi đã làm việc trên một boardgame có lưới hex như bảng này:
Vì bảng sẽ không bao giờ thay đổi và các khoảng trắng trên bảng sẽ luôn được liên kết với cùng các không gian khác xung quanh nó, tôi có nên mã hóa mọi khoảng trống với các giá trị mà tôi cần không? Hoặc tôi nên sử dụng các thuật toán khác nhau để tính toán các liên kết và truyền tải?
Cụ thể hơn, trò chơi hội đồng quản trị của tôi là một trò chơi 4 người trong đó mỗi người chơi có lưới hex 5x5x5x5x5x5 (một lần nữa, hình ảnh ở trên). Mục tiêu là đi từ dưới cùng của lưới lên trên cùng, với nhiều chướng ngại vật khác nhau và mỗi người chơi có thể tấn công lẫn nhau từ rìa lưới của họ vào những người chơi khác dựa trên hệ số nhân.
Vì lưới người chơi sẽ không bao giờ thay đổi và khoảng cách của bất kỳ khoảng trống tùy ý nào từ mép lưới sẽ luôn giống nhau, tôi chỉ nên mã số này vào từng khoảng trống, hoặc tôi vẫn nên sử dụng thuật toán tìm kiếm đầu tiên khi Người chơi đang tấn công?
Điều duy nhất tôi có thể nghĩ về mã hóa cứng mọi thứ là tôi sẽ mã 9+ 2 (5 + 6 + 7 + 8) = 61 ô riêng lẻ. Có bất cứ điều gì khác mà tôi thiếu mà tôi nên xem xét sử dụng các thuật toán phức tạp hơn không?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
bạn rõ ràng có thể đi đến {X-1, Y}
và {X+1, Y}
trên cùng một hàng. Trên các hàng bên dưới và bên trên, bạn có thể đi đến {X, Y-1}
và {X, Y+1}
. Cuối cùng, tùy thuộc vào số chẵn của Y
, bạn có thể truy cập {X-1, Y-1}
và {X-1, Y+1}
hoặc {X + 1, Y-1} `và{X+1, Y+1}