显示和编程游戏板的最佳方式?

在C#中展示和编程简单游戏板(比如国际象棋,西洋棋棋子等)的最佳方法是什么? 在控件和底层游戏逻辑方面。

我想到的一个想法是使用Picture Box (或inheritance自它的类)和Board&Field类。

  • 毕竟这是一个不错的解决方案吗?
  • 如何使用此解决方案将图形与游戏逻辑分离(我认为Board&Field类可能不够)?
  • PictureBox是否足够有效用于此目的?

谷歌搜索一些也带我到每个游戏领域使用按钮/标签的解决方案。 但回到Board,Field和PictureBox。

可扩展性 – 正确设计它可以很容易地实现任何其他棋盘游戏(甚至纸牌游戏),因为它毕竟是关于具有可修改字段的板。

在面向对象的方法中,考虑游戏中涉及的对象(例如棋盘,碎片)……让它们各自提供一个绘制方法,它接受一个Graphics对象并在其上绘制。

绘图本身可以在PictureBox上完成 – 这是用于此目的的理想控件 – 但这并不是那么重要,因为一旦绘制逻辑到位,它将不依赖于控件的类型。

通常, 不要使用具有不同控件的变通方法。 对于传统的GUI,这些可能很好。 与游戏(或任何类型的图形繁重的应用程序)不同。

从数据结构的角度来看一下位板数据结构。 http://en.wikipedia.org/wiki/Bitboard

如果你想要shiny,你可以尝试WPF,perf。 现在还不错,很容易获得非常可定制的图形,从外部文件加载等….

在推广行为方面,你可能想要分离场景图代码(布局,绘图对象和所有无聊的低级别东西),然后为一般棋盘游戏交互添加一个层:选择源,然后选择移动,转弯和目的地的目的地之类的,然后将你的游戏逻辑分层。

我可能只是让Tic-Tac-Toe先行,看看是否有任何地方你需要打破你的分层,并在陷入游戏逻辑陷入困境之前尽早解决。

如果您觉得非常冒险,可以尝试XNA;)

是的,它比其他解决方案更复杂,并且可能对桌面游戏来说有点过头了,但是一旦掌握了它,你可以自由地制作一些很棒的游戏。

通常,首先设计板,片等的逻辑结构,然后对这些构造进行操作,最后只设计一个图形界面,或多或少作为前端。