Commit 3b24b5d0 authored by Vincent BRULE's avatar Vincent BRULE
Browse files

up

parent 77f70508
# -*- encoding: utf-8 -*-
from pygame import *
import time
import os
from carteStruct import *
from constante import Constante
from base import *
from joueur import *
from tour import *
from unite import *
#ctrl+Q utile pour commenter
def son_fond(verif):
mixer.init()
son_fond = mixer.Sound("projet_jeux_video.wav")
if Constante.son == 0:
if verif == 1:
son_fond.play(loops = -1)
son_fond.set_volume(1.0)
Constante.son = 1
else :
if verif == 2:
mixer.pause()
if 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 ajouterHerbeObstacle(liste, taille, coord):
for i in range(0, taille):
for j in range(0, taille):
liste.append((coord[0] + i, coord[1] + j))
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 :
u = (numColonne, numLigne)
if trouve_lettre == "X":
carte.liste_herbe.append(u)
if trouve_lettre == "O":
carte.liste_route.append(u)
if trouve_lettre == "A":
ajouterHerbeObstacle(carte.liste_herbe_obstacle, 2, u)
carte.liste_arbre.append(u)
if trouve_lettre == "C":
carte.liste_contour.append(u)
if trouve_lettre == "B":
ajouterHerbeObstacle(carte.liste_herbe_obstacle, 3, u)
carte.liste_base.append(u)
if trouve_lettre == "D":
ajouterHerbeObstacle(carte.liste_herbe_obstacle, 1, u)
carte.liste_contour_sortie_ennemie.append(u)
if trouve_lettre == "E":
ajouterHerbeObstacle(carte.liste_herbe_obstacle, 1, u)
carte.liste_contour_sortie_ennemie_2.append(u)
if trouve_lettre == "S":
ajouterHerbeObstacle(carte.liste_herbe_obstacle, 1, u)
carte.liste_sortie_ennemie.append(u)
numColonne = numColonne + 1
numLigne = numLigne + 1
dico.close()
def titre_nom(n_joueur, ecran):
titre = "Entrer le nom du joueur" + " " + str(n_joueur) + " (Moins de 7 lettres svp) : "
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/6, 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():
if len(nom) < 7 :
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.png")
accueil = transform.scale(accueil,(Constante.largeur, Constante.hauteur))
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/12 <= x <= (15*Constante.largeur)/36 and Constante.hauteur/1.5 <= y <= (4*Constante.hauteur)/3:
return
elif 17*Constante.largeur/36 <= x <= 35*Constante.largeur/36 and Constante.hauteur/1.5 <= y <= (4*Constante.hauteur)/3:
ecran_regle(ecran)
ecran.blit(accueil, (0, 0))
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_tour (ecran, base_1, base_2, image_herbe, verif_tour):
if verif_tour == 1 :
for i in base_1.liste_tour:
......@@ -10,4 +190,293 @@ def maj_affichage_tour (ecran, base_1, base_2, image_herbe, verif_tour):
else:
for i in base_1.liste_tour:
i.attaquer(base_2.liste_unite)
i.actualiserProj(ecran)
\ No newline at end of file
i.actualiserProj(ecran)
def maj_affichage_unite (ecran, image, base_1, base_2, liste_route, verif_tour):
if verif_tour == 3:
for u in liste_route:
for i in base_1.liste_unite:
if u[0] >= (i.position[0]/Constante.taille_rel)-1 and u[0] <= (i.position[0]/Constante.taille_rel)+1 and u[1] >= (i.position[1]/Constante.taille_rel)-1 and u[1] <= (i.position[1]/Constante.taille_rel)+1:
ecran.blit(image, (u[0]*Constante.taille_rel, u[1]*Constante.taille_rel))
for i in base_1.liste_unite:
i.avancer(carte, base_1, carte)
i.afficher(ecran)# Met l'image dans le fond
for u in liste_route:
for i in base_2.liste_unite:
if u[0] >= (i.position[0]/Constante.taille_rel)-1 and u[0] <= (i.position[0]/Constante.taille_rel)+1 and u[1] >= (i.position[1]/Constante.taille_rel)-1 and u[1] <= (i.position[1]/Constante.taille_rel)+1:
ecran.blit(image, (u[0]*Constante.taille_rel, u[1]*Constante.taille_rel))
for i in base_2.liste_unite :
i.avancer(carte, base_2, ecran)
i.afficher(ecran) # Met l'image dans le fond
def maj_affichage_argent(ecran, base_joueur, joueur):
argent_joueur = Constante.type_ecriture.render(str(base_joueur.argent)+" euros", True, Constante.ORANGE, (0, 0, 0))
if joueur.recuperer_numero() == 1:
draw.rect(ecran, (0, 0, 0), (5*Constante.taille_rel, 17*Constante.taille_rel, 4*Constante.taille_rel, Constante.taille_rel))
ecran.blit(argent_joueur, (5*Constante.taille_rel, Constante.taille_rel*17))
else :
draw.rect(ecran, (0, 0, 0), (20*Constante.taille_rel, 17*Constante.taille_rel, 4*Constante.taille_rel, Constante.taille_rel))
ecran.blit(argent_joueur, (20*Constante.taille_rel ,17*Constante.taille_rel))
def maj_affichage_liste (ecran, liste, image):
for i in liste :
ecran.blit(image, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel))
def verif_pose_tour (ecran, carte, (i, j)):
if (i, j) in carte.liste_herbe and (i, j) not in carte.liste_herbe_obstacle and (i, j) not in carte.liste_route:
return True
def affichage_chronometre (ecran, temps_passe, temps_depart):
affichage_chrono = Constante.temps_tour - (int(temps_passe) - int(temps_depart))
affichage_chrono_texte = Constante.type_ecriture_chrono.render(str(affichage_chrono), True, Constante.ORANGE, (0, 0, 0))
draw.rect(ecran, (0, 0, 0), (Constante.largeur/2, 17*Constante.taille_rel, Constante.taille_rel,Constante.taille_rel))
ecran.blit(affichage_chrono_texte, (Constante.largeur/2, 17*Constante.taille_rel))
display.flip()
def couvrir_ecran_ennemie (ecran, verif_tour):
if Constante.ratio == 1.6:
if verif_tour == 1:
draw.rect(ecran, (0, 0, 0), (Constante.largeur/2, 0, Constante.largeur/2, 17*Constante.hauteur/20))
elif verif_tour == 2:
draw.rect(ecran, (0, 0, 0), (0, 0, 15*Constante.largeur/32, 17*Constante.hauteur/20))
else :
if verif_tour == 1:
draw.rect(ecran, (0, 0, 0), (Constante.largeur/2, 0, Constante.largeur/2, 17*Constante.hauteur/18))
elif verif_tour == 2:
draw.rect(ecran, (0, 0, 0), (0, 0, 15*Constante.largeur/32, 17*Constante.hauteur/18))
def maj_affichage_ecran_principal(ecran, herbe_finale, route_finale, arbre_finale, contour_finale, contour_milieu_soldat_finale, contour_milieu_soldat_finale_2, base_finale, base2_finale, sortie_ennemie_finale, base_1, base_2, j1, j2, verif_tour, verif_base ):
for i in carte.liste_herbe : # Parcours la liste comportant la position de l'herbe
ecran.blit(herbe_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(herbe_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond
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(herbe_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond
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(herbe_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond
ecran.blit(contour_milieu_soldat_finale_2, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel))
for i in carte.liste_base :
ecran.blit(herbe_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond
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(herbe_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel)) # Met l'image dans le fond
ecran.blit(sortie_ennemie_finale, (i[0]*Constante.taille_rel, i[1]*Constante.taille_rel))
for i in base_1.liste_tour :
i.afficher(ecran)
for i in base_2.liste_tour :
i.afficher(ecran)
couvrir_ecran_ennemie (ecran, verif_tour)
maj_affichage_argent(ecran, base_1, j1)
maj_affichage_argent(ecran, base_2, j2)
def ecran_principal(ecran, j1, j2, verif_tour, base_1, base_2):
son_fond(1) #demarre le son
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")
herbe_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()
choix_case_image = image.load("choix_case.png")
tour_1_image = image.load("tour_1_avec_fond.png")
tour_2_image = image.load("tour_2_avec_fond.png")
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))
herbe_finale = transform.scale(herbe_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))
choix_case_finale = transform.scale(choix_case_image,(Constante.taille_rel, Constante.taille_rel))
tour_1_finale = transform.scale(tour_1_image, (Constante.taille_rel, Constante.taille_rel))
tour_2_finale = transform.scale(tour_2_image, (Constante.taille_rel, Constante.taille_rel))
if Constante.verif_carte == 0:
global carte
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)
texte_joueur = Constante.type_ecriture.render(j1.nom, True, Constante.ORANGE)
texte_joueur2 = Constante.type_ecriture.render(j2.nom, True, Constante.ORANGE)
ecran.blit(texte_joueur, (0, Constante.taille_rel*17))
ecran.blit(texte_joueur2, (28*Constante.taille_rel ,Constante.taille_rel*17))
maj_affichage_ecran_principal(ecran, herbe_finale, route_finale, arbre_finale, contour_finale, contour_milieu_soldat_finale, contour_milieu_soldat_finale_2, base_finale, base2_finale, sortie_ennemie_finale, base_1, base_2, j1, j2, verif_tour, verif_base )
Constante.verif_carte = 1
temps_passe = time.time()
temps_depart = time.time()
if verif_tour == 3:
unite = Unite_feu((Constante.taille_rel*14, Constante.taille_rel*8), 2)
#unite_2 = Unite_glace((Constante.taille_rel*16, Constante.taille_rel*8), 1)
#base_1.liste_unite.append(unite_2)
base_2.liste_unite.append(unite)
while temps_passe - temps_depart < Constante.temps_tour:
maj_affichage_unite (ecran, route_finale, base_1, base_2, carte.liste_route, verif_tour)
for evenement_joueur in event.get():
if evenement_joueur.type == KEYDOWN:
if evenement_joueur.key == K_ESCAPE:
quit()
elif evenement_joueur.key == K_SPACE:
return
elif evenement_joueur.key == K_s:
if Constante.verif_son % 2 == 0:
Constante.verif_son = Constante.verif_son + 1
son_fond(2)
elif Constante.verif_son % 2 == 1:
Constante.verif_son = Constante.verif_son + 1
son_fond(3)
if evenement_joueur.type == MOUSEBUTTONDOWN :
couvrir_ecran_ennemie(ecran, verif_tour)
(x, y) = evenement_joueur.pos
(u, v) = (x/Constante.taille_rel, y/Constante.taille_rel)
(g, b) = (Constante.position[0]*Constante.taille_rel, Constante.position[1]*Constante.taille_rel)
if (u, v) in carte.liste_tour_1:
if verif_tour == 1:
if Constante.position[0] < 16 :
if verif_pose_tour(ecran, carte, (Constante.position[0], Constante.position[1])) == True:
ecran.blit(herbe_finale, (g ,b))
else :
if Constante.position[0] >= 16 :
if verif_pose_tour(ecran, carte, (Constante.position[0], Constante.position[1])) == True:
ecran.blit(herbe_finale, (g ,b))
Constante.verif_cadre_rouge = 0
else:
if Constante.verif_cadre_rouge == 1:
if Constante.position in carte.liste_tour_1:
ecran.blit(tour_1_finale, (g ,b))
else :
ecran.blit(herbe_finale, (g ,b))
Constante.verif_cadre_rouge = 0
if verif_tour == 1:
if (u, v) == (18, 3):
if verif_pose_tour(ecran, carte, Constante.position) == True:
couvrir_ecran_ennemie (ecran, verif_tour)
if base_1.depenser_argent(10) != "NON":
carte.liste_tour_1.append(Constante.position)
tour = Tour_feu(Constante.position, verif_tour)
base_1.liste_tour.append(tour)
carte.liste_herbe_obstacle.append(Constante.position)
maj_affichage_tour (ecran, base_1, base_2, herbe_finale, verif_tour)
maj_affichage_argent(ecran, base_1, j1)
elif (u, v) == (22, 3):
if verif_pose_tour(ecran, carte, Constante.position) == True:
couvrir_ecran_ennemie (ecran, verif_tour)
if base_1.depenser_argent(20) != "NON":
carte.liste_tour_1.append(Constante.position)
tour = Tour_glace(Constante.position, verif_tour)
base_1.liste_tour.append(tour)
carte.liste_herbe_obstacle.append(Constante.position)
maj_affichage_tour (ecran, base_1, base_2, herbe_finale, verif_tour)
maj_affichage_argent(ecran, base_1, j1)
elif verif_tour == 2:
if (u, v) == (8, 3):
if verif_pose_tour(ecran, carte, Constante.position) == True:
couvrir_ecran_ennemie (ecran, verif_tour)
if base_2.depenser_argent(20) != "NON":
carte.liste_tour_1.append(Constante.position)
tour = Tour_glace(Constante.position, verif_tour)
base_2.liste_tour.append(tour)
carte.liste_herbe_obstacle.append(Constante.position)
maj_affichage_tour (ecran, base_1, base_2, herbe_finale, verif_tour)
maj_affichage_argent(ecran, base_2, j2)
elif (u, v) == (12, 3):
if verif_pose_tour(ecran, carte, Constante.position) == True:
couvrir_ecran_ennemie (ecran, verif_tour)
if base_2.depenser_argent(10) != "NON":
carte.liste_tour_1.append(Constante.position)
tour = Tour_feu(Constante.position, verif_tour)
base_2.liste_tour.append(tour)
carte.liste_herbe_obstacle.append(Constante.position)
maj_affichage_tour (ecran, base_1, base_2., herbe_finale, verif_tour)
maj_affichage_argent(ecran, base_2, j2)
for (i, j) in carte.liste_herbe:
if u == i and v == j:
if verif_tour == 1 :
if i < 16:
if verif_pose_tour(ecran, carte, (i, j)) == True:
ecran.blit(tour_1_finale, (18*Constante.taille_rel, 3*Constante.taille_rel))
ecran.blit(tour_2_finale, (22*Constante.taille_rel, 3*Constante.taille_rel))
ecran.blit(choix_case_finale, (i*Constante.taille_rel, j*Constante.taille_rel))
Constante.verif_cadre_rouge = 1
if verif_tour == 2 :
if i >= 16:
if verif_pose_tour(ecran, carte, (i, j)) == True:
ecran.blit(tour_1_finale, (12*Constante.taille_rel, 3*Constante.taille_rel))
ecran.blit(tour_2_finale, (8*Constante.taille_rel, 3*Constante.taille_rel))
ecran.blit(choix_case_finale, (i*Constante.taille_rel, j*Constante.taille_rel))
Constante.verif_cadre_rouge = 1
Constante.position = (u , v)
affichage_chronometre (ecran, temps_passe, temps_depart)
display.flip()
temps_passe = time.time()
return
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment