Ejemplo n.º 1
0
class GamePlay():
    def __init__(self):
        gamedata.board = Board()
        self.board_surf = DrawBoardData()
        self.gamelg = Gamelogic()
        self.selected_token = []
        self.selected_joker = False

    def update(self):

        #update board and set button
        self.board_surf.update(gamedata.board,gamedata.players)
        self.bnoble = [Button(noble[0],noble[1]) for noble in self.board_surf.nobles]
        self.bdeck1 = Button(self.board_surf.deck1[0],self.board_surf.deck1[1])
        self.btier1 = [Button(card[0],card[1]) for card in self.board_surf.tier1]
        self.bdeck2 = Button(self.board_surf.deck2[0],self.board_surf.deck2[1])
        self.btier2 = [Button(card[0],card[1]) for card in self.board_surf.tier2]
        self.bdeck3 = Button(self.board_surf.deck3[0],self.board_surf.deck3[1])
        self.btier3 = [Button(card[0],card[1]) for card in self.board_surf.tier3]
        self.btokenpool = [Button(token[0],token[1]) for token in self.board_surf.tokenpool]
        self.bjoker = Button(self.board_surf.joker[0],self.board_surf.joker[1])

        self.bplayercard = [[Button(card[0],card[1]) for card in player[0].holdcards] for player in self.board_surf.players]
        self.bplayertoken = [[Button(token[0][0],token[0][1]) for token in player[0].token] for player in self.board_surf.players]
        self.bplayerjoker = [Button(player[0].jokericon[0],player[0].jokericon[1]) for player in self.board_surf.players]

        for player in range(len(gamedata.players)):
            if gamedata.players[player].isplaying:
                self.player = gamedata.players[player]
                self.playernum = player

    #click and hover function

        for card in range(len(self.bplayercard[self.playernum])):
            if self.bplayercard[self.playernum][card].isclicked():
                self.gamelg.player_buy_hold_card(self.player,card)
        for token in range(len(self.bplayertoken[self.playernum])):
            if self.bplayertoken[self.playernum][token].isclicked():
                self.gamelg.player_convert_joker(self.player,token)
        if self.bplayerjoker[self.playernum].isclicked():
            self.gamelg.player_reset_joker(self.player)

        for bnoble in self.bnoble:
            if bnoble.isclicked():
                pass

        if self.bdeck1.ishovered():
            print("deck1 is hovered")
        for card in range(len(self.btier1)):
            if self.btier1[card].isclicked():
                print('tier1 '+str(card))
                if self.selected_joker:
                    self.gamelg.player_take_card(gamedata.board,gamedata.board.tier1,gamedata.board.deck1,card,self.player)
                    self.selected_joker = False
                else:
                    self.gamelg.player_buy_card(self.player,gamedata.board.deck1,gamedata.board.tier1,card)
        if self.bdeck2.ishovered():
            print("deck2 is hovered")
        for card in range(len(self.btier2)):
            if self.btier2[card].isclicked():
                print('tier2 '+str(card))
                if self.selected_joker:
                    self.gamelg.player_take_card(gamedata.board,gamedata.board.tier2,gamedata.board.deck2,card,self.player)
                    self.selected_joker = False
                else:
                    self.gamelg.player_buy_card(self.player,gamedata.board.deck2,gamedata.board.tier2,card)
        if self.bdeck3.ishovered():
            print("deck3 is hovered")
        for card in range(len(self.btier3)):
            if self.btier3[card].isclicked():
                print('tier3 '+str(card))
                if self.selected_joker:
                    self.gamelg.player_take_card(gamedata.board,gamedata.board.tier3,gamedata.board.deck3,card,self.player)
                    self.selected_joker = False
                else:
                    self.gamelg.player_buy_card(self.player,gamedata.board.deck3,gamedata.board.tier3,card)

        #click token
        for btoken in range(len(self.btokenpool)):
            if self.btokenpool[btoken].isclicked():
                if not(len(self.selected_token) == 2 and btoken in self.selected_token) and not(self.selected_joker):
                    if gamedata.board.tokenpool.asList()[btoken] > 0:
                        self.selected_token.append(btoken)
                if self.selected_token.count(btoken) == 2 and len(self.selected_token) == 2:
                    if gamedata.board.tokenpool.asList()[btoken] > 3:
                        self.gamelg.player_take_two(self.selected_token,self.player)
                        self.selected_token = []
                    else:
                        self.selected_token.pop()
                if len(self.selected_token) == 3:
                    self.gamelg.player_take_three(self.selected_token,self.player)
                    self.selected_token = []
            if self.btokenpool[btoken].isRclicked():
                if btoken in self.selected_token:
                    self.selected_token.remove(btoken)
        #click joker
        if self.bjoker.isclicked():
            if self.selected_token == []:
                self.selected_joker = True
        if self.bjoker.isRclicked():
            self.selected_joker = False

        #render
        gamedata.listRender.append((self.board_surf.boardbg,(0,0)))
        gamedata.listRender.append(self.board_surf.deck1)
        gamedata.listRender.append(self.board_surf.deck2)
        gamedata.listRender.append(self.board_surf.deck3)
        for player in self.board_surf.players:
            gamedata.listRender.append(player[0].bg)
            for token in player[0].token:
                for surf in token:
                    gamedata.listRender.append(surf)
            for holdcard in player[0].holdcards:
                gamedata.listRender.append(holdcard)
            gamedata.listRender.append(player[0].jokericon)
            gamedata.listRender.append(player[0].jokerscore)
            gamedata.listRender.append(player[0].pvicon)
            gamedata.listRender.append(player[0].pvscore)
        for bnoble in self.bnoble:
            bnoble.render()
        for btier1 in self.btier1:
            btier1.render()
        for btier2 in self.btier2:
            btier2.render()
        for btier3 in self.btier3:
            btier3.render()
        for btoken in range(len(self.btokenpool)):
            if btoken in self.selected_token:
                self.btokenpool[btoken].renderselected()
            else:
                self.btokenpool[btoken].render()
        if self.selected_joker:
            self.bjoker.renderselected()
        else:
            self.bjoker.render()