I need help creating a game like 21

Asked

Viewed 262 times

0

I am working on a game type 21, and I am struggling to create a logic so that the values that the user receives through a draw with random.choice are stored in a list and soon after I display the calculation of the elements until the user continues asking or until it does not exceed 21 and then will be displayed the message "you lost, scored 21 points".

I’m having difficulty creating this list that will receive and show the calculation and being that its elements will be the result of random.choice that each user’s "yes" will result...

#21 the game

import random

baralho = [1,2,3,4,5,6,7,8,9,10,10,10]

def dar_cartas():
    listaElementos = [[baralhos]]
    print(random.choice([listaElementos]))
    print(listaElementos)

print("\nBEM-VINDO(A) AO 21")

p1 = str(input("""\nDIGITE
                \n[1] PARA JOGAR
       \n[2] PARA SAIR
       \n"""))
p2 = 0
if p1 == "1":
    print("INICIANDO\n")
elif p1 == "2":
    print("SAINDO\n")
while p1 != "2":
        print("Sua carta é", random.choice(baralho))
        while p2 != "não":
            p2 = str(input("Você quer mais cartas?\n"))
            print("Sua carta é", random.choice(baralho))
        else:
            break           
else:
    pass   


  

#That’s what I’ve been able to do so far, it’s just sketches....

1 answer

1

All right? Your game is GREAT! Congratulations! The logic I used was to create a variable to receive all the values total:

#21 the game

import random

baralho = [1,2,3,4,5,6,7,8,9,10,10,10]
tracinhofofo = ('-=')*20

print(f"{tracinhofofo}\n        BEM-VINDO(A) AO JOGO 21!\n{tracinhofofo}")

p1 = int(input("\nDIGITE: \n[1] PARA JOGAR\n[2] PARA SAIR\n>> "))

#Além da decisão de continuar...
#Aqui é uma variavel para receber todos os valores que o random.choice() escolhe.
p2 = total = x = 0

if p1 == "1":
    print("\nINICIANDO...")
elif p1 == "2":
    print("\nSAINDO...\nAté a Proxíma!")

while p2 != "N":
    #Aqui, cada vez que a pessoa continua, o X se torna SOMENTE um valor aleatorio do baralho
    x = random.choice(baralho)

    #O total soma o valor anterior mais o X escolhido na rodada
    total += x

    #O jogo:
    print("\nSua carta é", x)
    p2 = str(input("Você quer mais cartas?\n>> ").upper()) #O .upper() joga o "N" e o "n(minusculo)" == N

    #Se ele não parar antes e o total for MAIOR que 21:
    if total > 21:
        print(f'\nVocê PERDEU!\nAs soma das cartas escolhidas foi {total} e PASSOU de 21!')
        break

    #Se ele não quiser continuar, e parar ANTES do resultado der 21:
    if p2 == 'N':
        print(f'\nPARABÉNS!\n As soma das cartas escolhidas foi {total} e deu menos que 21!')
        break

I left comments to help clarify, Tips:

  • If you have not previously used quotation marks, use single quotation marks, not double ones right away, is more accepted by the Python community, is not wrong, but is more beautiful visually.

  • Search by fstring, is an easier way to quote a variable: EX:

print("O total das cartas foi", total "e Sua carta é", x)

FSTRING =print(f"O total das cartas foi {total} e Sua carta é {x}")

  • Thank you nandapand4 for real! You could explain the logic better to me privately?

  • Sure! What is the best way to contact? @leosouza-3799

Browser other questions tagged

You are not signed in. Login or sign up in order to post.