如何删除只有其值的变量

2024-10-04 03:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个类似的游戏,https://gyazo.com/8d8dff02a09d27ba28ed303979f64894它叫Farkle!它的工作原理是,你掷骰子,如果你掷1得到100分(或者另一个骰子给你点),骰子会被拿走,直到你掷骰子,改变回合或者你赢了游戏。但我不知道如何根据掷骰子后的价值暂时拿走它。有人能告诉我根据变量的值删除变量的方法吗?你知道吗

from random import randint
score1 = 0
def dices():
    score1 = 0
    a = 0
    dice1 = randint(1, 6)
    dice2 = randint(1, 6)
    dice3 = randint(1, 6)
    dice4 = randint(1, 6)
    dice5 = randint(1, 6)
    dice6 = randint(1, 6)
    rolled_dice = [dice1, dice2, dice3, dice4, dice5, dice6]
    one_count = rolled_dice.count(1)
    a = [0, 100, 200, 300, 1000, 2000, 300][one_count]
    two_count = rolled_dice.count(2)
    score1 += a
    a = [0, 0, 0, 200, 1000, 2000, 3000][two_count]
    score1 += a
    three_count = rolled_dice.count(3)
    a = [0, 0, 0, 300, 1000, 2000, 3000][three_count]
    score1 += a
    four_count = rolled_dice.count(4)
    a = [0, 0, 0, 400, 1000, 2000, 3000][four_count]
    score1 += a
    five_count = rolled_dice.count(5)
    a = [0, 50, 100, 500, 1000, 2000, 3000][five_count]
    score1 += a
    six_count = rolled_dice.count(6)
    a = [0, 0, 0, 600, 1000, 2000, 3000][six_count]
    score1 += a

    print(score1)
    if score1 == 0:
        print("Farkle!")
    print(rolled_dice)

dices()

Tags: 游戏count骰子diceprintrandintrolledscore1
1条回答
网友
1楼 · 发布于 2024-10-04 03:23:47

让我们像在现实生活中一样去想。如果你掷骰子并且想保留一些结果,你可以记下它们或者把它们放在一边,直到你掷完其他的为止。你不要把它们扔掉,因为结果仍然很重要。你知道吗

编码时也会发生同样的情况,您不希望丢弃以后可能需要的值。相反,你把它们写在安全的地方,直到你需要它们。你知道吗

您可以通过将骰子的结果保存在list中,并编写一个reroll函数来实现这一点,该函数只重新掷一些骰子,而不是全部。你知道吗

import random

def reroll(dices, *pos):
    for x in pos:
        dices[x] = random.randint(1, 6)

# This creates a list with 6 dices result in it
dices = [random.randint(1, 6) for _ in range(6)]
print(dices)  # [1, 5, 3, 6, 6, 5]

# We now only want to reroll the first and third dices
reroll(dices, 0, 2)
print(dices)  # [4, 5, 1, 6, 6, 5]

一个更好的解决方案是使reroll返回一个新的值列表,其中它只重新滚动了一些骰子,而不改变数据,即允许您在重新滚动时保留以前的结果。你知道吗

import random, copy

def reroll(dices, *pos):
    dices = copy.copy(dices)
    for x in pos:
        dices[x] = random.randint(1, 6)
    return dices

dices = [random.randint(1, 6) for _ in range(6)]

# reroll returns a new list of values
new_dices = reroll(dices, 0, 2)

print(dices)      # [6, 3, 4, 2, 4, 3]
print(new_dices)  # [1, 3, 2, 2, 4, 3]

相关问题 更多 >