我正在编写一个小型国际象棋游戏。我有一个棋盘,上面有一些棋子。将鼠标悬停在一块上时,我想向您展示您可以移动到的潜在位置。
我一直在考虑用户界面,我可以看到两种不同的选择:
1. 在每次操作之后进行一个大的逻辑调用,我收到棋盘的完整状态和棋子的每个可用移动,并可以从 UI 访问它。
2. 拥有棋盘的轻量级状态,并仅在特定棋子悬停时调用逻辑来计算可用的移动。
一种解决方案比另一种更好吗?它们都可以扩展吗?有标准的方法吗?
假设它是一个标准棋盘(8x8)。确定给定棋子的所有潜在位置不应太复杂,范围从
O(1)
到 O(n)
(n = 棋盘的大小)。
选项 1:在每次操作后进行一次大型逻辑调用,我会收到棋盘的完整状态和棋子的每个可用移动,并可从 UI 访问它。
选项 2:拥有棋盘的轻量级状态,并仅在特定棋子悬停时调用逻辑来计算可用的移动。
鉴于有 2 个可用选项,我的投票是 (1),因为 api 计算并不昂贵