Commit 7a9ae60c authored by Vincent BRULE's avatar Vincent BRULE
Browse files

commentaires

parent fc407fdc
# -*- coding: utf-8 -*-
# http://pad.univ-nantes.fr/editor/p/g.KMzBqiBBATY1dYss$Ageofdefense
import math
from pygame import *
import time
import os
from carteStruct import *
from constante import Constante
from base import *
......@@ -14,53 +11,54 @@ from joueur import *
from tour import *
# Créer une tour avec en paramètre sa position et son propriétaire
class Tour:
def __init__(self, pos, prop):
self.position = pos # Coordonées de la tour
self.portee = 0 # Portee de la tour
self.position = pos # Coordonées de la tour
self.portee = 0 # Portée de la tour
self.degat = 0 # Dégat de chaque projectile jeté de la tour
self.vitesse = 0 # Nombre de projectile lancé par seconde
self.niveau = 0 # Niveau de la tour
self.proprietaire = prop # Propriétaire de la tour
self.liste_proj = []
self.unite_vise = []
self.temps_passe = 0
self.vitesse = 0 # Vitesse d'attaque de la tour
self.niveau = 0 # Niveau de la tour
self.proprietaire = prop # Propriétaire de la tour
self.temps_passe = 0 # Variable pour le chronomètre
self.temps = 0
self.image_route = image.load("route.png")
self.image_route_finale = transform.scale(self.image_route, (Constante.taille_rel, Constante.taille_rel))
# Fonction Chronomètre
def chrono(self):
return self.temps_passe - self.temps
### Attaque
# Fonction attaquer
def attaquer(self, base, base_e, ecran):
if self.en_cours_de_tir == 1:
if self.en_cours_de_tir == 1: # La tour n'attaque pas
self.afficher(ecran)
self.en_cours_de_tir = 0
u = self.chercherUnite(base.liste_unite)
u = self.chercherUnite(base.liste_unite) # Cherche une unité dans la portée de la tour
if u != 0:
if self.chrono() > self.vitesse:
if self.chrono() > self.vitesse: # Tire en fonction de la vitesse d'attaque
self.temps = time.time()
u.retirerSante(self.degat)
if self.en_cours_de_tir == 0:
u.retirerSante(self.degat) # Retire de la santé à l'unité
if self.en_cours_de_tir == 0: # La tour est entrain d'attaquer
ecran.blit(self.tir_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
self.en_cours_de_tir = 2
if u.sante == 0:
if u.sante == 0: # Verifie si l'unité à encore de la vie
base.liste_unite.remove(u)
if u.type == 1:
base_e.argent = base_e.argent + 100
base_e.aggressivite = base_e.aggressivite + 50
base_e.argent = base_e.argent + 75 # Donne de l'argent au joueur ayant détruit l'unité
base.aggressivite = base.aggressivite + 25 # Augmente l'aggressivité du joueur ayant envoyant l'unité
elif u.type == 2:
base_e.argent = base_e.argent + 150
base_e.aggressivite = base_e.aggressivite + 100
elif u.type == 3:
base_e.argent = base_e.argent + 50
base_e.aggressivite = base_e.aggressivite + 20
base.aggressivite = base.aggressivite + 10
elif u.type == 3:
base_e.argent = base_e.argent + 100
base.aggressivite = base.aggressivite + 50
elif u.type == 4:
base_e.argent = base_e.argent + 20
base_e.aggressivite = base_e.aggressivite + 10
base_e.argent = base_e.argent + 25
base.aggressivite = base.aggressivite + 5
ecran.blit(self.image_route_finale, u.position)
else :
self.temps_passe = time.time()
......@@ -73,12 +71,11 @@ class Tour:
### Vérifie si une unité est a portée
# Vérifie si une unité est a portée
def verifierUnite(self, unite):
distance = math.fabs(self.position[0] - unite.position[0]/Constante.taille_rel) + math.fabs(self.position[1] - unite.position[1]/Constante.taille_rel)
distance = math.fabs(self.position[0] - unite.position[0]/Constante.taille_rel) + math.fabs(self.position[1] - unite.position[1]/Constante.taille_rel) # Verifie la distance entre la tour et l'unité à l'aide la norme de Manhatan
if (distance <= self.portee):
#assert(unite.proprietaire == self.proprietaire)
if (unite.proprietaire != self.proprietaire):
return True
return False
......@@ -89,7 +86,7 @@ class Tour:
return i
return 0
# Améliore la tour
def ameliorer(self):
if self.niveau < 3:
self.niveau = self.niveau + 1
......@@ -97,33 +94,37 @@ class Tour:
self.portee = self.portee*2
if self.niveau == 2:
self.image = self.image_2
self.image_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
else :
self.image = self.image_3
self.image_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
# Définitions de trois sous classes correspond aux différentes tour
class Tour_dragon(Tour):
def __init__(self, pos, prop):
self.image = image.load("tour_dragon_1.png")
self.image = image.load("tour_dragon_1.png") # Charge les différentes images de la tour
self.image_2 = image.load("tour_dragon_2.png")
self.image_3 = image.load("tour_dragon_3.png")
self.position = pos # Coordonées de la tour
self.portee = 3 # Portee de la tour
self.degat = 2 # Dégat de chaque projectile jeté de la tour
self.vitesse = 0.1 # Nombre de projectile lancé par seconde
self.niveau = 1 # Niveau de la tour
self.cout_amelioration = 250
self.proprietaire = prop # Propriétaire de la tour
self.image_3 = image.load("tour_dragon_3.png")
self.image_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
self.position = pos # Position de la tour
self.portee = 2 # Portée de la tour
self.degat = 10 # Dégat de chaque projectile jeté de la tour
self.vitesse = 0.1 # Nombre de projectile lancé par seconde
self.niveau = 1 # Niveau de la tour
self.cout_amelioration = 500 # Prix de l'amélioration de la tour
self.proprietaire = prop # Propriétaire de la tour
self.temps_passe = 0
self.temps = 0
self.en_cours_de_tir = 1
self.image_route = image.load("route.png")
self.image_route_finale = transform.scale(self.image_route, (Constante.taille_rel, Constante.taille_rel))
self.tir = image.load("tour_dragon_tir_1.png")
self.tir = image.load("tour_dragon_tir_1.png") # Image de la tour en cours de tir
self.tir_finale = transform.scale(self.tir, (Constante.taille_rel, Constante.taille_rel))
# Affiche l'image de la tour
def afficher(self, ecran):
tour_1_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
ecran.blit(tour_1_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
ecran.blit(self.image_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
class Tour_simple(Tour):
......@@ -131,13 +132,14 @@ class Tour_simple(Tour):
self.image = image.load("tour_1.png")
self.image_2 = image.load("tour_2.png")
self.image_3 = image.load("tour_3.png")
self.position = pos # Coordonées de la tour
self.portee = 2 # Portee de la tour
self.degat = 1 # Dégat de chaque projectile jeté de la tour
self.vitesse = 0.1 # Nombre de projectile lancé par seconde
self.niveau = 1 # Niveau de la tour
self.cout_amelioration = 100
self.proprietaire = prop # Propriétaire de la tour
self.image_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
self.position = pos
self.portee = 2
self.degat = 5
self.vitesse = 0.1
self.niveau = 1
self.cout_amelioration = 200
self.proprietaire = prop
self.temps_passe = 0
self.temps = 0
self.image_route = image.load("route.png")
......@@ -147,8 +149,7 @@ class Tour_simple(Tour):
self.tir_finale = transform.scale(self.tir, (Constante.taille_rel, Constante.taille_rel))
def afficher(self, ecran):
tour_2_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
ecran.blit(tour_2_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
ecran.blit(self.image_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
class Tour_mortier(Tour):
......@@ -157,13 +158,14 @@ class Tour_mortier(Tour):
self.image = image.load("mortier_1.png")
self.image_2 = image.load("mortier_2.png")
self.image_3 = image.load("mortier_3.png")
self.position = pos # Coordonées de la tour
self.portee = 5 # Portee de la tour
self.degat = 10 # Dégat de chaque projectile jeté de la tour
self.vitesse = 1 # Nombre de projectile lancé par seconde
self.niveau = 1 # Niveau de la tour
self.cout_amelioration = 500
self.proprietaire = prop # Propriétaire de la tour
self.image_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
self.position = pos
self.portee = 5
self.degat = 50
self.vitesse = 1
self.niveau = 1
self.cout_amelioration = 1000
self.proprietaire = prop
self.temps_passe = 0
self.temps = 0
self.en_cours_de_tir = 1
......@@ -173,8 +175,7 @@ class Tour_mortier(Tour):
self.tir_finale = transform.scale(self.tir, (Constante.taille_rel, Constante.taille_rel))
def afficher(self, ecran):
tour_2_finale = transform.scale(self.image,(Constante.taille_rel, Constante.taille_rel))
ecran.blit(tour_2_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
ecran.blit(self.image_finale, (self.position[0]*Constante.taille_rel, self.position[1]*Constante.taille_rel))
......
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