Đầu tiên - tôi biết tôi đang trở nên siêu dày đặc ở đây.
Ngoài ra, tôi đang cố gắng viết một triển khai C # của thuật toán này:
var results = []
for each -N ≤ dx ≤ N:
for each max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N):
var dz = -dx-dy
results.append(cube_add(center, Cube(dx, dy, dz)))
Tôi đã lấy cái này từ nguồn tài nguyên to lớn này .
Vấn đề của tôi là mọi việc thực hiện điều này tôi đã thử cho đến nay đều có kết quả điên rồ. Ví dụ: mã hiển thị bên dưới hiện đang dẫn đến kết quả này:
và điều này:
Mã của tôi hiện đang ngồi như thế này:
for (int x = this.CellPositionX - distance; x <= this.CellPositionX + distance; x++)
{
for (int y = this.CellPositionY - Math.Max(-distance, -x - distance); y <= this.CellPositionY + Math.Min(distance, -x + distance); y++)
{
HexPosition rangePosition = new HexPosition(x, y);
range.Add(rangePosition);
}
}
Bất cứ ai có thể phát hiện ra một cái gì đó khủng khiếp ở đây? Mọi lời đề nghị đều được chào đón. Tôi đã đập đầu vào cái này một lúc rồi.
Cảm ơn!
Lưu ý cập nhật: Tôi đang sử dụng tọa độ Axial trong lưới. Cập nhật # 2: như được chỉ ra dưới đây, tôi đã sai vòng lặp for..each và không sử dụng deltas cho công việc. Cảm ơn đã giúp đỡ!
Tôi hiện đang có một vấn đề như được hiển thị bên dưới với việc thực hiện từ các câu trả lời:
Tôi sẽ tiếp tục điều tra - nếu tôi nhận ra tôi sẽ đăng kết quả đầy đủ trở lại đây. Cảm ơn tất cả!