Beispiel #1
0
		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:
Beispiel #2
0
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))