Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Corentin MIMEAU
PolyDefense
Commits
a9e3d2f8
Commit
a9e3d2f8
authored
Dec 13, 2015
by
Vincent BRULE
Browse files
grosse maj
parent
8c486e0c
Changes
1
Hide whitespace changes
Inline
Side-by-side
tour.py
View file @
a9e3d2f8
...
...
@@ -12,7 +12,7 @@ from constante import Constante
from
base
import
*
from
joueur
import
*
from
tour
import
*
from
projectile
import
*
class
Tour
:
...
...
@@ -26,25 +26,46 @@ class Tour:
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
.
temps
=
0
self
.
image_route
=
image
.
load
(
"route.png"
)
self
.
image_route_finale
=
transform
.
scale
(
self
.
image_route
,
(
Constante
.
taille_rel
,
Constante
.
taille_rel
))
def
chrono
(
self
):
return
self
.
temps_passe
-
self
.
temps
### Attaque
def
attaquer
(
self
,
liste_unite
):
#print "Attaque."
u
=
self
.
chercherUnite
(
liste_unite
)
def
attaquer
(
self
,
base
,
base_e
,
ecran
):
if
self
.
en_cours_de_tir
==
1
:
self
.
afficher
(
ecran
)
self
.
en_cours_de_tir
=
0
u
=
self
.
chercherUnite
(
base
.
liste_unite
)
if
u
!=
0
:
p
=
Projectile
((
self
.
position
[
0
]
*
Constante
.
taille_rel
,
self
.
position
[
1
]
*
Constante
.
taille_rel
),
(
50
,
50
),
self
.
vitesse
,
u
)
self
.
liste_proj
.
append
(
p
)
#u.retirerSante(self.degat)
if
self
.
chrono
()
>
self
.
vitesse
:
self
.
temps
=
time
.
time
()
u
.
retirerSante
(
self
.
degat
)
if
self
.
en_cours_de_tir
==
0
:
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
:
base
.
liste_unite
.
remove
(
u
)
if
u
.
type
==
1
:
base_e
.
argent
=
base_e
.
argent
+
50
elif
u
.
type
==
2
:
base_e
.
argent
=
base_e
.
argent
+
20
elif
u
.
type
==
3
:
base_e
.
argent
=
base_e
.
argent
+
100
elif
u
.
type
==
4
:
base_e
.
argent
=
base_e
.
argent
+
10
ecran
.
blit
(
self
.
image_route_finale
,
u
.
position
)
else
:
self
.
temps_passe
=
time
.
time
()
else
:
print
"Pas d'unité à attaquer"
self
.
en_cours_de_tir
=
1
def
actualiserProj
(
self
,
ecran
):
for
i
in
self
.
liste_proj
:
i
.
avancer
(
ecran
)
#def calculerPositionProj(self, unite):
...
...
@@ -52,7 +73,6 @@ class Tour:
### 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
)
print
"Distance a la tour : "
+
str
(
distance
)
if
(
distance
<=
self
.
portee
):
#assert(unite.proprietaire == self.proprietaire)
...
...
@@ -70,145 +90,71 @@ class Tour:
class
Tour_
feu
(
Tour
):
class
Tour_
dragon
(
Tour
):
def
__init__
(
self
,
pos
,
prop
):
self
.
image
=
image
.
load
(
"tour_
1_avec_fond
.png"
)
self
.
image
=
image
.
load
(
"tour_
dragon_1
.png"
)
self
.
degatType
=
"fire"
# Type de dégat de la tour
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
.
portee
=
1
# Portee de la tour
self
.
degat
=
5
# Dégat de chaque projectile jeté de la tour
self
.
vitesse
=
0.
1
# 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
.
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_finale
=
transform
.
scale
(
self
.
tir
,
(
Constante
.
taille_rel
,
Constante
.
taille_rel
))
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
))
class
Tour_
glac
e
(
Tour
):
class
Tour_
simpl
e
(
Tour
):
def
__init__
(
self
,
pos
,
prop
):
self
.
image
=
image
.
load
(
"tour_
2_avec_fond
.png"
)
self
.
image
=
image
.
load
(
"tour_
1
.png"
)
self
.
degatType
=
"ice"
# Type de dégat de la tour
self
.
position
=
pos
# Coordonées de la tour
self
.
portee
=
5
# Portee de la tour
self
.
degat
=
1
00
# Dégat de chaque projectile jeté de la tour
self
.
vitesse
=
2
# Nombre de projectile lancé par seconde
self
.
portee
=
3
# 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
=
0
# Niveau de la tour
self
.
proprietaire
=
prop
# Propriétaire de la tour
self
.
liste_proj
=
[]
self
.
temps_passe
=
0
self
.
temps
=
0
self
.
image_route
=
image
.
load
(
"route.png"
)
self
.
en_cours_de_tir
=
1
self
.
image_route_finale
=
transform
.
scale
(
self
.
image_route
,
(
Constante
.
taille_rel
,
Constante
.
taille_rel
))
self
.
tir
=
image
.
load
(
"tour_1_tir.png"
)
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
))
# -*- 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
*
from
joueur
import
*
from
tour
import
*
from
projectile
import
*
class
Tour
:
class
Tour_mortier
(
Tour
):
def
__init__
(
self
,
pos
,
prop
):
self
.
degatType
=
""
# Type de dégat de la tour
self
.
position
=
pos
# Coordonées de la tour
self
.
portee
=
0
# Portee 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
=
[]
### Attaque
def
attaquer
(
self
,
liste_unite
):
#print "Attaque."
u
=
self
.
chercherUnite
(
liste_unite
)
if
u
!=
0
:
p
=
Projectile
((
self
.
position
[
0
]
*
Constante
.
taille_rel
,
self
.
position
[
1
]
*
Constante
.
taille_rel
),
(
50
,
50
),
self
.
vitesse
,
u
)
self
.
liste_proj
.
append
(
p
)
#u.retirerSante(self.degat)
else
:
print
"Pas d'unité à attaquer"
def
actualiserProj
(
self
,
ecran
):
for
i
in
self
.
liste_proj
:
i
.
avancer
(
ecran
)
#def calculerPositionProj(self, unite):
### 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
)
print
"Distance a la tour : "
+
str
(
distance
)
if
(
distance
<=
self
.
portee
):
#assert(unite.proprietaire == self.proprietaire)
if
(
unite
.
proprietaire
!=
self
.
proprietaire
):
return
True
return
False
def
chercherUnite
(
self
,
liste_unite
):
for
i
in
liste_unite
:
if
self
.
verifierUnite
(
i
):
return
i
return
0
class
Tour_feu
(
Tour
):
def
__init__
(
self
,
pos
,
prop
):
self
.
image
=
image
.
load
(
"tour_1_avec_fond.png"
)
self
.
degatType
=
"fire"
# Type de dégat de la tour
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
=
0
# Niveau de la tour
self
.
proprietaire
=
prop
# Propriétaire de la tour
self
.
liste_proj
=
[]
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
))
class
Tour_glace
(
Tour
):
def
__init__
(
self
,
pos
,
prop
):
self
.
image
=
image
.
load
(
"tour_2_avec_fond.png"
)
self
.
image
=
image
.
load
(
"mortier_1.png"
)
self
.
degatType
=
"ice"
# Type de dégat de la tour
self
.
position
=
pos
# Coordonées de la tour
self
.
portee
=
5
# Portee de la tour
self
.
degat
=
1
00
# Dégat de chaque projectile jeté de la tour
self
.
vitesse
=
2
# Nombre de projectile lancé par seconde
self
.
portee
=
10
# 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
=
0
# Niveau de la tour
self
.
proprietaire
=
prop
# Propriétaire de la tour
self
.
liste_proj
=
[]
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
(
"mortier_tir_1.png"
)
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
))
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment