Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using Python 3.5.2 and IDLE Write the code for a modified game of the card game

ID: 3812332 • Letter: U

Question

Using Python 3.5.2 and IDLE Write the code for a modified game of the card game crazy eights (much like a game of UNO, where the card played is now on top of the deck and its number or face value is now what is playable for the next player). Write the code to be a 2 player game with any 8 card being able to input a new face value to play on the discard pile. Rules: Use a standard deck of cards, each player starts with 8 cards. To begin flip over the top card from the draw pile. To play a card it must match either the number or face (hearts, spades, diamonds, clubs). If an 8 card is played, that player may choose what to change the face value to. If a player does not have a playable card, they must draw a new card and lose their turn. The object is to run out of cards before the other player.

Explanation / Answer

Python Code for UNO Game :

from random import randint
class StandardCards:
def __init__(self,c,n):
self.color = c
self.number = n
def __str__(self):
return self.color + " " + str(self.number)
__repr__ = __str__
  
class WildCard:
def __init__(self):
self.is_draw_4 = False
def __str__(self):
if self.is_draw_4 == False:
return "Wild"
else:
return "Wild Draw 4"
__repr__ = __str__
# never used card
class ReversCard:
def __init__(self,c):
self.color = c
def __str__(self):
return self.color + "Reverse"
__repr__ = __str__
class SkipCard:
def __init__(self,c):
self.color = c
def __str__(self):
return self.color + "Skip"
__repr__ = __str__
class DrawCard:
def __init__(self,c):
DrawCard.color = c
def __str__(self):
return self.color + " Draw 2 "
__repr__ = __str__
class Player:
def __init__(self,name,pid):
self.name = name
self.pid = pid
self.cards = []
def __str__(self):
return '%s: %s' % (self.name, ', '.join(str(card) for card in self.cards))
__repr__ = __str__
def create_deck():
deck = []
for i in range(10):
for color in ['blue','green','red','yellow']:
if i == 0:
card = StandardCards(color,i)
deck.append(card)
else:
card = StandardCards(color,i)
deck.append(card)
card = StandardCards(color,i)
deck.append(card)
# makes the wild card
for i in range(4):
card = WildCard()
deck.append(card)
#makes wild card that is a draw 4
for i in range(4):
cards = WildCard() # never used
card.is_draw_4 = True
deck.append(card)
return deck
def deal_one_card(p,deck):
if len(deck)==0:
return
i = randint(0,len(deck)-1)
p.cards.append(deck[i])
deck.remove(deck[i])
def create_discard_pile(deck):
discard_pile = []
i = randint(0,len(deck)-1)
discard_pile.append(deck[i])
deck.remove(deck[i])
return discard_pile
def deal(p1,p2,deck):
for i in range(8):
deal_one_card(p1,deck)
deal_one_card(p2,deck)
  
if __name__ == '__main__':
p1 = Player("Jim",1)
p2 = Player("John",2)
  
deck = create_deck()
deal(p1,p2,deck)
discard_pile = create_discard_pile(deck)
print(p1)
print(p2)
  
print(discard_pile[-1])

Output :

sh-4.3$ python main.py                                                                                                                                                          

Jim: yellow 1, yellow 4, yellow 3, red 6, blue 4, green 6, green 1, red 9                                                                                                       

John: green 2, blue 7, red 2, green 4, red 5, yellow 5, Wild, blue 8                                                                                                            

yellow 8

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote