class Menu(): def __init__(self): self.bg = pygame.image.load(BG_IMG) self.header = FONT_HEADER.render('Splendor',1,(200,200,0)) self.bStartgame = Button(pygame.image.load(START_IMG),(550,200)) self.bHowtoplay = Button(pygame.image.load(HTP_IMG),(550,300)) self.bExit = Button(pygame.image.load(EXIT_IMG),(550,400)) self.toggleExit = False self.exitHeader = FONT_HEADER.render('EXIT',1,(20,20,20)) self.exitText = FONT_NORMAL.render('Are you sure?',1,(20,20,20)) self.bYes = Button(FONT_NORMAL.render('Yes',1,(20,20,20)),(560,280)) self.bNo = Button(FONT_NORMAL.render('No',1,(20,20,20)),(680,280)) def update(self): gamedata.listRender.append((self.bg,(0,0))) gamedata.listRender.append((self.header,(100,50))) if self.toggleExit: gamedata.listRender.append((self.exitHeader,(530,180))) gamedata.listRender.append((self.exitText,(550,230))) self.bYes.render() self.bNo.render() else: self.bStartgame.render() self.bHowtoplay.render() self.bExit.render() if self.bStartgame.isclicked(): gamedata.state = 'gameplay' gamedata.gameplay = GamePlay() if self.bExit.isclicked(): self.toggleExit = True if self.bNo.isclicked(): self.toggleExit = False if self.bYes.isclicked(): gamedata.isRunning = False pygame.quit()
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()