【问题标题】:Problems organizing/creating classes for Game of Nim为 Game of Nim 组织/创建课程的问题
【发布时间】:2010-10-27 01:10:12
【问题描述】:

Nim 的这个特殊变体包括: 两名玩家交替从一堆弹珠中取出。在每一步中,玩家选择要拿多少个弹珠。玩家必须至少拿走一个但最多一半的弹珠。然后另一个玩家轮到。拿走最后一个弹珠的玩家输了。 我需要: - 编写一个人类与计算机对战的程序 - 生成一个介于 10 到 100 之间的随机整数来表示堆的初始大小 - 生成一个介于 0 和 1 之间的随机整数来决定是计算机还是人类先轮 - 生成一个0到1之间的随机int来决定电脑玩“聪明”还是“愚蠢”(计算动作还是随机选择)

问题是我们必须使用三个类:Pile、Player 和 Game。我不知道如何让所有三个班级互相“交谈”以及如何分开去哪里。我完全不知道如何开始。

【问题讨论】:

  • 第一次尝试创建类,从编写一些方法开始。你会对这个任务有更好的感觉,你可能会弄明白。另外,程序是否通过 Scanner/BufferedReader 获取输入?
  • 是的,将使用扫描仪,因此玩家可以输入他们希望移除的弹珠数量。

标签: java oop organization


【解决方案1】:

从定义你的类开始。

你有桩。你可以对桩做什么?你可以问它什么问题?例如:“堆,还有多少弹珠?”写下这些问题和行动 - 它们将成为 Pile 中的公共方法。

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

你有一个游戏。游戏有什么作用?可能是“玩”之类的东西。把这些东西记下来,它们将是Game中的公共方法。

现在你有 3 个类,里面有很多有用的方法。对它们进行编码。一旦你做到了这一点,请回帖。

【讨论】:

  • “你能问什么问题”似乎是概念化这部分对象设计的好方法。
【解决方案2】:

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

Pile 将至少包含一个 int 来存储堆中弹珠的数量,一个生成初始数字的方法和一个获取弹珠的方法。

【讨论】:

    【解决方案3】:

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

    尝试从编写一个名为“Pile”的类开始,该类具有一个整数类型的私有变量。将此变量称为“marbles”并将其初始化为某个数字,例如 50。

    为该类编写一个名为“how_many”的公共方法,该方法返回弹珠的数量,以及另一个名为“take_marbles”的公共方法,它使用整数调用并减小堆的大小。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多