def playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO): if "KI" in playerName: return playCardKI(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) else: whichCard = input("Cual Carta va a Jugar: ") if whichCard == "d" or whichCard == "D": if drawCards[0] > 0: for card in range(drawCards[0]): hand.append(drawCard(cardStack)) drawCards[1] = 1 sortHand(hand) return lastCard elif hasDrawnCard == False: hand.append(drawCard(cardStack)) sortHand(hand) hasDrawnCard = True CurrentScreen.showCurrentScreen(hand, direction, lastCard, playerName, drawCards) else: print("Ya usted ha tomado '1' Carta, Pase el Turno.") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "p" or whichCard == "P": if (hasDrawnCard == True): return lastCard print("Primero tiene que tomar '1' Carta") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "u" or whichCard == "U": saidUNO = True return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) try: if (canBeThrown(hand[int(whichCard)], lastCard)): if (drawCards[0] > 0 and (hand[int(whichCard)].getValue() != "roba2" and hand[int(whichCard)].getValue != "roba4")): print("robar cartas o jugar +x Cartas!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) thrownCard = hand.pop(int(whichCard)) if (len(hand) == 1 and saidUNO == False): print( "¡Olvidaste decir UNO! - ¡Ahora tienes que sacar 1 carta!" ) hand.append(drawCard(cardStack)) input("¡Presione Enter para continuar!") return thrownCard else: print("¡No puede ser lanzado!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) except: print("¡Error!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO)
def playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO): if "KI" in playerName: return playCardKI(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) else: whichCard = input("Que carta quieres jugar: ") if whichCard == "d" or whichCard == "D": if drawCards[0] > 0: for card in range(drawCards[0]): hand.append(drawCard(cardStack)) drawCards[1] = 1 sortHand(hand) return lastCard elif hasDrawnCard == False: hand.append(drawCard(cardStack)) sortHand(hand) hasDrawnCard = True CurrentScreen.showCurrentScreen(hand, direction, lastCard, playerName, drawCards) else: print("Ya has dibujado una carta!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "p" or whichCard == "P": if (hasDrawnCard == True): return lastCard print("Primero debes dibujar una carta!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "u" or whichCard == "U": saidUNO = True return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) try: if (canBeThrown(hand[int(whichCard)], lastCard)): if (drawCards[0] > 0 and (hand[int(whichCard)].getValue() != "draw2" and hand[int(whichCard)].getValue != "draw4")): print("Robar cartas o jugar + x tarjeta!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) thrownCard = hand.pop(int(whichCard)) if (len(hand) == 1 and saidUNO == False): print( "¡Olvidaste decir UNO! Ahora tienes que sacar 1 carta!" ) hand.append(drawCard(cardStack)) input("Presiona cualquier tecla!") return thrownCard else: print("No puede ser lanzado!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) except: print("Error!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO)
def playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO): if "KI" in playerName: return playCardKI(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) else: whichCard = input("Which Card you want to play: ") if whichCard == "d" or whichCard == "D": if drawCards[0] > 0: for card in range(drawCards[0]): hand.append(drawCard(cardStack)) drawCards[1] = 1 sortHand(hand) return lastCard elif hasDrawnCard == False: hand.append(drawCard(cardStack)) sortHand(hand) hasDrawnCard = True CurrentScreen.showCurrentScreen(hand, direction, lastCard, playerName, drawCards) else: print("You already have drawn a card!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "p" or whichCard == "P": if (hasDrawnCard == True): return lastCard print("You first have to draw a card!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "u" or whichCard == "U": saidUNO = True return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) try: if (canBeThrown(hand[int(whichCard)], lastCard)): if (drawCards[0] > 0 and (hand[int(whichCard)].getValue() != "draw2" and hand[int(whichCard)].getValue != "draw4")): print("draw cards or play +x card!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) thrownCard = hand.pop(int(whichCard)) if (len(hand) == 1 and saidUNO == False): print( "You forgot to say UNO! Now you have to draw 1 card!") hand.append(drawCard(cardStack)) input("Press any key!") return thrownCard else: print("Can't be thrown!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) except: print("¡Error!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO)
def playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO): if "KI" in playerName: return playCardKI(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) else: whichCard = input("Which Card you want to play: ") if whichCard == "d" or whichCard == "D": if drawCards[0] > 0: for card in range(drawCards[0]): hand.append(drawCard(cardStack)) drawCards[1] = 1 sortHand(hand) return lastCard elif hasDrawnCard == False: hand.append(drawCard(cardStack)) sortHand(hand) hasDrawnCard = True CurrentScreen.showCurrentScreen( hand, direction, lastCard, playerName, drawCards) else: print("You already have drawn a card!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "p" or whichCard == "P": if(hasDrawnCard == True): return lastCard print("You first have to draw a card!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) if whichCard == "u" or whichCard == "U": saidUNO = True return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) try: if(canBeThrown(hand[int(whichCard)], lastCard)): if(drawCards[0] > 0 and (hand[int(whichCard)].getValue() != "draw2" and hand[int(whichCard)].getValue != "draw4")): print("draw cards or play +x card!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) thrownCard = hand.pop(int(whichCard)) if(len(hand) == 1 and saidUNO == False): print("You forgot to say UNO! Now you have to draw 1 card!") hand.append(drawCard(cardStack)) input("Press any key!") return thrownCard else: print("Can't be thrown!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO) except: print("Error!") return playCard(hand, lastCard, cardStack, hasDrawnCard, playerName, direction, drawCards, saidUNO)
drawCards[0] += 2 elif lastCard.getValue() == "draw4": if lastCard.backInDeck == 1: drawCards[0] = 0 else: drawCards[0] += 4 if(lastCard.getColor() == "wild"): if "KI" in names[whichPlayer]: colorCardsInHand = [0, 0, 0, 0] for card in handsOfCards[whichPlayer]: if(card.color.value <= 4): colorCardsInHand[card.color.value] += 1 bestColor = colorCardsInHand.index(max(colorCardsInHand)) otherColor = bestColor else: otherColor = CurrentScreen.showChooseColorScreen( "", handsOfCards[whichPlayer], direction, lastCard, names[whichPlayer], drawCards) elif lastCard.getValue() == "chooseColor" and lastCard.getColor() == "wild": if "KI" in names[whichPlayer]: colorCardsInHand = [0, 0, 0, 0] for card in handsOfCards[whichPlayer]: if(card.color.value <= 4): colorCardsInHand[card.color.value] += 1 bestColor = colorCardsInHand.index(max(colorCardsInHand)) otherColor = bestColor else: otherColor = CurrentScreen.showChooseColorScreen( "", handsOfCards[whichPlayer], direction, lastCard, names[whichPlayer], drawCards) elif lastCard.getValue() == "reverse" and lastCard.backInDeck == 0: direction *= -1 drawCards[1] = 0 elif lastCard.getValue() == "skip" and lastCard.backInDeck == 0: