【发布时间】:2012-07-25 11:09:39
【问题描述】:
我正在尝试使用 Visual C# 2010 对 Pokemon 集换式卡牌游戏进行编程,但遇到了一个小问题。我有三个对象:
游戏:处理所有游戏数据和规则。
Form1:向播放器显示的窗口。显示允许玩家查看游戏的所有信息,并允许玩家与游戏互动。
ComputerAI:此对象跟踪计算机应该知道的内容并保存 AI 的逻辑。
为了让事情继续进行,游戏会引发“PriorityChanged”事件,让玩家和 AI 都知道优先级发生了变化以及哪个人收到了它(在 EventArgs 中)。表格在日志中报告此信息并酌情显示消息:“等待您”和“等待对手”。 computerAI 使用它来决定它是否应该运行它的逻辑。我遇到的问题是,当事件引发时,AI 被告知并运行其逻辑(打牌等),这导致玩家获得优先权并引发另一个 PriorityChanged 事件,AI 得到并且什么也没做(这是正确的)。然后表单一个接一个地得到两个 PriorityChanged 事件,但顺序错误。
为了解决这个问题,我将“PriorityChanged”事件分成两个,“PriorityChanged”和“PriorityRecieved”。表单在“PriorityChanged”事件上更新显示,AI 在“PriorityRecieved”事件上运行其逻辑。
这个解决方案有效,但我觉得它是错误的。有没有更好的方法?
【问题讨论】:
-
可能是programmers.stackexchange.com的问题(因为它是主观的)
-
我同意。由于您的更改有效,因此这里没有太多要回答的问题。
-
我只是想确保我没有偶然发现一些反模式,或者没有其他标准方法可以完成我正在尝试做的事情。