samedi 14 décembre 2019

Python Uno Game

Hello guys ı am trying to play uno in python3 but my codes are not working. And also ı didin't see any errors(error messages) when ı run it. Can you help me? where did i make a mistake? ı do not understand.. There is my codes;

import random

class UnoCard:
    def __init__(self, c,n):
        self.color = c
        self.num = n
    def __str__(self):
        if self.c == 0:
            return "green" + str(self.n)
        if self.c == 1:
            return "yellow" + str(self.n)
        if self.c == 2:
            return "blue" + str(self.n)
        if self.c == 3:
            return "red" + str(self.n)
    def canPlay(self,other):
        if (self.num == other.num) or (self.color == other.color):
            return True
        return False 

class CollectionOfUnoCards:
    def __init__(self):
        self.l = []
    def addCard (self,c):
        self.l.append(c)
    def __str__(self):
        if(self.l):
            col_str = ""
            for i in range (0, len(self.l)):
                col_str = col_str + ' ' + str(self.l[i])
            return col_str
    def makeDeck(self):
        for num in range (1,10):
            for color in ["Yellow", "Red", "Blue", "Green"]:
                newcard = UnoCard(color,num)
                Deck.addCard(newcard)
                Deck.addCard(newcard)


    def shuffle(self):
        shuffle = random.randint(0,73)

    def getNumCards(self):
        return len(CollectionOfUnoCards)

    def getTopCard(self):
        return CollectionOfUnoCards[0]

    def canPlay(self, other):
        for card in self.l:
            if(card.canPlay(other)):
                return True
        return False        

    def getCard(self,index):
        return makeDeck(CollectionOfUnoCards)


class Uno:
    def __init__(self):
        self.Deck = CollectionOfUnoCards()
        self.Deck.makeDeck()
        self.Deck.shuffle()
        self.hand1 = CollectionOfUnoCards()
        self.hand2 = CollectionOfUnoCards()
        for i in range(7):
            self.hand1.Collection.append(deck.Collection.pop( ))
            self.hand1.Collection.append(deck.Collection.pop( ))

    def playGame(self):
        self.hand1.l.pop()
        self.lastPlayedCard = hand1.l.pop()
        while(True):
            self.playTurn(1)
            self.playTurn(2)
            if len(self.hand1.l) == 0 or len(self.hand2.l) == 0 :
                if len(self.hand1.l) == 0:
                    print("Player1 is winner")
                elif len(self.hand2.l) == 0:
                    print("player2 is winner")
                else:
                    print("The game ends in a draw")
                return False


    def playTurn(self, Player):
        if Player == 1:
            if canPlay(lastPlayedCard):
                hand1.pop()
                lastPlayedCard = hand1.pop()
            else: 
                hand1.Collection.append(deck.Collection.pop())
        else: 
            if canPlay(lastPlayedCard):
                hand2.pop()
                lastPlayedCard = hand2.pop()
            else: 
                hand2.Collection.append(deck.Collection.pop())

    def printResult(self):
        print (hand1)
        print (hand2)

def main():
    my_game = Uno()
    my_game.playGame()

ı writed in Anaconda on windows10. The program closes automatically when I run it. I'm not getting any output..




Aucun commentaire:

Enregistrer un commentaire