# -*- encoding: utf-8 -*- from pygame import * import time import os from carteStruct import * from constante import Constante #ctrl+Q utile pour commenter def son_fond(verif): mixer.init() son_fond = mixer.Sound("projet_jeux_video.wav") if verif == 1: son_fond.play(loops = -1) son_fond.set_volume(1.0) elif verif == 2: mixer.pause() elif verif == 3: mixer.unpause() def fond_depart(ecran): image_depart = image.load("ecran_depart.jpg") image_depart = transform.scale(image_depart,(Constante.largeur, Constante.hauteur)) ecran.blit(image_depart, (0 ,0)) def saut_ligne(texte, ecran): bulle = Rect(Constante.largeur/5, Constante.hauteur/4, 500,500) x,y = bulle.topleft for ligne in texte.splitlines(): x,y = ecran.blit(Constante.type_ecriture_titre.render(ligne , 1, Constante.ORANGE),(x,y)).bottomleft def ecran_depart(ecran): fond_depart(ecran) titre_jeu = """ Bienvenue dans \n\n POLYDENFENSE \n\n\nAppuyez sur "Entrer" pour commencer le Jeu""" saut_ligne(titre_jeu, ecran) display.flip() while True: for evenement_joueur in event.get(): if evenement_joueur.type == KEYDOWN: if evenement_joueur.key == K_RETURN: continuer = 0 return def lecture_carte (fichier, carte): # Permet de lire le .txt contenant la carte dico = open(fichier, "r") numLigne = 0 for ligne in dico : numColonne = 0 for trouve_lettre in ligne : if trouve_lettre == "X": carte.liste_herbe.append((numColonne, numLigne)) if trouve_lettre == "O": carte.liste_route.append((numColonne, numLigne)) if trouve_lettre == "A": carte.liste_herbe.append((numColonne, numLigne)) carte.liste_arbre.append((numColonne, numLigne)) if trouve_lettre == "C": carte.liste_contour.append((numColonne, numLigne)) if trouve_lettre == "B": carte.liste_herbe.append((numColonne, numLigne)) carte.liste_base.append((numColonne, numLigne)) if trouve_lettre == "D": carte.liste_contour_sortie_ennemie.append((numColonne, numLigne)) carte.liste_herbe.append((numColonne, numLigne)) if trouve_lettre == "E": carte.liste_contour_sortie_ennemie_2.append((numColonne, numLigne)) carte.liste_herbe.append((numColonne, numLigne)) if trouve_lettre == "S": carte.liste_herbe.append((numColonne, numLigne)) carte.liste_sortie_ennemie.append((numColonne, numLigne)) numColonne = numColonne + 1 numLigne = numLigne + 1 dico.close() def titre_nom(n_joueur, ecran): titre = "Entrer le nom du joueur" + " " + str(n_joueur) + " :" texte_titre = Constante.type_ecriture.render(titre, 1, Constante.ORANGE) #texte_titre = Constante.type_ecriture.render(titre, 1, Constante.ORANGE, (204, 204, 255)) permet de mettre un fond de couleur ecran.blit(texte_titre, (Constante.largeur/4, Constante.hauteur/4)) display.flip() def nom_joueur (n_joueur, ecran, joueur): nom = '' fond_depart(ecran) titre_nom(n_joueur, ecran) while True: for evenement_joueur in event.get(): if evenement_joueur.type == KEYDOWN: if evenement_joueur.unicode.isalpha(): nom = nom + evenement_joueur.unicode texte = Constante.type_ecriture.render(nom, True, Constante.ORANGE) ecran.blit(texte, (float(Constante.largeur)/2.5, float(Constante.hauteur)/2.5)) if evenement_joueur.key == K_RETURN: joueur.modifier_nom(nom) joueur.modifier_numero(n_joueur) return if evenement_joueur.key == K_BACKSPACE: nom = nom[:-1] texte = Constante.type_ecriture.render(nom, True, Constante.ORANGE) fond_depart(ecran) titre_nom(n_joueur, ecran) ecran.blit(texte, (float(Constante.largeur)/2.5, float(Constante.hauteur)/2.5)) display.flip() def ecran_accueil(ecran): accueil = image.load("accueil.jpg") bouton_jouer = image.load("bouton_jouer.png") bouton_regle = image.load("bouton_regle.png") accueil = transform.scale(accueil,(Constante.largeur, Constante.hauteur)) bouton_jouer = transform.scale(bouton_jouer,(Constante.hauteur/5, Constante.hauteur/5)) bouton_regle = transform.scale(bouton_regle,(Constante.hauteur/3, Constante.hauteur/3)) while True: for evenement_joueur in event.get(): if evenement_joueur.type == KEYDOWN: if evenement_joueur.key == K_SPACE: return if evenement_joueur.type == MOUSEBUTTONDOWN : x, y = evenement_joueur.pos if Constante.hauteur/5 <= x <= (2*Constante.hauteur)/5 and Constante.hauteur/5 <= y <= (2*Constante.hauteur)/5: return elif 6*Constante.hauteur/5 <= x <= (23*Constante.hauteur)/15 and 3*Constante.hauteur/5 <= y <= (14*Constante.hauteur)/15: ecran_regle(ecran) ecran.blit(accueil, (0, 0)) ecran.blit(bouton_jouer, (Constante.hauteur/5, Constante.hauteur/5)) ecran.blit(bouton_regle, (6*Constante.hauteur/5, 3*Constante.hauteur/5)) display.flip() def ecran_regle (ecran): fond_regle = image.load("ecran_regle.jpg") fond_regle = transform.scale(fond_regle,(Constante.largeur, Constante.hauteur)) ecran.blit(fond_regle, (0, 0)) display.flip() while True: for evenement_joueur in event.get(): if evenement_joueur.type == KEYDOWN: if evenement_joueur.key == K_SPACE: return if evenement_joueur.type == MOUSEBUTTONDOWN : x, y = evenement_joueur.pos if Constante.largeur/2.3 <= x <= Constante.largeur/1.8 and Constante.hauteur/2.6 <= y <= Constante.hauteur/1.6: return def maj_affichage_liste (ecran, liste, image): for i in liste: ecran.blit(image, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) display.flip() def ecran_principal(ecran, j1, j2): son_fond(1) verif_son = 0 verif_base = 0 draw.rect(ecran, (0, 0, 0), (0, 0, Constante.largeur, Constante.hauteur)) contour_milieu_soldat_image = image.load("contour_milieu_soldat.png") contour_milieu_soldat_image_2 = image.load("contour_milieu_soldat_2.png") terre_image = image.load("herbe.png") # Charge l'image de la pelouse route_image = image.load("route.png")# Charge l'image de la route arbre_image = image.load("arbre.png").convert_alpha() # Charge l'image des arbres contour_image = image.load("contour.png") sortie_ennemie_image = image.load("milieu_soldat.png").convert_alpha() base_image = image.load("base.png").convert_alpha() base2_image = image.load("base2.png").convert_alpha() contour_milieu_soldat_finale = transform.scale(contour_milieu_soldat_image,(Constante.taille_rel, Constante.taille_rel)) contour_milieu_soldat_finale_2 = transform.scale(contour_milieu_soldat_image_2,(Constante.taille_rel, Constante.taille_rel)) terre_finale = transform.scale(terre_image,(Constante.taille_rel, Constante.taille_rel)) route_finale = transform.scale(route_image,(Constante.taille_rel, Constante.taille_rel)) arbre_finale = transform.scale(arbre_image,(2*Constante.taille_rel, 2*Constante.taille_rel)) contour_finale = transform.scale(contour_image,(Constante.taille_rel, Constante.taille_rel)) base_finale = transform.scale(base_image,(3*Constante.taille_rel, 3*Constante.taille_rel)) base2_finale = transform.scale(base2_image,(3*Constante.taille_rel, 3*Constante.taille_rel)) sortie_ennemie_finale = transform.scale(sortie_ennemie_image,(Constante.taille_rel, Constante.taille_rel)) carte = Carte() if Constante.ratio == 1.6: lecture_carte("dico_carte_ratio_16_10.txt", carte) # Lis le dictionnaire contenant la carte en fonction du ratio else : lecture_carte("dico_carte_ratio_16_9.txt", carte) for i in carte.liste_herbe : # Parcours la liste comportant la position de l'herbe ecran.blit(terre_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond for i in carte.liste_route : # Parcours la liste comportant la position de la route ecran.blit(route_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond for i in carte.liste_arbre : # Parcours la liste comportant la position des arbres ecran.blit(arbre_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond for i in carte.liste_contour : ecran.blit(contour_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) for i in carte.liste_contour_sortie_ennemie: ecran.blit(contour_milieu_soldat_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) for i in carte.liste_contour_sortie_ennemie_2: ecran.blit(contour_milieu_soldat_finale_2, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) for i in carte.liste_base : if verif_base == 0 : ecran.blit(base_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) verif_base = verif_base + 1 else : ecran.blit(base2_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) for i in carte.liste_sortie_ennemie : ecran.blit(sortie_ennemie_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) texte_joueur = Constante.type_ecriture.render(j1.nom, True, Constante.ORANGE, (255, 255, 255)) texte_joueur2 = Constante.type_ecriture.render(j2.nom, True, Constante.ORANGE, (255, 255, 255)) ecran.blit(texte_joueur, (Constante.taille_rel, ((Constante.largeur)/Constante.largeur_ref))) ecran.blit(texte_joueur2, (7*Constante.largeur / 8, ((Constante.largeur)/Constante.largeur_ref))) display.flip() # Fais apparatre les diffrents lments chargs while True: for evenement_joueur in event.get(): if evenement_joueur.type == KEYDOWN: if evenement_joueur.key == K_ESCAPE: return if evenement_joueur.key == K_s: if verif_son % 2 == 0: verif_son = verif_son + 1 son_fond(2) elif verif_son % 2 == 1: verif_son = verif_son + 1 son_fond(3) if evenement_joueur.type == MOUSEBUTTONDOWN : (x, y) = evenement_joueur.pos (u, v) = (x/Constante.taille_rel, y/Constante.taille_rel) for (i, j) in carte.liste_route: if u == i and v == j: # ecran.blit(sortie_ennemie_finale, (i*Constante.taille_rel, j*Constante.taille_rel)) # display.flip() carte.liste_sortie_ennemie.append((i, j)) maj_affichage_liste (ecran, carte.liste_sortie_ennemie, sortie_ennemie_finale)