Python中的随机骰子滚动游戏

时间:2016-01-29 22:12:55

标签: python-2.7 while-loop dice

所以我查看了所有相关问题,似乎无法找到特定于我的程序的答案。我必须有两个玩家骰子游戏滚动一个随机数并宣布获胜者。截至目前,程序运行时说: 获胜者是: 输入玩家1的名字: 输入选手2名称:

这是我的代码:

import random

def main():
    print "You are now playing Dice Roll!!"

endProgram = 'no'
playerOne = 'NO NAME'
playerTwo = 'NO NAME'

playerOne, playerTwo = inputNames(playerOne, playerTwo)

while endProgram == 'no':
    winnnerName = 'NO NAME'
    p1number = '0'
    p2number = '0'

    playerOne,playerTwo = inputNames(playerOne,playerTwo)
    winnerName =()

winnerName = rollDice(p1number, p2number, playerOne, playerTwo, winnerName)

displayInfo = winnerName


endProgram = raw_input('Do you want to end program? (Enter yes or no): ')

def inputNames(playerOne,playerTwo):
    playerOne = raw_input('Enter player one name:')
    playerTwo = raw_input('Enter player two name:')
    return playerOne, playerTwo


def rollDice(p1number, p2number, playerOne, playerTwo, winnerName):
    p1number = random.randint(1,6)
    p2number = random.randint(1,6)

if p1number == p2number:
    print "TIE!!!!"
elif p1number > p2number:
    print winnnerName
else:
    p1number < p2number
    print winnnerName

return winnerName

print "The winner is:",winnerName

main()

我没有找到答案只是指导你走正确的道路。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

以下是一些有助于指导您的步骤:

编码

  1. 请确保正确缩进代码,因为这是python语法的一部分。因此,def ...():的行不应缩进,定义内容应缩进一个级别,while内容应缩进两个级别......依此类推。因此,您应该只在左侧对齐import并且不同的def对齐(可能是您在stackoverflow上粘贴代码时发生的,但只是为了确定)。

  2. 停止向您所做的每个定义传递参数。如果您不需要将变量值传递给函数,请不要使用参数。例如,在def inputNames(playerOne,playerTwo)中,参数playerOne,playerTwo是无用的,因为您只是使用此函数来定义它们的值。同样的问题出现在rollDice

  3. 小心拼写错误,你在rollDice中用3“n”写了“winnnerName”。

  4. 保持简单。仅使用需要的东西。您的代码结构良好。但是这些功能应该只做他们想要做的事情。示例:rollDice应仅滚动骰子,而不是宣布结果。因此,您可以只返回获胜者,甚至返回数字并在主程序中测试获胜者。这将我们带到下一部分算法。

  5. 算法

    如果您对代码不满意,这是一个很好的做法,就是记下您的算法。它会更加清晰。 所以你基本上应该得到这样的东西:

    1. 主要功能:启动程序时调用一次

      • 欢迎用户
      • 设置有用的变量:endProgram(稍后我们需要它进入循环)
      • 调用inputNames - &gt;我们存储球员名称,只在开始时存储一次,除非您希望玩家能够更改它们
      • 然后只要用户没有结束程序就进入循环执行:
      • 调用rollDice - &gt;我们可以存储rollDice返回的2个骰子数,测试哪个玩家是赢家,并直接输出哪个赢家赢得 OR 测试哪个玩家在rollDice中赢得哪个返回玩家名称,如果不打结则打印
      • 最后询问玩家是否要停止游戏,并将他的回复存储在endProgram中。
      • 循环结束
    2. inputNames:调用以询问玩家姓名

      • 输入播放器1的名称并存储
      • 输入播放器2的名称并存储
      • 返回存储的玩家名称
    3. rollDice:调用以获取随机数

      • 为玩家1生成并存储随机数
      • 为玩家2生成并存储随机数
      • 返回存储的随机数
    4. (3bis) rollDice替代方案:被调用以获得获胜者的名字。在这里你需要在参数

      中传递玩家名字
      • 为玩家1生成并存储随机数
      • 为玩家2生成并存储随机数
      • 如果是领带
      • ,将获胜者名称设置为“NO NAME”
      • 测试哪个玩家赢了,如果没有领带则修改赢家名称
      • 返回获胜者名称
    5. 现在你可以尝试自己,你当然可以增强它。 这是我制作的一个,如果你遇到困难,可以用它作为参考:https://repl.it/BiKd/6