class Bloody99: def __init__(self): self.judge = Judge() #need to pause it self.initGame() def loadImg(self): self.background_img_file = 'Image/Nostalgy.gif' self.beginning_bg_file = 'Image/AIposter.gif' self.cardImgFileName = list() self.cardImgFileName.append('Image/01s.gif') self.cardImgFileName.append('Image/02s.gif') self.cardImgFileName.append('Image/03s.gif') self.cardImgFileName.append('Image/04s.gif') self.cardImgFileName.append('Image/05s.gif') self.cardImgFileName.append('Image/06s.gif') self.cardImgFileName.append('Image/07s.gif') self.cardImgFileName.append('Image/08s.gif') self.cardImgFileName.append('Image/09s.gif') self.cardImgFileName.append('Image/10s.gif') self.cardImgFileName.append('Image/11s.gif') self.cardImgFileName.append('Image/12s.gif') self.cardImgFileName.append('Image/13s.gif') self.cardImgFileName.append('Image/01h.gif') self.cardImgFileName.append('Image/02h.gif') self.cardImgFileName.append('Image/03h.gif') self.cardImgFileName.append('Image/04h.gif') self.cardImgFileName.append('Image/05h.gif') self.cardImgFileName.append('Image/06h.gif') self.cardImgFileName.append('Image/07h.gif') self.cardImgFileName.append('Image/08h.gif') self.cardImgFileName.append('Image/09h.gif') self.cardImgFileName.append('Image/10h.gif') self.cardImgFileName.append('Image/11h.gif') self.cardImgFileName.append('Image/12h.gif') self.cardImgFileName.append('Image/13h.gif') self.cardImgFileName.append('Image/01d.gif') self.cardImgFileName.append('Image/02d.gif') self.cardImgFileName.append('Image/03d.gif') self.cardImgFileName.append('Image/04d.gif') self.cardImgFileName.append('Image/05d.gif') self.cardImgFileName.append('Image/06d.gif') self.cardImgFileName.append('Image/07d.gif') self.cardImgFileName.append('Image/08d.gif') self.cardImgFileName.append('Image/09d.gif') self.cardImgFileName.append('Image/10d.gif') self.cardImgFileName.append('Image/11d.gif') self.cardImgFileName.append('Image/12d.gif') self.cardImgFileName.append('Image/13d.gif') self.cardImgFileName.append('Image/01c.gif') self.cardImgFileName.append('Image/02c.gif') self.cardImgFileName.append('Image/03c.gif') self.cardImgFileName.append('Image/04c.gif') self.cardImgFileName.append('Image/05c.gif') self.cardImgFileName.append('Image/06c.gif') self.cardImgFileName.append('Image/07c.gif') self.cardImgFileName.append('Image/08c.gif') self.cardImgFileName.append('Image/09c.gif') self.cardImgFileName.append('Image/10c.gif') self.cardImgFileName.append('Image/11c.gif') self.cardImgFileName.append('Image/12c.gif') self.cardImgFileName.append('Image/13c.gif') self.iBack_Card = 'Image/back101.gif' # load the image self.background = pygame.image.load(self.background_img_file).convert() self.beginning_bg = pygame.image.load(self.beginning_bg_file).convert() self.cardImg = list() for i in range(0, len(self.cardImgFileName)): self.cardImg.append(pygame.image.load(self.cardImgFileName[i]).convert()) self.Back_Card = pygame.image.load(self.iBack_Card).convert() self.Back_Card90 = pygame.transform.rotate(self.Back_Card , 90) self.Back_Cardn90 = pygame.transform.rotate(self.Back_Card , -90) def initPos(self): self.player_card_x = SCREEN_SIZE[0]/2 - self.Back_Card90.get_width() self.player_card_y = SCREEN_SIZE[1] - self.cardImg[0].get_height() self.p2_card_x = SCREEN_SIZE[0] - self.Back_Card90.get_width() - 10 self.p2_card_y = SCREEN_SIZE[1]/2 - self.cardImg[0].get_height() self.p3_card_x = SCREEN_SIZE[0]/2 - self.Back_Card90.get_width() self.p3_card_y = 10 self.p4_card_x = 10 self.p4_card_y = SCREEN_SIZE[1]/2 - self.cardImg[0].get_height() self.click_move_x = self.cardImg[0].get_width()/6 self.click_move_y = self.cardImg[0].get_height()/6 def num_to_cards(self, num): return self.cardImg[num-1] def runGame(self): i = 1 self.prevCard = list() log = logger("bloody99.txt") self.fill_background() for k in range(i): pygame.display.update() self.judge = Judge() self.judge._possibleActions_ = list() self.judge.initBoard() self.judge.rand4Cards() self.fill_background() self.resetCardPos() if self.judge.isDead[0] == False: self.display_player1() elif self.judge.isDead[1] == False: self.display_player2() elif self.judge.isDead[2] == False: self.display_player3() elif self.judge.isDead[3] == False: self.display_player4() pygame.display.update() while not self.judge.isGameFinished(): self.judge._possibleActions_ = self.judge.getAction() if len(self.judge._possibleActions_) == 0: self.judge.setDead(self.judge.current_player) self.judge.changeNextPlayer() continue self.fill_background() self.resetCardPos() self.display_allPlayers() self.display_desktop(self.prevCard) pygame.display.update() state = PlayerState(self.judge.history, self.judge._possibleActions_, self.judge.card[self.judge.current_player-1], len(self.judge.card[0]), len(self.judge.card[1]), len(self.judge.card[2]), len(self.judge.card[3]), len(self.judge.mountain), self.judge.point, self.judge.clock_wise, self.judge.small_h[self.judge.current_player-1]) #get playerstate if self.judge.player[self.judge.current_player-1].__class__.__name__ == "HumanAgent": click = True while click: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() if event.type == MOUSEBUTTONDOWN: if event.button == 1: self.clickCard(pygame.mouse.get_pos()) if event.button == 3: cards_used = [] for cardIdx in range(len(self.card_clicked_list)): if self.card_clicked_list[cardIdx] == 1: cards_used.append(self.judge.card[self.judge.current_player-1][cardIdx]) a = self.judge.player[self.judge.current_player-1].pygameGenmove(self.judge.current_player, cards_used) a.user = self.judge.current_player a.victim = self.chooseVictim(a) if self.judge.checkRule(a) == True and len(cards_used) > 0: click = False for v in a.cards_used: a.cardValue += 13 if (v % 13 == 0) else v % 13 self.fill_background() self.resetCardPos() self.display_allPlayers() self.display_desktop(self.prevCard) pygame.display.update() if a.cardValue == 9: self.exchangeCards(a.user, a.victim, a.cards_used) pygame.time.delay(300) self.judge.doAction(a) if a.cardValue == 7: self.pickOneCard(a.user, a.victim) pygame.time.delay(300) self.getOneCard(a.user, a.victim) pygame.time.delay(300) self.fill_background() self.resetCardPos() self.display_allPlayers() self.prevCard = a.cards_used self.display_desktop(self.prevCard) pygame.display.update() break elif self.judge.checkRule(a) == False and len(cards_used) > 0: font = pygame.font.Font(None, 40) text = font.render("ILLEGAL MOVE!!", 1, white) self.window.blit(text, (self.desk_mid_x*2/3+20, self.desk_mid_y-50)) pygame.display.update() continue else: self.fill_background() self.resetCardPos() self.display_allPlayers() self.display_desktop(self.prevCard) pygame.display.update() continue else: a = self.judge.player[self.judge.current_player-1].genmove(state) for v in a.cards_used: a.cardValue += 13 if (v % 13 == 0) else v % 13 self.fill_background() self.resetCardPos() self.display_allPlayers() self.display_desktop(self.prevCard) pygame.display.update() if a.cardValue == 9: self.exchangeCards(a.user, a.victim, a.cards_used) pygame.time.delay(300) self.judge.doAction(a) if a.cardValue == 7: self.pickOneCard(a.user, a.victim) pygame.time.delay(600) self.getOneCard(a.user, a.victim) pygame.time.delay(600) else: pygame.time.delay(1500) self.fill_background() self.resetCardPos() self.display_allPlayers() self.prevCard = a.cards_used self.display_desktop(self.prevCard) pygame.display.update() winner = 0 for i in range(4): if self.judge.isDead[i] == False: winner = i if winner == 0: s = "South " elif winner == 1: s = "East " elif winner == 2: s = "North " else: s = "West " if self.judge.player[winner].__class__.__name__ == "HumanAgent": font = pygame.font.Font(None, 40) text = font.render("You Win!", 1, white) self.window.blit(text, (self.desk_mid_x - 20, self.desk_mid_y/2+50)) pygame.display.update() else: font = pygame.font.Font(None, 40) #text = font.render(s + ": " + self.judge.player[winner].__class__.__name__ + " is the WINNER!!", 1, white) text = font.render(s + "is the WINNER!!", 1, white) self.window.blit(text, (self.desk_mid_x*2/3-50, self.desk_mid_y/2+50)) pygame.display.update() g = Game(i, self.judge.player, str(winner+1)) log.logGame(g) pygame.time.delay(2500) self.screen.blit(self.beginning_bg, (0, 0)) pygame.display.update() clock.tick(60) def fill_background(self): for y in range(0, SCREEN_SIZE[1], self.background.get_height()): for x in range(0, SCREEN_SIZE[0], self.background.get_width()): self.window.blit(self.background, (x, y)) def resetCardPos(self): self.player_card_pos = [[0 for x in range(2)] for x in range(len(self.judge.card[0]))] for i in range(0, len(self.judge.card[0])): self.player_card_pos[i][0] = self.player_card_x + i*self.Back_Card.get_width()/2 self.player_card_pos[i][1] = self.player_card_y self.card_clicked_list = [0 for x in range(len(self.judge.card[0]))] self.p2_card_pos = [[0 for x in range(2)] for x in range(len(self.judge.card[1]))] self.p3_card_pos = [[0 for x in range(2)] for x in range(len(self.judge.card[2]))] self.p4_card_pos = [[0 for x in range(2)] for x in range(len(self.judge.card[3]))] for i in range(0, len(self.judge.card[1])): self.p2_card_pos[i][0] = self.p2_card_x self.p2_card_pos[i][1] = self.p2_card_y + i*self.Back_Card90.get_height()/2 for i in range(0, len(self.judge.card[2])): self.p3_card_pos[i][0] = self.p3_card_x + i*self.Back_Card.get_width()/2 self.p3_card_pos[i][1] = self.p3_card_y for i in range(0, len(self.judge.card[3])): self.p4_card_pos[i][0] = self.p4_card_x self.p4_card_pos[i][1] = self.p4_card_y + i*self.Back_Cardn90.get_height()/2 def display_allPlayers(self): self.display_player1() self.display_player2() self.display_player3() self.display_player4() def display_player1(self, skipIdx = list()): if len(skipIdx) > 0: for x in range(0, len(self.judge.card[0])): skip = False for i in range(0, len(skipIdx)): if skipIdx[i] != x: continue else: skip = True break if skip != True: self.window.blit(self.num_to_cards(self.judge.card[0][x]), (self.player_card_pos[x][0], self.player_card_pos[x][1])) else: for x in range(0, len(self.judge.card[0])): self.window.blit(self.num_to_cards(self.judge.card[0][x]), (self.player_card_pos[x][0], self.player_card_pos[x][1])) font = pygame.font.Font(None, 30) if self.judge.current_player == 1: word = "South: " + self.judge.player[0].__class__.__name__ text = font.render(word, 1, blue) self.window.blit(text, (self.player_card_x,self.player_card_y-50)) def display_player2(self, skipIdx = list()): if len(skipIdx) > 0: for x in range(0, len(self.judge.card[1])): skip = False for i in range(0, len(skipIdx)): if skipIdx[i] != x: continue else: skip = True break if skip != True: self.window.blit(self.Back_Card90, (self.p2_card_pos[x][0], self.p2_card_pos[x][1])) else: for x in range(0, len(self.judge.card[1])): self.window.blit(self.Back_Card90, (self.p2_card_pos[x][0], self.p2_card_pos[x][1])) if self.judge.current_player == 2: font = pygame.font.Font(None, 30) #word = "East: " + self.judge.player[1].__class__.__name__ word = "East" text = font.render(word, 1, blue) self.window.blit(text, (self.p2_card_x-80, self.p2_card_y-50)) def display_player3(self, skipIdx = list()): if len(skipIdx) > 0: for x in range(0, len(self.judge.card[2])): skip = False for i in range(0, len(skipIdx)): if skipIdx[i] != x: continue else: skip = True break if skip != True: self.window.blit(self.Back_Card, (self.p3_card_pos[x][0], self.p3_card_pos[x][1])) else: for x in range(0, len(self.judge.card[2])): self.window.blit(self.Back_Card, (self.p3_card_pos[x][0], self.p3_card_pos[x][1])) if self.judge.current_player == 3: font = pygame.font.Font(None, 30) #word = "North: " + self.judge.player[2].__class__.__name__ word = "North" text = font.render(word, 1, blue) self.window.blit(text, (self.p3_card_x, self.p3_card_y + self.Back_Card90.get_width())) def display_player4(self, skipIdx = list()): if len(skipIdx) > 0: for x in range(0, len(self.judge.card[3])): skip = False for i in range(0, len(skipIdx)): if skipIdx[i] != x: continue else: skip = True break if skip != True: self.window.blit(self.Back_Cardn90, (self.p4_card_pos[x][0], self.p4_card_pos[x][1])) else: for x in range(0, len(self.judge.card[3])): self.window.blit(self.Back_Cardn90, (self.p4_card_pos[x][0], self.p4_card_pos[x][1])) if self.judge.current_player == 4: font = pygame.font.Font(None, 30) #word = "West: " + self.judge.player[3].__class__.__name__ word = "West" text = font.render(word, 1, blue) self.window.blit(text, (self.p4_card_x, self.p4_card_y-50)) def display_desktop(self, cards): self.desk_card_pos = [[0 for x in range(2)] for x in range(len(cards))] self.desk_mid_x = SCREEN_SIZE[0]/2 - len(cards)*self.cardImg[0].get_width()/2 self.desk_mid_y = SCREEN_SIZE[1]/2 - self.cardImg[0].get_height()/2 for i in range(0, len(cards)): self.desk_card_pos[i][0] = self.desk_mid_x + i*self.cardImg[0].get_width() self.desk_card_pos[i][1] = self.desk_mid_y for i in range(0, len(cards)): self.window.blit(self.num_to_cards(cards[i]), (self.desk_card_pos[i][0], self.desk_card_pos[i][1])) font = pygame.font.Font(None, 40) text = font.render("Point: " + str(self.judge.point), 1, white) self.window.blit(text, (SCREEN_SIZE[0]-150,10)) def clickCard(self, mousePos): for i in range(0, len(self.judge.card[0])): if i == len(self.judge.card[0])-1: x = 1 else: x = 0 if self.player_card_x <= mousePos[0] < self.player_card_x + (i+1+x)*self.cardImg[0].get_width()/2: if self.card_clicked_list[i] == 0: # choose the card if self.player_card_y <= mousePos[1] < self.player_card_y + self.cardImg[0].get_height(): self.moveCard_player([0,-1], i) self.card_clicked_list[i] = 1 break elif self.card_clicked_list[i] == 1: # cancel the choosed card if self.player_card_y - self.click_move_y <= mousePos[1] < self.player_card_y - self.click_move_y + self.cardImg[0].get_height(): self.moveCard_player([0,1], i) self.card_clicked_list[i] = 0 break def moveCard_player(self, dist, idx, skipIdx = list(), skipDuo = (-1,list())): oldy = self.player_card_pos[idx][1] while abs(self.player_card_pos[idx][1] - oldy) <= self.click_move_y: self.player_card_pos[idx][0] += dist[0] self.player_card_pos[idx][1] += dist[1] self.fill_background() self.display_player1(skipIdx) if skipDuo[0] == -1: self.display_player2() self.display_player3() self.display_player4() elif skipDuo[0] == 2: self.display_player2(skipDuo[1]) self.display_player3() self.display_player4() elif skipDuo[0] == 3: self.display_player3(skipDuo[1]) self.display_player2() self.display_player4() elif skipDuo[0] == 4: self.display_player4(skipDuo[1]) self.display_player2() self.display_player3() self.display_desktop(self.prevCard) clock.tick(60) pygame.display.update() def moveCard_p2(self, dist, idx, skipIdx = list(), skipDuo = (-1,list())): oldx = self.p2_card_pos[idx][0] while abs(self.p2_card_pos[idx][0] - oldx) <= self.click_move_x: self.p2_card_pos[idx][0] += dist[0] self.p2_card_pos[idx][1] += dist[1] self.fill_background() self.display_player2(skipIdx) if skipDuo[0] == -1: self.display_player1() self.display_player3() self.display_player4() elif skipDuo[0] == 1: self.display_player1(skipDuo[1]) self.display_player3() self.display_player4() elif skipDuo[0] == 3: self.display_player3(skipDuo[1]) self.display_player1() self.display_player4() elif skipDuo[0] == 4: self.display_player4(skipDuo[1]) self.display_player1() self.display_player3() self.display_desktop(self.prevCard) clock.tick(60) pygame.display.update() def moveCard_p3(self, dist, idx, skipIdx = list(), skipDuo = (-1,list())): oldy = self.p3_card_pos[idx][1] while abs(self.p3_card_pos[idx][1] - oldy) <= self.click_move_y: self.p3_card_pos[idx][0] += dist[0] self.p3_card_pos[idx][1] += dist[1] self.fill_background() self.display_player3(skipIdx) if skipDuo[0] == -1: self.display_player1() self.display_player2() self.display_player4() elif skipDuo[0] == 1: self.display_player1(skipDuo[1]) self.display_player2() self.display_player4() elif skipDuo[0] == 2: self.display_player2(skipDuo[1]) self.display_player1() self.display_player4() elif skipDuo[0] == 4: self.display_player4(skipDuo[1]) self.display_player1() self.display_player2() self.display_desktop(self.prevCard) clock.tick(60) pygame.display.update() def moveCard_p4(self, dist, idx, skipIdx = list(), skipDuo = (-1,list())): oldx = self.p4_card_pos[idx][0] while abs(self.p4_card_pos[idx][0] - oldx) <= self.click_move_x: self.p4_card_pos[idx][0] += dist[0] self.p4_card_pos[idx][1] += dist[1] self.fill_background() self.display_player4(skipIdx) if skipDuo[0] == -1: self.display_player1() self.display_player2() self.display_player3() elif skipDuo[0] == 1: self.display_player1(skipDuo[1]) self.display_player2() self.display_player3() elif skipDuo[0] == 2: self.display_player2(skipDuo[1]) self.display_player1() self.display_player3() elif skipDuo[0] == 3: self.display_player3(skipDuo[1]) self.display_player1() self.display_player2() self.display_desktop(self.prevCard) clock.tick(60) pygame.display.update() def chooseVictim(self, action): # 5 7 9(!= user) 10 12 (-1 -2) click the button then set the action.victim to it. cardvalue = 0 for card in action.cards_used: if card % 13 != 0: cardvalue += card % 13 else: cardvalue += 13 if cardvalue > 13 or cardvalue < 1: return 0 elif cardvalue == 5: w, h = 100, 50 if self.judge.isDead[0] == False: button(self.screen, "South",self.player_card_x, self.player_card_y, w, h, green, bright_green) if self.judge.isDead[1] == False: button(self.screen, "East",self.p2_card_x, self.p2_card_y, w, h, green, bright_green) if self.judge.isDead[2] == False: button(self.screen, "North",self.p3_card_x, self.p3_card_y, w, h, green, bright_green) if self.judge.isDead[3] == False: button(self.screen, "West", self.p4_card_x, self.p4_card_y, w, h, green, bright_green) pygame.display.update() click = True while click: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() if event.type == MOUSEBUTTONDOWN: if event.button == 1: click = False mousePos = pygame.mouse.get_pos() if self.judge.isDead[0] == False and self.player_card_x < mousePos[0] < self.player_card_x + w and self.player_card_y < mousePos[1] < self.player_card_y + h: victim = 1 elif self.judge.isDead[1] == False and self.p2_card_x < mousePos[0] < self.p2_card_x + w and self.p2_card_y < mousePos[1] < self.p2_card_y + h: victim = 2 elif self.judge.isDead[2] == False and self.p3_card_x < mousePos[0] < self.p3_card_x + w and self.p3_card_y < mousePos[1] < self.p3_card_y + h: victim = 3 elif self.judge.isDead[3] == False and self.p4_card_x < mousePos[0] < self.p4_card_x + w and self.p4_card_y < mousePos[1] < self.p4_card_y + h: victim = 4 else: click = True pygame.display.update() return victim elif cardvalue == 7 or cardvalue == 9: w, h = 100, 50 if self.judge.isDead[1] == False: button(self.screen, "East",self.p2_card_x, self.p2_card_y, w, h, green, bright_green) if self.judge.isDead[2] == False: button(self.screen, "North",self.p3_card_x, self.p3_card_y, w, h, green, bright_green) if self.judge.isDead[3] == False: button(self.screen, "West", self.p4_card_x, self.p4_card_y, w, h, green, bright_green) pygame.display.update() click = True while click: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() if event.type == MOUSEBUTTONDOWN: if event.button == 1: click = False mousePos = pygame.mouse.get_pos() if self.judge.isDead[1] == False and self.p2_card_x < mousePos[0] < self.p2_card_x + w and self.p2_card_y < mousePos[1] < self.p2_card_y + h: victim = 2 elif self.judge.isDead[2] == False and self.p3_card_x < mousePos[0] < self.p3_card_x + w and self.p3_card_y < mousePos[1] < self.p3_card_y + h: victim = 3 elif self.judge.isDead[3] == False and self.p4_card_x < mousePos[0] < self.p4_card_x + w and self.p4_card_y < mousePos[1] < self.p4_card_y + h: victim = 4 else: click = True pygame.display.update() return victim elif cardvalue == 10 or cardvalue == 12: w, h = 100, 50 value = 10 if cardvalue == 10 else 20 button(self.screen, "+"+str(value), SCREEN_SIZE[0]/3-w/2, SCREEN_SIZE[1]/2 , w, h, green, bright_green) button(self.screen, "-"+str(value), 2*SCREEN_SIZE[0]/3-w/2, SCREEN_SIZE[1]/2 , w, h, green, bright_green) pygame.display.update() click = True while click: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() if event.type == MOUSEBUTTONDOWN: if event.button == 1: click = False mousePos = pygame.mouse.get_pos() if SCREEN_SIZE[0]/3-w/2 < mousePos[0] < SCREEN_SIZE[0]/3-w/2 + w and SCREEN_SIZE[1]/2 < mousePos[1] < SCREEN_SIZE[1]/2 + h: victim = -1 elif 2*SCREEN_SIZE[0]/3-w/2 < mousePos[0] < 2*SCREEN_SIZE[0]/3-w/2 + w and SCREEN_SIZE[1]/2 < mousePos[1] < SCREEN_SIZE[1]/2 + h: victim = -2 else: click = True return victim if cardvalue == 10 or cardvalue == 12: button(self.screen, "-"+str(cardvalue), SCREEN_SIZE[1]/3, SCREEN_SIZE[0]/2 , 100, 50, green, bright_green) button(self.screen, "+"+str(cardvalue), 2*SCREEN_SIZE[1]/3, SCREEN_SIZE[0]/2 , 100, 50, green, bright_green) pygame.display.update() return -1 def pickOneCard(self, userIdx, victim): i = self.judge.p if victim == 1: self.moveCard_player([0,-1], i, [], [userIdx, [len(self.judge.card[userIdx-1])-1]]) elif victim == 2: self.moveCard_p2([-1,0], i, [], [userIdx, [len(self.judge.card[userIdx-1])-1]]) elif victim == 3: self.moveCard_p3([0,1], i, [], [userIdx, [len(self.judge.card[userIdx-1])-1]]) elif victim == 4: self.moveCard_p4([1,0], i, [], [userIdx, [len(self.judge.card[userIdx-1])-1]]) def getOneCard(self, userIdx, victim): self.fill_background() self.resetCardPos() self.display_desktop(self.prevCard) if userIdx == 1: self.player_card_pos[len(self.judge.card[userIdx-1])-1][1] -= self.click_move_y * 3 self.display_player1() self.display_player2() self.display_player3() self.display_player4() self.moveCard_player([0,1], len(self.judge.card[0])-1) elif userIdx == 2: self.p2_card_pos[len(self.judge.card[userIdx-1])-1][0] -= self.click_move_x * 3 self.display_player1() self.display_player2() self.display_player3() self.display_player4() self.moveCard_p2([1,0], len(self.judge.card[1])-1) elif userIdx == 3: self.p3_card_pos[len(self.judge.card[userIdx-1])-1][1] += self.click_move_x * 3 self.display_player1() self.display_player2() self.display_player3() self.display_player4() self.moveCard_p3([0,-1], len(self.judge.card[2])-1) elif userIdx == 4: self.p4_card_pos[len(self.judge.card[userIdx-1])-1][0] += self.click_move_x * 3 self.display_player1() self.display_player2() self.display_player3() self.display_player4() self.moveCard_p4([-1,0], len(self.judge.card[3])-1) pygame.display.update() def exchangeCards(self, userIdx, victim, cards_used): self.fill_background() self.prevCard = cards_used userSkipCard = list() for x in range(0, len(self.judge.card[userIdx-1])): for y in range(0, len(cards_used)): if self.judge.card[userIdx-1][x] == cards_used[y]: userSkipCard.append(x) self.resetCardPos() self.display_desktop(self.prevCard) if userIdx == 1: for i in range(0, len(self.judge.card[userIdx-1])): self.moveCard_player([0,-1], i, userSkipCard) elif userIdx == 2: for i in range(0, len(self.judge.card[userIdx-1])): self.moveCard_p2([-1,0], i, userSkipCard) elif userIdx == 3: for i in range(0, len(self.judge.card[userIdx-1])): self.moveCard_p3([0,1], i, userSkipCard) elif userIdx == 4: for i in range(0, len(self.judge.card[userIdx-1])): self.moveCard_p4([1,0], i, userSkipCard) if victim == 1: for i in range(0, len(self.judge.card[victim-1])): self.moveCard_player([0,-1], i, [], [userIdx, userSkipCard]) elif victim == 2: for i in range(0, len(self.judge.card[victim-1])): self.moveCard_p2([-1,0], i, [], [userIdx, userSkipCard]) elif victim == 3: for i in range(0, len(self.judge.card[victim-1])): self.moveCard_p3([0,1], i, [], [userIdx, userSkipCard]) elif victim == 4: for i in range(0, len(self.judge.card[victim-1])): self.moveCard_p4([1,0], i, [], [userIdx, userSkipCard]) pygame.display.update() def initGame(self): pygame.init() pygame.display.set_caption('Bloody99') self.window = pygame.display.set_mode((SCREEN_SIZE[0], SCREEN_SIZE[1])) self.screen = pygame.display.get_surface() self.loadImg() self.initPos() pos = (0, 0) self.screen.blit(self.beginning_bg, (0, 0)) intro = True while intro: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() # things need to update button(self.screen, "START!",100,400,200,50,green,bright_green,self.runGame) button(self.screen, "QUIT",100,500,200,50,red,bright_red,quitGame) pygame.display.update() clock.tick(15)