需要帮助伪编码骰子游戏,不知道从哪里开始

时间:2011-04-28 13:37:00

标签: dice

我是一名初学IT学生,并为我的编程逻辑和设计课程做项目。我需要为骰子游戏创建一个伪代码,允许你用5个骰子进行2次掷骰。在第一次滚动时,你可以选择1个骰子来保持。然后计算机滚动另外4个骰子并根据你滚动的内容计算你的得分。每场比赛有3个卷,并显示总分。滚动没什么需要点。得分为:2种= 50分,3种= 75分,4种= 100分,没有减去50分。

我遇到的整个问题是我甚至不知道从哪里开始。我想我需要重复3次,但是设置了哪些变量?请有人帮助我,我真的不能问我的导师,因为他在整个班级外吸烟,我所学到的关于这门课的一切主要来自互联网并阅读这本书。我不想让这堂课失败......有人请通过这个来帮助我吗?

5 个答案:

答案 0 :(得分:2)

首先不要惊慌。你要做的是将任务分解成小步骤。 伪代码不是真正的代码 - 你不能直接将它用作语言,而是用简单的英语描述你正在做什么以及事件的流程。

那么让您入门的最初步骤是什么? 问问自己什么是事实,你知道什么事先存在。这些是您所做的“声明”。

你有五个骰子。每个都是一个单独的对象,所以每个都得到它自己的变量声明

dice_1
dice_2
dice_3
dice_4
dice_5

接下来决定每个骰子是否具有初始值

dice_1 initial value = 0
etc...

接下来你知道你必须多次掷骰子。投掷是一个具有初始值的变量

turns initial value = 2
turns_counter initial value = 2

你现在应该得到这个想法。还有其他事情需要提前申报吗?我想是的!

接下来,您必须逐步确定您正在做什么。它只是一系列事件还是重复?如果它重复你怎么让它停止?

While turns_counter is less than 2

重复以下步骤:

turns_counter = turns_counter + 1
if turns_counter = 2 
   Throw. Collect_result. Sum_result.
else
   Throw. Collect_result. Sum_result. Remove_a_dice.
endif.

也许您必须告诉可重用代码他们将使用哪些对象?这些是您传递给可重用代码Throw(dice_1)的参数,也许您还需要更新您创建的一些变量?在可重用代码中执行此操作,无论是否将它们作为参数传递。

这绝不是完整或完美的,但你应该了解正在发生的事情以及如何将其分解。这可能需要很长时间才能完成。

答案 1 :(得分:0)

大多数语言都提供伪随机数生成器函数,该函数返回特定范围内的随机数。我首先要弄清楚你将使用哪种语言以及它提供的功能。

一旦你拥有了它,你将需要为每个骰子的每一卷打电话。如果你掷5个骰子,你会称它为5次。并且你会再次称它为第二次滚动。

无论如何,这是一个开始。

答案 2 :(得分:0)

开始此操作的最简单方法是不严格将自己绑定到特定语言的约束,甚至绑定到伪代码。简单地说,用自然英语写下你将如何做到这一点。想象一下你是电脑,有人想和你一起玩游戏。想象一下,在非常具体的细节中,你会在每个潜在的步骤中做些什么,即

  1. 给用户5个骰子
  2. 要求用户滚动
  3. 从该卷开始,允许用户选择一个骰子来保持
  4. ...等。完成此操作后,您确定它是正确的,通过考虑计算机需要做什么来解决此问题,开始将其转换为伪代码。例如,您需要一个变量来跟踪用户的点数,以及已经发生的总卷数。如果您对问题的英文描述非常具体,那么这应该意味着您基本上只需要将伪代码插入到已有的几个句子中 - 换句话说,您只是将一种类型的伪代码替换为另一种伪代码。 / p>

    我想提供帮助,但直接提供伪代码对您没有多大帮助。开始编程的最困难的步骤之一是学习将问题分解为其组成元素。这种粒度思维一开始就不直观,但是花在你上面的时间越多越容易。

答案 3 :(得分:0)

你已经差不多回答这个问题了。伪代码没有严格的定义。为什么不首先将您在此处描述的内容重新编写为一系列步骤。然后,对于每个步骤,只需进一步完善该步骤,直到您认为自己已经使它成为您想要的细粒度。

你可以从这样的事情开始:

Roll 5 dice.
Pick 1 die to keep. 
Rolls the other 4 dice
Calculate the score.
// etc...

非常奇怪的是,要求SO比你的导师更容易! :)

答案 4 :(得分:0)

嗯,根据我的经验,伪代码最好是在你假装为其他人写作的时候编写的:

我们需要的东西

  • 骰子
  • 球员
  • 得分

我们追踪的事情

  • 骰子滚动
  • 球员得分

我们知道的事情

(这些也称为常量)

  • 没什么(-50)
  • 2种(+50)
  • 3种(+75)
  • 4种(+100)

所有这些都是开始使用的重要工具。并且......好吧,在stackoverflow上提问。

接下来,定义您的行动" (我们做的事情),利用我们需要的上述已知事物。

我会从一开始就做同样的事情:创造我们的东西。

def player():
    """Create a new player"""

def dice():
    """Creates 4 new, 6 sided dice"""

def welcome():
    """Welcome player by name, give option to quit"""

def game():
    """Initialize number of turns (start at 0)"""

def humanturn():
    """Roll dice, display, ask which one they'll keep"""

def compturn():
    """Roll four dice"""

def check():
    """Check for any matches in the dice"""

def score():
    """Tally up the score for any matches"""

def endturn():
    """Update turn(s), update total score"""

def gameover():
    """Display name, total score, ask for retry"""

def quit():
    """Quit the game"""

这些都是你的组成部分,都以非常程序化的方式充实。还有很多其他方法可以做到这一点更好,但是现在你只是在写一个想法的骨架。当您准备好开始编码时,您可能会想要将这些方法结合在一起,但将所有内容分开是一个好主意,直​​到您确信自己不会迷失为止一个错误。

祝你好运!