![]() |
1
3
您可以尝试研究类似于策略模式的内容。 基本上,首先单击工具栏上的“房间”按钮。工具栏通过并告诉网格使用“room place”actionListener。可能删除了以前正在侦听的任何操作侦听器 RoomPlaceActionListener将依次实现左/右键单击、拖动等所有有趣的逻辑位。 如果你有多个阶段来建造一个房间(比如,先装门,然后装窗,然后装门);动作监听器将负责把控制权交给下一个阶段:一个有限状态机。 因此,首先单击“房间”按钮,添加“放置房间”侦听器。拖出你想要房间的区域,“PlaceRoom”修改游戏状态,然后将ActionListener更改为“PlaceWindows”侦听器。无限大…直到你完成。 一个非常简单(不可编译)的示例:
现在,撇开不可编译的例子不谈,火爆的确实有一点:你通常不想把你的游戏模型和图形界面组合成一个单一的类。您希望模型与GUI分离,并通过一个定义良好的接口来操作它。 (另外,可能还有更好的方法来删除鼠标监听器,然后随机删除所有监听器…我有点着急,对不起) |
![]() |
2
0
听起来你需要定义你的游戏模型/状态,并将其与你的鼠标操作分开。 你在使用MVC吗? |