【问题标题】:Mac OS X: Best way to implement a card game GUIMac OS X:实现纸牌游戏 GUI 的最佳方式
【发布时间】:2009-10-13 20:55:11
【问题描述】:

我已经开始在 Mac OS X 上使用 Objective-C 进行编程,并决定创建一个小纸牌游戏。首先,我创建了一个命令行版本。如果一切正常,我想实现一个 GUI:没什么大不了的,只是一个带有可拖放卡片的绿色窗口。

由于我不知道如何执行此操作:我可以使用什么来实现我的纸牌游戏 GUI?

由于 Objective-C 和 Cocoa 在 Mac OS X 上看起来像一个“捆绑包”,是否可以为此使用 Cocoa(以及如何使用)?如果没有,我还应该使用什么或者已经有什么了。像这样?

问候,

创新

【问题讨论】:

  • 带卡片的绿色窗口?听起来像freecell

标签: objective-c cocoa xcode user-interface macos


【解决方案1】:

Apple 有一些示例代码 here 可以为您指明正确的方向。

【讨论】:

  • 我可以从一些屏幕截图和文件名中看到这似乎正是我想要的。谢谢! :)
【解决方案2】:

这是 MVC 中的一个很好的研究。

  • 您的模型(活动游戏、玩家和非玩家角色、游戏中的卡牌等)将完全在 Foundation 中,至少一开始是这样。您可以稍后添加与 AppKit 相关的属性,例如图像,如果您想继续维护您的命令行程序,可以使用 C 预处理器来条件化该代码。
  • 您的控制器通常也位于纯 Foundation 中。我说“控制器”是因为两个程序都有一个(拥有模型、响应用户操作和运行游戏——即发牌、执行规则等),一个专门用于命令行程序(持有readline/output 循环),以及至少一个专门用于GUI 程序(拥有游戏窗口)。
  • 当然,在 GUI 应用程序中,您将使用 AppKit 编写视图。在命令行应用程序中,您可能希望创建一个与控制器分开的 View 类,以便轻松快速地从根本上更改输出(即使在运行时,如果您愿意的话)。当然,那个 View 不会从 NSView 继承下来,而是使用终端输出而不是图形绘制。

我建议在您制作 GUI 版本后,让程序的命令行版本保持活动状态,至少要保持一段时间。当您可以毫不费力地维护程序的两个工作版本,甚至在程序的一个版本中发现错误并在两个版本中都进行修复时,您就会知道自己做对了。

【讨论】:

  • 是的,如果您的应用程序可以在命令行和完整的 GUI 中运行,我认为这是干净设计的标志。 :)
猜你喜欢
  • 2010-10-22
  • 2012-02-29
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多