-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModeleJeu.py
152 lines (117 loc) · 4.25 KB
/
ModeleJeu.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 20 12:25:38 2019
@author: alexis
"""
import numpy as np
class Terrain:
"""
Crée une instance de la classe Terrain.
Parametres
----------
params : dict
Un dictionnaire contenant les paramètres du jeu, notamment la
taille du terrain.
Attributs
---------
zones : numpy.ndarray
Une matrice représentant les différentes zones du terrain de jeu.
Une case de cette matrice vaut 0 (respectivement 1) si elle
appartient à la zone du Serpent (respectivement la zone du
Monstre).
joueurs : numpy.ndarray
Une matrice indiquant la position des joueurs sur le terrain de
jeu. Une case de cette matrice vaut 0 si elle est inoccupée, 1 ou
-1 si la tête ou le corps du serpent s'y trouve et 2 si le monstre
occupe la case.
size : tuple
La taille du terrain (nombre de lignes, nombre de colonnes).
"""
def __init__(self,params):
# --- Extraction dans params de la taille du terrain
nl,nc = params["taille_terrain"]
self.size = nl,nc
# --- Création de la matrice associée aux zones
marge = nc//10 # 10% du terrain
map_zones = np.zeros(self.size,dtype=int)
map_zones[marge:nl-marge,marge:nc-marge] = 1
self.zones = map_zones
# --- Création de la matrice associée aux joueurs
map_joueurs = np.zeros(self.size,dtype=int)
map_joueurs[0,0] = 1
map_joueurs[nl//2,nc//2] = 2
self.joueurs = map_joueurs
return
class Monstre:
"""
Classe représentant le Monstre du jeu.
Paramètres
----------
params : dict
Un dictionnaire contenant les paramètres du jeu.
Attributs
---------
position : int tuple
Indices (ligne,colonne) de la position du monstre dans la
matrice représentant le terrain de jeu.
direction : int tuple
Valeurs (dligne,dcolonne) du déplacement élémentaire effectué
par le monstre à chaque étape.
Ex: (1,0) -> bas, (0,1) -> droite.
IA : string
Le type de joueur contrôlant le monstre. IA = 'Humain',
'Aléatoire', 'Intermédiaire' ou 'Avancée'.
"""
def __init__(self,params):
nl,nc = params["taille_terrain"]
self.position = nl//2,nc//2
self.direction = (0,0)
self.IA = params["IA_monstre"]
return
class Serpent:
"""
Classe représentant le Serpent du jeu.
Paramètres
----------
params : dict
Un dictionnaire contenant les paramètres du jeu.
Attributs
---------
position : int tuple
Indices (ligne,colonne) de la position du serpent dans la
matrice représentant le terrain de jeu.
direction : int tuple
Valeurs (dligne,dcolonne) du déplacement élémentaire effectué
par le serpent à chaque étape.
Ex: (1,0) -> bas, (0,1) -> droite.
IA : string
Le type de joueur contrôlant le serpent. IA = 'Humain',
'Aléatoire', 'Intermédiaire'.
corps: list
Une liste contenant les positions du "corps" du Serpent, càd les
positions successives par lesquelles il est passé lors de sa trajet
dans la zone du Monstre.
cpt : int
Un compteur incrémenté chaque fois que le Serpent change de zone.
Initialisé à 0, il passe à 1 quand le Serpent rentre dans la zone
du Monstre, puis atteint 2 lorsqu'il fini sa boucle et retourne
dans sa zone. A ce moment, on grise la zone entourée et le compteur
est remis à 0.
depart : tuple
La position du Serpent juste avant qu'il entre dans la zone du
Monstre.
arrivee : tuple
La position du Serpent juste après être sorti de la zone du
Monstre.
"""
def __init__(self,params):
self.position = 0,0
self.direction = (0,1)
self.IA = params["IA_serpent"]
self.corps = []
self.cpt = 0
self.depart = (0,0)
self.arrivee = (0,0)
self.direction_list = []
return