Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Ayuda - Juego de cartas
#1
Buenas, estoy terminando un curso de introducción a Python y me encuentro atascado en el trabajo final. Me piden que cree un juego de cartas entre dos jugadores (Humano y Ordenador) a cinco rondas. La carta mayor gana en cada ronda y, al cabo de las cinco, sumo los puntos de cada jugador y decreto al ganador. El código que llevo ya me permite repartir cartas a dos jugadores y compararlas, pero no sé si las estoy comparando bien. El profesor me sugirió que para los tantos que no son números, cree un diccionario con sus equivalencias en número, pero no sé cómo comparar estrictamente los tantos y luego imprimir los tantos que no son números (sota, caballo, rey, as). 

¿Podría alguien darme una mano? Muchas gracias desde ya. Copio a continuación el código que llevo:  

Código:
import random

tantos = {2: "dos", 3: "tres", 4: "cuatro", 5: "cinco", 6: "seis", 7: "siete", 8: "sota", 9: "caballo", 10: "rey", 11: "as"}
palos = ["oros", "copas", "espadas", "bastos"]
baraja = []

for t in tantos:
    for p in palos:
        carta = "{} de {}".format(t,p)
        baraja.append(carta)
       
random.shuffle(baraja)

Humano = [[]]
Ordenador = [[]]

for i in range(1):
    for j in range(1):
        Humano[j].append(baraja.pop(0))
       
for i in range(1):
    print("Humano")
    for j in range (1):
        print("{:16}".format(Humano[i][j]), end=" ")
    print()

for i in range(1):
    for j in range(1):
        Ordenador[j].append(baraja.pop(0))
       
for i in range(1):
    print("Ordenador")
    for j in range (1):
        print("{:16}".format(Ordenador[i][j]), end=" ")
    print()
   
if Humano>Ordenador:
    print("Gana el humano")
else:
    print("Gana el ordenador")
Responder
#2
¿Quieres imprimir por un lado el número y por otro lado las palabras de "tantos"?, y luego de ello, comparar que numero es mayor y cual es menor?
no comprendí muy bien la pregunta
Responder
#3
(28-05-2021, 07:22 PM)SlayerBur escribió: ¿Quieres imprimir por un lado el número y por otro lado las palabras de "tantos"?, y luego de ello, comparar que numero es mayor y cual es menor?
no comprendí muy bien la pregunta

Hola, SlayerBur, gracias por la respuesta. 
Quiero imprimir la carta de un modo normal ("tres de copas", "dos de copas") y luego comparar cuál es la mayor a partir solo del número de tantos, sin tener en cuenta el palo (así lo pide el ejercicio). La idea del diccionario de tantos es hacer más fácil esa comparación, utilizando para ello los números. 
Luego tengo que decidir quién ganó, sumarle puntos en el marcador e imprimir el ganador al cabo de cinco rondas.
Quedo atento y, lo dicho, gracias por tomarte el tiempo de responder.
Responder
#4
(29-05-2021, 07:02 AM)manuelduenaspeluffo escribió:
(28-05-2021, 07:22 PM)SlayerBur escribió: ¿Quieres imprimir por un lado el número y por otro lado las palabras de "tantos"?, y luego de ello, comparar que numero es mayor y cual es menor?
no comprendí muy bien la pregunta

Hola, SlayerBur, gracias por la respuesta. 
Quiero imprimir la carta de un modo normal ("tres de copas", "dos de copas") y luego comparar cuál es la mayor a partir solo del número de tantos, sin tener en cuenta el palo (así lo pide el ejercicio). La idea del diccionario de tantos es hacer más fácil esa comparación, utilizando para ello los números. 
Luego tengo que decidir quién ganó, sumarle puntos en el marcador e imprimir el ganador al cabo de cinco rondas.
Quedo atento y, lo dicho, gracias por tomarte el tiempo de responder.

¿Al final resolviste el problema? ¿Cómo quedó?
Responder
#5
No estoy seguro si es esto lo que quieres.

Código:
tantos = {2: "dos", 3: "tres", 4: "cuatro", 5: "cinco", 6: "seis",
          7: "siete", 8: "sota", 9: "caballo", 10: "rey", 11: "as"}
palos = ["oros", "copas", "espadas", "bastos"]
baraja = []

for t in tantos:
    for p in palos:
        carta = "{} de {}".format(t, p)
        baraja.append(carta)

print(baraja)
random.shuffle(baraja)

Humano = [[]]
Ordenador = [[]]

Humano[0].append(baraja.pop(0))
Ordenador[0].append(baraja.pop(0))

print()
print("Humano: {:16}".format(Humano[0][0]), end=" ")
print()
print("Ordenador: {:16}".format(Ordenador[0][0]), end=" ")
print()


if int(Humano[0][0].split()[0]) > int(Ordenador[0][0].split()[0]):
    print("Gana el humano")
else:
    print("Gana el ordenador")
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)