我用什么.NET Framework来创建棋盘游戏?

时间:2010-11-19 19:16:14

标签: c# .net frameworks

我想用.NET创建棋盘游戏。

  1. 我计划实施一个基本的棋盘游戏(类似国际象棋,但不那么复杂)作为毕业生AI术语项目。
  2. GUI不是很重要(它不必易于使用,直观,动画等),但如果它不会增加太多的复杂性,那么我想添加一个更好的GUI。
  3. 主要目标是作为一个术语项目提交,但我想与社区分享,以便其他人也可以玩。部署应该可以轻松与Windows工作站共享游戏。
  4. 你们为这样一个项目建议了哪些框架?我知道this主题,但这不是我想要的。

6 个答案:

答案 0 :(得分:5)

如果您说GUI现在不重要那么您不需要任何游戏框架,这只会让您在制作游戏时变慢。 Windows窗体对您来说绰绰有余。

您应该专注于实施游戏引擎程序集。这个程序集应该有一个开放的通信协议,不应该知道任何GUI。换句话说,您应该将引擎与GUI分离。

稍后,您和其他人可以用他们选择的语言创建一个GUI,它将使用您的协议进行通信并显示您游戏的位置。

祝你好运!

答案 1 :(得分:4)

如果你想在.NET中做一些与游戏开发相关的事情,你最好的方法就是使用.NET XNA Framework

就制作游戏板而言,您需要学习如何编写视频游戏;实际上没有'内置'拖放式创建板游戏框架。

看起来有人在XNA 4.0中有how to create a 'board based' game的教程。

答案 2 :(得分:1)

如果您正在制作象棋这样的棋盘游戏,并且您并不真正关心将其用作游戏编程组合中的一块,那么我建议您只使用Windows UI框架,例如WPF。在这样的系统上插入事件非常容易,您将可以在Visual Studio中使用集成的UI布局设计器。只需制作一个按钮网格(使用图像作为其内容)/其他控件。这样您就可以花费更少的时间来查看它的外观,以及与图形/ UI相关的编程任务,并快速让您对游戏逻辑进行编程。

如果您将此项目用于游戏编程组合,我同意George - 使用XNA。如果你这样做,请让艺术家朋友为你处理UI设计和图形内容(当然不是图形编程)。

你也可以拥有两全其美。您可以使您的游戏逻辑与UI无关,并在以后编写更好的UI。邮政国际象棋证明了这一点。

答案 3 :(得分:1)

如果您刚开始使用,WinForms是最容易使用的。也就是说,如果您的主要兴趣是测试逻辑,您甚至可以从控制台应用程序开始,等待开发UI,直到您对游戏的运行方式有一个稳定的概念。我建议您不要第一次使用XNA。如果你真的想将它改进为精美的游戏,你可以随时在逻辑上构建一个XNA界面。

这里的关键是以逻辑和UI分离的方式设计应用程序。如果您正确地执行此操作,那么您可以自由地使用一系列不同的UI,可能从控制台开始,使用“调试”风格的WinForms应用程序,使用专为您的消费而设计的粗略界面,然后最终使用更精美的界面供别人玩。

答案 4 :(得分:0)

上次我需要一块电路板时,我只是创建了一个二维的用户控件数组,为每个用户控件提供了一个边框,并让他们的paint方法在电路板内部绘制了任何东西。您可以让您的电路板用户控制和您的游戏块用户控制是单独的对象或相同的对象,具体取决于您正在做什么。这个策略只需要几个小时的时间,并为您提供强大的动力。例如,可以轻松添加功能来识别拖放,点击等内容。

创建游戏板的另一种方法是使用DataGridView。这真的不是该类的预期用途,而且代码会变得有点难看,但是如果你在它周围写一个包装器,它可能不会太糟糕。

答案 5 :(得分:0)

就个人而言,我创建了一个具有一点AI的Connect4应用程序,并使用数据库支持从其错误中“学习”作为我的高级项目。一些建议提示:

  • 不要过于复杂化。不要坐在那里写一个完整的框架来为多个游戏板或奇怪的可能设置工作(例如添加第三个玩家)。
  • 使用良好的模式和语言将使测试和调试变得更容易(我最喜欢的是使用MVVM的WPF)。

此外,如果您决定选择Connect4的路线,请按以下方式设置我的课程:

C4Board.cs

  • 我把它变成了一个代表GameBoard状态的不可变对象。
  • 如果列已满,
  • C4Board Insert(int col)将返回新的GameBoard或抛出自定义异常。
  • 我认为在视图中有一个“历史”游戏状态列表是不可改变的。

GamePlayer.cs 的   - 枚举(NULL,P1,P2)   - 允许您从GamePlayer更改的扩展方法 - >游戏币

GamePiece.cs 的   - 枚举(EMPTY,BLACK,RED)   - 允许您从GamePiece更改的扩展方法 - >的游戏玩家

GameWinner.cs 的   - 枚举(无,P1,P2,领带)

这是一款简单的游戏,具有简单的规则,易于分离你的逻辑和添加AI等。它比尝试下棋或Go游戏等要好得多。