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)
elif lastCard.getValue() == "reverse" and lastCard.backInDeck == 0: direction *= -1 drawCards[1] = 0 elif lastCard.getValue() == "skip" and lastCard.backInDeck == 0: whichPlayer = (whichPlayer + 1 * direction) % (numberOf[0] + numberOf[1]) drawCards[1] = 0 else: drawCards[1] = 0 while Card.someoneWon(handsOfCards) == False: if(otherColor != -1): lastCard = Card.Card(EnumsCards.Colors(otherColor), lastCard.value) lastCard.backInDeck = 1 otherColor = -1 if "KI" not in handsOfCards[whichPlayer]: CurrentScreen.showCurrentScreen( handsOfCards[whichPlayer], direction, lastCard, names[whichPlayer], drawCards) lastCardTmp = Card.playCard(handsOfCards[whichPlayer], lastCard, cardStack, False, names[whichPlayer], direction, drawCards, False) if(lastCard.backInDeck == 0): cardStack.append(lastCard) lastCard.backInDeck = 1 Card.shuffleDeckofCards(cardStack) lastCard = lastCardTmp if lastCard.getValue() == "draw2": if lastCard.backInDeck == 1: drawCards[0] = 0 else: drawCards[0] += 2 elif lastCard.getValue() == "draw4": if lastCard.backInDeck == 1: drawCards[0] = 0
elif lastCard.getValue() == "reverse" and lastCard.backInDeck == 0: direction *= -1 drawCards[1] = 0 elif lastCard.getValue() == "skip" and lastCard.backInDeck == 0: whichPlayer = (whichPlayer + 1 * direction) % (numberOf[0] + numberOf[1]) drawCards[1] = 0 else: drawCards[1] = 0 while Card.someoneWon(handsOfCards) == False: if(otherColor != -1): lastCard = Card.Card(EnumsCards.Colors(otherColor), lastCard.value) lastCard.backInDeck = 1 otherColor = -1 if "KI" not in handsOfCards[whichPlayer]: CurrentScreen.showCurrentScreen( handsOfCards[whichPlayer], direction, lastCard, names[whichPlayer], drawCards) lastCardTmp = Card.playCard(handsOfCards[whichPlayer], lastCard, cardStack, False, names[whichPlayer], direction, drawCards, False) if(lastCard.backInDeck == 0): cardStack.append(lastCard) lastCard.backInDeck = 1 Card.shuffleDeckofCards(cardStack) lastCard = lastCardTmp if lastCard.getValue() == "draw2": if lastCard.backInDeck == 1: drawCards[0] = 0 else: drawCards[0] += 2 elif lastCard.getValue() == "draw4": if lastCard.backInDeck == 1: drawCards[0] = 0