【问题标题】:While loop which SHOULD return a new random integer after every runWhile 循环应该在每次运行后返回一个新的随机整数
【发布时间】:2021-06-28 20:38:51
【问题描述】:

我目前正在开发一款棋盘游戏。在对骰子进行编码时,我遇到了一些麻烦。出于某种原因,while 循环在每次运行后都会返回相同的随机整数,而不是一个新整数。

这是我已经走了多远:

def dice():



    turtle.addshape("bull.gif")

    player1 = turtle.Turtle()
    player1.shape("bull.gif")
    player1.penup()
    player1.goto(-240, -260)



    turtle.addshape("cow.gif")

    player2 = turtle.Turtle()
    player2.shape("cow.gif")

    player2.penup()
    player2.goto(-240, -220)



    dice1 = random.randint(1, 6)

   


    p1_list = ([-240, -260], [-120, -260], [0, -260], [120, -260], [240, -260], [240, -140], [120, -140], [0, -140], [-120, -140], [-240, -140], [-240, -20], [-120, -20], [0, -20], [120, -20], [240, -20], [240, 100], [120, 100], [0, 100], [-120, 100], [-240, 100], [-240, 220], [-120, 220], [0, 220], [120, 220], [240, 220])

    p2_list = ([-240, -220], [-120, -220], [0, -220], [120, -220], [240, -220], [240, -100], [120, -100], [0, -100], [-120, -100], [-240, -100], [-240, 20], [-120, 20], [0, 20], [120, 20], [240, 20],[ 240, 140], [120, 140], [0, 140], [-120, 140], [-240, 140], [-240, 260], [-120, 260], [0, 260], [120, 260], [240, 260])

    

    dieValue = dice1
    P1_pos = player1.goto(p1_list[0])
    pos = 0

    w = True

    while w == True:

        player1_dice = input("\nBULL (P1): Please press 'ENTER' to roll the dice ")
        
if player1_dice == "":
            print("BULL (P1) rolled a", dice1)

        elif player1_dice != "":
            print("BULL (P1): Please make sure to press 'ENTER' ")

        for pos in range(dieValue) :
            pos += 1
            P1_pos =  player1.goto(p1_list[pos])

        pos = pos


dice()

【问题讨论】:

  • dice1 = random.randint(1, 6) 这只会在循环之前被调用一次。将其移至循环内部。

标签: python for-loop if-statement random while-loop


【解决方案1】:

在这种情况下,这整个部分是不必要的,因为它什么也没做。无论输入什么,他们总是必须按回车键,所以即使他们输入了什么代码也会继续:

        if player1_dice == "":
            print("BULL (P1) rolled a", dice1)

        elif player1_dice != "":
            print("BULL (P1): Please make sure to press 'ENTER' ")

你完全没问题:

        print("BULL (P1) rolled a", dice1)

不管怎样,while循环应该没问题,就像这样:

import random

while True:
    input("\nBULL (P1): Please press 'ENTER' to roll the dice ")

    dice1 = random.randint(1, 6)

    print("BULL (P1) rolled a", dice1)

只需确保在文件开头随机导入

所以从这一点开始你应该没问题,你现在可以使用dice1 变量但是必须有一种方法可以退出循环,否则代码将永远卡在那里。所以也许使用一些 break 语句或线程函数并在最后返回值(然后即使有循环也没有意义,你可以在 while 循环中调用函数)但是按照你的意愿做

【讨论】:

  • 谢谢,我面临的另一个问题是 P1 的最新位置不会被存储,它将始终返回到 pos 内的 0 值。我想要在 for要保存循环,以便 P1 从其先前位置开始,而不是从 0 开始。我想知道是否需要创建一个新的附加变量,如果需要,如何?
  • @Kaja 什么时候回来?当你终止程序并再次运行它?
【解决方案2】:

我设法为每次运行获得了不同的值。我已将 dice1 变量放在循环中。

但我需要找到一种方法来存储最新的 pos 值。这样角色就不会从默认位置重新开始,而是应该从以前的位置开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2014-12-18
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2011-11-02
    相关资源
    最近更新 更多