while player1.isAlive() and player2.isAlive() and quitte == 0: souris_x = 0 souris_y = 0 for event in pygame.event.get(): if event.type == QUIT: quitte = 1 app = 0 jeu = 0 print(quitte) if tourDePlayer1 == True: historiques.append("Au tour du joueur 1") player1.mana += 1 if len(pioche) > 0 and len(player1.hand) < 6: player1.pickUp(pioche) majAffichagePlateau(fenetre, historiques) majAffichageCards(fenetre, player1, player2) #Affichage carte en mains posCardX = 965 for card in player1.hand: carteImage = pygame.image.load("cards/" + card.name + ".png").convert_alpha() carteImage = pygame.transform.scale(carteImage, (133, 181)) fenetre.blit(carteImage, (posCardX, 540)) posCardX -= 153 posCardX = 200 for card in player2.hand:
def jouer(): pygame.init() fenetre = pygame.display.set_mode(screen_size) # definir tous fonds fondEcran = ["salle", "Terrain", "terrain3", "terrain4", "terrain5", "terrain6", "panda_roux"] #choix aléatoire du fond numFond = random.randint(0, len(fondEcran) - 1) fond = pygame.image.load(fondEcran[numFond] + ".png").convert_alpha() menu_fond = pygame.image.load("fondPython.jpeg").convert() fenetre.blit(menu_fond, (0,0)) carte_hand = 0, 500, 1300, 800 carte_posx = 200 fields = [] eposy = 100 menus = [ {"element" : pygame.image.load("bouton_1_vsIA.png").convert_alpha(), "name" : "jouer VS IA", "posx" : 10, "posy" : 100 }, {"element" : pygame.image.load("pvp.png").convert_alpha(), "name" : "jouer VS joueur", "posx" : 900, "posy" : 100 }, {"element" : pygame.image.load("bouton_quitter.png").convert_alpha(), "name" : "quitter", "posx" : 30, "posy" : 250 } ] endOfRound = {"button" : pygame.image.load("endOfRound.png").convert_alpha(), "name" : "yop", "posx" : 1000, "posy" : 350} for i, menu in enumerate(menus) : menu_size = menu["element"].get_rect() menu["posx"] = (screen_size[0] / 2) - (menu_size[2] / 2) menu["posy"] = eposy fenetre.blit(menu["element"], (menu["posx"], menu["posy"])) eposy += (menu_size[3] / 2) + menu_size[3] pygame.display.flip() mode_game = 0 continuer = 1 continuer_menu = 1 continuer_game = 1 continuer_gameMenu = 0 saisi_carte = 0 saisi_attack = 0 carte_selection_id = 0 carte_selection = () carte_attack_id = 0 carte_attack = () deplacement = 5 positionOk = 0 full = 0 pygame.key.set_repeat(400, 30) winner = None turn = ["one", "two"] while continuer : # boucle général if continuer_menu == 1: fenetre.blit(menu_fond, (0,0)) for menu in menus : fenetre.blit(menu["element"], (menu["posx"], menu["posy"])) pygame.display.flip() while continuer_menu: # boucle du menu for event in pygame.event.get(): #On parcours la liste de tous les événements reçus if event.type == QUIT: #Si un de ces événements est de type QUIT continuer_game = 0 continuer_menu = 0 winner = False continuer = 0 if event.type == KEYDOWN : # lorsqu'on appui sur un touche du clavier if event.key == K_ESCAPE: # esc on quitte le jeu continuer_game = 0 continuer_menu = 0 winner = False continuer = 0 if event.type == MOUSEBUTTONUP: eposx = event.pos[0] eposy = event.pos[1] if event.button == 1 : for menu in menus: menu_size = menu["element"].get_rect() posx, posy = menu["posx"], menu["posy"] if( ( eposx >= posx and eposx <= (menu_size[2] + posx) ) and ( eposy >= posy and eposy <= (menu_size[3] + posy) ) ): if menu["name"] == "jouer VS IA" : mode_game = 1 continuer_menu = 0 continuer_game = 1 continuer = 1 #initialiser les cartes du joueur 1 CardSet.loadCardSet("cardSet") playerOne = Player("koala", CardSet.listCardG, False) #initilaiser les cartes du joueur 2 CardSet.loadCardSet("cardSet2") playerTwo = Player("panda", CardSet.listCardG, True) winner = None t = random.randint(0, len(turn) - 1) turnIdx = t i = 0 #fenetre = pygame.display.set_mode(screen_size, FULLSCREEN) if menu["name"] == "jouer VS joueur" : mode_game = 2 continuer_menu = 0 continuer_game = 1 continuer = 1 #initialiser les cartes du joueur 1 CardSet.loadCardSet("cardSet") playerOne = Player("koala", CardSet.listCardG, False) #initilaiser les cartes du joueur 2 CardSet.loadCardSet("cardSet2") playerTwo = Player("panda", CardSet.listCardG, True) winner = None t = random.randint(0, len(turn) - 1) turnIdx = t i = 0 #fenetre = pygame.display.set_mode(screen_size, FULLSCREEN) if menu["name"] == "quitter" : mode_game = 0 continuer_menu = 0 continuer_game = 0 winner = False continuer = 0 while winner == None : continuer_game = 1 if full : fenetre = pygame.display.set_mode(screen_size, FULLSCREEN) else : fenetre = pygame.display.set_mode(screen_size) lifeBack,lifeBackEnemy,life,lifeEnemy, playerOne, playerTwo = carteHandAndField(playerOne, playerTwo) fenetre.blit(lifeBackEnemy, (0, 0)) while continuer_game: # boucle du jeu fenetre.blit(fond, (0, 0)) cartePosition(fenetre, playerOne, playerTwo, endOfRound) # health player and enemy posLifeBack = screen_size[0] - 120, (screen_size[1] - 100) posLifeBackEnemy = screen_size[0] - 120, 5 fenetre.blit(lifeBack, posLifeBack) fenetre.blit(lifeBackEnemy, posLifeBackEnemy) lifeBackSize = lifeBack.get_rect() lifeBackEnemySize = lifeBackEnemy.get_rect() fenetre.blit(life, (posLifeBack[0] + lifeBackSize[2] / 2 - 15, posLifeBack[1] + lifeBackSize[3] / 2)) fenetre.blit(lifeEnemy, (posLifeBackEnemy[0] + lifeBackEnemySize[2] / 2 - 15, posLifeBackEnemy[1] + lifeBackEnemySize[3] / 2)) # mana player and enemy fenetre.blit(pygame.image.load("mana.png").convert_alpha(), (screen_size[0] - 50, 40)) fenetre.blit(pygame.image.load("mana.png").convert_alpha(), (screen_size[0] - 50,screen_size[1] - 60)) if(playerTwo.mana > 0): fenetre.blit(pygame.image.load(str(playerTwo.mana) + ".png").convert_alpha(), (screen_size[0] - 35,55)) else: fenetre.blit(pygame.image.load("0.png").convert_alpha(), (screen_size[0] - 35,55)) if(playerOne.mana > 0): fenetre.blit(pygame.image.load(str(playerOne.mana) + ".png").convert_alpha(), (screen_size[0] - 35,screen_size[1] - 45)) else : fenetre.blit(pygame.image.load("0.png").convert_alpha(), (screen_size[0] - 35,screen_size[1] - 45)) pygame.display.flip() for event in pygame.event.get(): #On parcours la liste de tous les événements reçus if event.type == QUIT: #Si un de ces événements est de type QUIT continuer_menu = 0 continuer_game = 0 winner = False continuer = 0 #On arrête la boucle if event.type == KEYDOWN : # lorsqu'on appui sur un touche du clavier if event.key == K_ESCAPE: # esc on retourne au menu du jeu continuer_game = 1 continuer_menu = 0 continuer_gameMenu = 1 continuer = 1 if event.type == MOUSEBUTTONUP: eposx = event.pos[0] eposy = event.pos[1] if event.button == 1: print("saisi_carte : " + str(saisi_carte)) print("saisi_attack : " + str(saisi_attack)) if saisi_carte == 0 : if event.button == 1: for i, carte in enumerate(playerOne.hand): carte_size = carte.carte["carte"].get_rect() posx, posy = carte.carte["posx"], carte.carte["posy"] if ( ( eposx >= posx and eposx <= (carte_size[2] + posx) ) and ( eposy >= posy and eposy <= (carte_size[3] + posy) ) ): pygame.mouse.set_cursor(*pygame.cursors.arrow) saisi_attack = 0 saisi_carte = 1 carte_selection = carte carte_selection_id = i roundButton_size = endOfRound["button"].get_rect() if ( ( eposx >= endOfRound["posx"] and eposx <= (roundButton_size[2] + endOfRound["posx"]) ) and ( eposy >= endOfRound["posy"] and eposy <= (roundButton_size[3] + endOfRound["posy"]) ) ): for c in playerOne.field : c.carte["statu"] = 0 pygame.mouse.set_cursor(*pygame.cursors.arrow) saisi_attack = 0 playerTwo.pickUp(playerTwo.deck) if mode_game == 1 : winner = Field.playTurn2(playerTwo, playerOne) playerOne.pickUp(playerOne.deck) saisi_attack = 0 continuer_game = 0 elif mode_game == 2 : fenetre.blit(fond, (0, 0)) fenetre.blit(pygame.image.load("wait.png").convert_alpha(), (0, 0)) pygame.display.flip() time.sleep(5) playerOne, playerTwo = playerTwo, playerOne carteHandAndField(playerOne, playerTwo) saisi_attack = 0 continuer_game = 0 else : saisi_carte = 2 carte_selection_id = 0 if ( (eposx >= carte_hand[0] and eposx < carte_hand[2] ) and (eposy < carte_hand[1]) ): if(carte.carte["cost"] <= playerOne.mana) : playerOne.deploy(playerTwo, carte) Power.attackServantMultiple(playerTwo, carte) Power.addHpMaxMultiple(playerOne, playerTwo, carte) Power.pickupCard(playerOne, carte) Power.dropCard(carte, playerTwo) if len(playerTwo.field) > 0 : for c in playerTwo.field : carte_size = c.carte["carte"].get_rect() posx, posy = c.carte["posx"], c.carte["posy"] if ( (event.button == 1) and ( eposx >= posx and eposx <= (carte_size[2] + posx) ) and ( eposy >= posy and eposy <= (carte_size[3] + posy) ) ): Power.attackServant(playerOne, playerTwo, carte) Power.addHpMax(playerOne, playerTwo, carte) print("cout mana : " + str(carte.carte["cost"])) continuer_game = 0 if saisi_attack == 0 and saisi_carte == 0 : print("saisi == 0") if event.button == 1 : for i, carte in enumerate(playerOne.field): carte_size = carte.carte["carte"].get_rect() posx, posy = carte.carte["posx"], carte.carte["posy"] if ( ( eposx >= posx and eposx <= (carte_size[2] + posx) ) and ( eposy >= posy and eposy <= (carte_size[3] + posy) ) ): if( carte.carte["statu"] == 0 ) : saisi_attack = 1 pygame.mouse.set_cursor(*pygame.cursors.diamond) carte_attack = carte carte_attack_id = i if saisi_attack != 0 : if event.button == 1 : lifeBackEnemySize = lifeBackEnemy.get_rect() xPos = posLifeBackEnemy[0] + lifeBackEnemySize[2] / 2 - 15 yPos = posLifeBackEnemy[1] + lifeBackEnemySize[3] / 2 if ( ( eposx >= xPos and eposx <= (lifeBackEnemySize[2] + xPos) ) and ( eposy >= yPos and eposy <= (lifeBackEnemySize[3] + yPos) ) ): #attack les points de vie adverse pygame.mouse.set_cursor(*pygame.cursors.arrow) carte_attack.newFight(playerOne, playerTwo) carte_attack.carte["statu"] = 1 saisi_attack = 0 continuer_game = 0 for i, carte in enumerate(playerTwo.field): carte_size = carte.carte["carte"].get_rect() posx, posy = carte.carte["posx"], carte.carte["posy"] if ( ( eposx >= posx and eposx <= (carte_size[2] + posx) ) and ( eposy >= posy and eposy <= (carte_size[3] + posy) ) ): # attack carte adverse print("attack") carte_attack.newFight(playerOne, playerTwo, carte) pygame.mouse.set_cursor(*pygame.cursors.arrow) carte_attack.carte["statu"] = 1 saisi_attack = 0 continuer_game = 0 break if ( ( eposx < posx and eposx > (carte_size[2] + posx) ) and ( eposy < posy and eposy > (carte_size[3] + posy) ) or ( eposx > xPos and eposx < (lifeBackEnemySize[2] + xPos) ) and ( eposy < yPos and eposy > (lifeBackEnemySize[3] + yPos) )): pygame.mouse.set_cursor(*pygame.cursors.arrow) saisi_attack = 0 if saisi_carte == 1 : if event.type == MOUSEMOTION : eposx = event.pos[0] eposy = event.pos[1] carte = playerOne.hand[carte_selection_id] carte.carte["posx"], carte.carte["posy"] = (event.pos[0] - (carte_size[2] / 2) ), (event.pos[1] - (carte_size[3] / 2) ) pygame.display.flip() if saisi_carte == 2: saisi_carte = 0 while continuer_gameMenu : full, continuer_gameMenu, winner, continuer_game = menuJeux(fenetre) if(playerOne.health <= 0): winner = playerTwo.name continuer_game = 0 continuer_menu = 1 if(playerTwo.health <= 0): winner = playerOne.name continuer_game = 0 continuer_menu = 1 if(winner != None): print("Winner : " + str(winner))