Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import time
- # WIP, as there are still some bugs
- master_deck = []
- types_of_colours = ['Blue', 'Red', 'Yellow', 'Green']
- types_of_cards = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'skip', 'reverse','+2', '+4']
- for x in range(0, 2):
- for colour in types_of_colours:
- for card in types_of_cards:
- master_deck.append("{} {}".format(colour, card))
- master_deck.append("Wildcard")
- master_deck.append("Wildcard")
- master_deck.append("Wildcard +4")
- master_deck.append("Wildcard +4")
- def shuffle():
- for x in range(0, len(master_deck)):
- new_index = random.randint(0, len(master_deck)-1)
- new = master_deck[x]
- master_deck[x] = master_deck[new_index]
- master_deck[new_index] = new
- shuffle()
- com_deck = []
- self_deck = []
- stack_of_cards = [master_deck[0]]
- master_deck.pop(master_deck[0])
- def deal_cards():
- for n in range(1, 15):
- card = master_deck[0]
- master_deck.pop(0)
- if n % 2 == 0:
- self_deck.append(card)
- else:
- com_deck.append(card)
- deal_cards()
- print("Here's your deck: ")
- print(self_deck)
- turn = random.randint(0, 1)
- while len(self_deck) != 0 and len(com_deck) != 0:
- print(stack_of_cards)
- print("Top card:")
- print("\n",stack_of_cards[len(stack_of_cards)-1])
- if turn == 1:
- print("My turn:")
- components = stack_of_cards[len(stack_of_cards)-1].split()
- for x in range(0, len(com_deck)):
- card = com_deck[x]
- c_components = card.split()
- if c_components[0] == components[0] or c_components[1] == components[1] or "Wildcard" in card:
- stack_of_cards.append(card)
- print("I placed {}!".format(card))
- com_deck.pop(com_deck.index(card))
- if 'Wildcard' in card:
- survey = {'Blue', 'Red', 'Yellow', 'Green'}
- backwards = {}
- for cards in com_deck:
- split_ = cards.split()
- survey[split_[0]] += 1
- for color in survey:
- backwards[survey[color]] = survey[color]
- print("I'm changing the color to {}!".format(backwards[max(backwards)]))
- stack_of_cards.append(backwards[max(backwards)])
- if '+4' in card:
- print("You drew 4 cards!")
- for z in range(0, 4):
- self_deck.append(stack_of_cards[0])
- stack_of_cards.pop(0)
- if '+2' in card:
- print("You drew 2 cards!")
- for a in range(0, 2):
- self_deck.append(stack_of_cards[0])
- stack_of_cards.pop(0)
- break
- if x == len(com_deck)-1:
- print("I drew a card!")
- com_deck.append(master_deck[0])
- master_deck.pop(0)
- turn -= 1
- else:
- print("It's your turn! \n Your deck:")
- print(self_deck)
- card = input("Pick a card: ")
- while card not in self_deck:
- card = input("Sorry, that's not a card in your deck! Pick another: ")
- print("You placed {}.".format(card))
- if "Wildcard" in card:
- picked = input("What color do you want to change it to? ")
- while picked not in types_of_colours:
- print(picked,"is not a valid color!")
- stack_of_cards.append(picked[0].upper()+picked[1:])
- if '+2' in card:
- print("I drew 2 cards!")
- for b in range(0, 2):
- com_deck.append(master_deck[0])
- master_deck.pop(0)
- if '+4' in card:
- print("I drew 4 cards!")
- for c in range(0, 4):
- com_deck.append(master_deck[0])
- master_deck.pop(0)
- if len(self_deck) == 0:
- print("You win!")
- else:
- print("I win!")
- game_over = input("Want to play again? (Y/N) ")
- if game_over == 'Y':
- new = open("uno.py", 'r')
- script = new.read()
- new.close()
- print("Restarting..")
- exec(script)
- else:
- print("Good game!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement