组织/创建Nim游戏类的问题

时间:2010-10-27 01:10:12

标签: java oop organization

Nim的这个特殊变体涉及: 两名球员交替从一堆中取出弹珠。在每次移动中,玩家选择要使用多少弹珠。玩家必须至少使用一个但最多一半的弹珠。然后其他玩家转了一圈。拿最后一个大理石的玩家输了。 我需要: - 编写人类与计算机比赛的程序 - 生成10到100之间的随机int,表示桩的初始大小 - 生成0到1之间的随机int,以决定计算机或人是否进行第一次转弯 - 生成0到1之间的随机int,以决定计算机是“智能”还是“愚蠢”(计算移动或随机选择)

问题是我们必须使用三个类:Pile,Player和Game。我不知道如何让所有三个课程相互“交谈”,以及如何分解那里的内容。我完全迷失了如何开始这个。

3 个答案:

答案 0 :(得分:2)

首先定义你的课程。

你有桩。你能做些什么?你能问什么问题?例如:“桩,剩下多少个大理石?”写下这些问题和行动 - 它们将成为桩中的公共方法。

你有一名球员。玩家可以做什么?玩家可以做的一件事就是“转弯”。玩家还能做些什么?写下所有这些东西 - 它们将成为播放器中的公共方法。

你有一个游戏。游戏是做什么的?可能就像“玩”一样。写下这些东西,它们将成为游戏中的公共方法。

现在你有3个课程充满了有用的方法。对它们进行编码。一旦你走得那么远,回帖。

答案 1 :(得分:1)

名义上,我希望Game包含一个Pile实例和两个Player实例。然后游戏会根据需要调用每个实例的方法。

桩将最低限度地包含一个int来存储堆中的大理石数量,一种生成初始数量的方法和一种获取大理石的方法。

答案 2 :(得分:0)

如果你的意思是:“我不知道如何让一个类调用另一个类的方法”这是你第一次开始学习编程时的常见问题。因此,我将做出可能毫无根据的假设,即你对编程和面向OO的编程非常陌生。

首先尝试使用Integer类型的私有变量编写一个名为'Pile'的类。将此变量称为“大理石”并将其初始化为某个数字,例如50。

为该类编写一个名为'how_many'的公共方法,它返回大理石的数量,另一个名为'take_marbles'的公共方法,用整数调用并减小堆的大小。

创建一个名为'Game'的类。游戏具有“桩”类型的属性,在创建新游戏时创建,并且它具有允许其调用其桩的“how_many”和“take_marbles”方法的方法。

然后构建一个小测试程序,创建一个新的游戏,让它随机减少堆中的弹珠数量,直到该数字达到零。每当它移除一些大理石时,它应该输出剩下的大理石数量。

我认为一旦你这样做,你就会知道下一步该做什么。

相关问题