Tôi đang tạo trò chơi. Trò chơi bao gồm một mặt phẳng vô hạn. Các đơn vị phải nằm trên một hình vuông riêng biệt, vì vậy chúng có thể được đặt với một đơn giản Location { x :: Int, y :: Int }
Cách tạo mô hình thế giới 2D trong Haskell
Có thể có nhiều loại Unit
s. Một số có thể là sinh vật, và một số chỉ là vật thể, giống như một khối đá, hoặc gỗ (nghĩ rằng 2d minecraft đó). Nhiều người sẽ trống rỗng (chỉ cỏ hoặc bất cứ thứ gì).
Bạn sẽ mô hình hóa điều này trong Haskell như thế nào? Tôi đã xem xét việc làm dưới đây, nhưng những gì về Object vs Creature? họ có thể có các lĩnh vực khác nhau? Bình thường hóa tất cả chúng trên Đơn vị?
data Unit = Unit { x :: Int, y :: Int, type :: String, ... many shared properties... }
Tôi cũng đã xem xét việc có một loại vị trí
data Location = Location { x :: Int, y :: Int, unit :: Unit }
-- or this
data Location = Location { x :: Int, y :: Int }
data Unit = Unit { unitFields... , location :: Location }
Bạn có bất cứ ý tưởng? Trong một ngôn ngữ OO, tôi có thể đã có Location
hoặc Unit
kế thừa từ khác, và làm cho các loại đơn vị cụ thể kế thừa từ mỗi khác.
Một lưu ý khác là sẽ gửi rất nhiều đối tượng này qua dây, vì vậy tôi cần serialize chúng vào JSON để sử dụng trên máy khách và không muốn viết tấn bản mẫu soạn thảo.
Sử dụng 'Data.Map.Map' làm lưới của bạn. –
Vì vậy, có x y là không nhiều hơn một phím trong Bản đồ, và các đơn vị chỉ có các lĩnh vực khác nhau của họ? Còn về thời điểm gửi chúng xuống cho khách hàng, tôi có nên gửi bản đồ/băm xuống không? –