简体   繁体   中英

Yahtzee dice roll loop

I need help condensing my Yahtzee code. I'm familiar with loops but can't seem to figure out how to do it without wiping my roll each turn. It's set up to roll 5 random dice and then you choose which you want to keep, it'll then roll what left for three total rolls. I thought of making a placeholder list but can't make it work that way either. Please help

Dice = ['⚀ ','⚁ ',' ⚂ ',' ⚃ ',' ⚄ ',' ⚅ ']

turns = 3

first_roll = []

for _ in range(5):

roll = random.choice(dice)

first_roll.append(roll)

print(first_roll)

turns -= 1

print(f'You have {turns} turns left.')

keep = input("Which dice would you like to keep? 1 - 5: ").split()

clear()

#This is the second roll

second_roll = []

for i in keep:

x = int(i)

j = first_roll[x-1]

second_roll.append(j)

remainder = 5 - len(second_roll)

for _ in range(remainder):

roll = random.choice(dice)

second_roll.append(roll)

print(second_roll)

turns -= 1

print(f'This is your last turn.')

keep = input("Which dice would you like to keep? 1 - 5: ").split()

clear()

#This is the third roll

third_roll = []

for i in keep:

x = int(i)

j = second_roll[x-1]

third_roll.append(j)

remainder = 5 - len(third_roll)

for _ in range(remainder):

roll = random.choice(dice)

third_roll.append(roll)

print(third_roll)

So I'm not sure if this is exactly what you're looking for, but I created a function that lets you continuously roll for X turns and the dice pool gets progressively smaller like your code shows. I thoroughly commented the code to hopefully give you a good explanation to what I'm doing.

import random
 
#Dice characters
dice = ['1','2','3','4','5','6']

#Number of turns player has
turns = 3

#This is the group of dice kept by the player
kept_dice = []

def roll():
    #This is the group of dice randomly chosen
    rolled_dice = []

    #Generate up to 5 random dice based on how many have been kept so far
    for _ in range(5 - len(kept_dice)):

        #Append random dice value to rolled_dice array
        rolled_dice.append(random.choice(dice))

    #Print roll group
    print(rolled_dice)

    dice_to_keep = int(input("Which dice would you like to keep? 1 - 5: "))
    
    kept_dice.append(rolled_dice[dice_to_keep-1])



while turns != 0:

    #Let the user know how many turns they have left
    print(f'You have {turns} turns left.')

    #Roll dice
    roll()

    #Subtract 1 turn
    turns -= 1

#After all turns, show the kept dice:
print("Kept dice:")
print(kept_dice)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM