开发Checkers(草稿)引擎,如何开始?

时间:2015-06-07 20:52:17

标签: algorithm logic artificial-intelligence game-engine

我是一个相对缺乏经验的程序员,最近我一直对制作学校项目的Checkers游戏应用感兴趣。我不确定在哪里可以开始(或者我是否应该尝试)创建它。我想到的项目可能不仅仅涉及一个简单的AI& amp;多人游戏模式。

有人可以为我开始学习提供一些提示/指导吗?

2 个答案:

答案 0 :(得分:1)

在某种程度上,我同意一些关于这个问题的评论,这些评论建议“先尝试一些简单的事情”,但是跳棋很简单,你可以获得一个有效的程序 - 你肯定会学到有用的东西,就像你一样去。

我的建议是将问题分成几个部分并依次解决每个问题。例如:

1)电路板表示 - 可能使用8x8阵列来表示电路板。你需要能够用空的白色棋子,黑色棋子,白色国王,黑色国王填充一个正方形。更有效的解决方案可能是查看“位板”,其中板的占用率由一组64位整数描述。您可能希望最终得到可以加载或保存电路板状态,打印或显示电路板以及确定某个位置(如果有的话)的功能。

2)移动表示 - 找到计算合法移动的方法。哪些部件可以移动以及它们可以移动到哪里。您将需要考虑 - 移动板的边缘,阻挡移动,跳跃,多次跳跃,向后移动的国王等。您可能希望最终得到可以计算一块的所有合法移动的函数,确定如果建议的移动是合法的,可以将游戏记录为一系列动作,也可以与最终用户进行交互,这样通过鼠标或输入文本命令就可以在游戏板上“玩”游戏。因此,即使你只是走得那么远,你也可以展示一个“产品”,人们可以与之互动。

3)计算机游戏 - 这是更难的部分 - 你将需要了解minimax,alpha-beta修剪,迭代加深以及进入计算机游戏AI的所有相关guff - 其中一些听起来比它实际上更难。您还需要开发一种位置评估算法来衡量一个位置的值,以便计算机可以决定哪个是“最佳”移动。这可以像天真的假设一样简单,即拿一个对手的棋子总是好于不拿一个,制作一个国王比不做一个更好,或者一个让你有更多未来动作的举动比留下更多未来动作更好你的下一步行动选择较少。在实践中,即使是一个非常简单的“贪婪”董事会评估,如果你可以看到前进2-3步,也可以很好地运作。

总而言之,看一下比跳棋更不雄心勃勃的东西可能更简单 - 奥赛罗可能是一个不错的选择,并且写一个能够击败一个没有玩过的人的奥赛罗球员并不难。很多比赛。 3D tic-tac-toe或小型点盒游戏也可能是合适的。像这样的游戏更简单,因为没有国王或界限使事情变得复杂,所有(大多数)动作都是合法的,并且它们足以“有趣”地发挥作为有价值的软件演示。

答案 1 :(得分:0)

首先让我说,你所谈论的任务比你想象的要大得多。

你应该如何做到这一点,将它分解成非常小的可管理部分。

原因是

  • 更容易理解的步骤
  • 快速反馈将有助于激励您继续,并帮助您在出错时帮助您解决问题。

当你开始想到可能做的事情的最小步骤时。以下是部分内容的一些想法:

  • 制作一个简单的标题画面 - 只是标题,然后点击一个键即可 走开。
  • 为空的棋盘网格制作用户界面。

我知道这些声音并不多,但那些可能需要的时间比你想象的还多。

然后添加添加跳棋,保留游戏板数据等内容,

在有两个玩家无法玩游戏的游戏之前,不要考虑人工智能。

你应该做的是考虑:我可以做的最小增量是多少,然后添加,然后再考虑下一个小块是什么。

相信我,这是实现这一目标的最佳方式。如果你试图立即写下所有东西,它将永远不会发生。