lesmiserablesetkayouI (Carnot 2026, Premiere, amélioré)
Attention
Ce projet est un travail réalisé après les 6 heures imparties le jour de la Nuit du Code. Il s'agit de finir le projet pour dépasser la frustration du temps limite.
UNIVERS / THÈME CHOISI
Tower defense
MODE D'EMPLOI
- espace ==> fait apparaître une vague
- A ==> mode de construction de pion
- Z ==> mode de construction de fou
- E ==> mode de construction de cavalier
- R ==> mode de construction de tour
- clique gauche ==> place la pièce sélectionnée
Les pièces doivent être placées en dehors des chemins.
bonne chance
PRÉSENTATION / EXPLICATIONS
Les échecs sont devenus un tower defense. Placez vos pièces à fin d'éliminer les pièces adverses, elles effectueront une attaque selon leur déplacement dans le jeu d'échec.
Ceci n'est pas un jeu, c'est une expérience artistique. Il n'a nulle prétention d'amusement, et est comparable à une banane scotchée à un mur de brique, qui pourrit lentement tandis que son code, ses entrailles sont malmenées par les actions du joueur.
boum
import pyxel as p
p.init(256,256,"chess tower deffence by Lesmisérabletkayou")
p.load("theme.pyxres")
#===================================================================================================================================================================
#=================================================================== CONSTANTES ====================================================================================
#===================================================================================================================================================================
nv_p = 1
a_supprimer = []
Game_Over = 0
prix_pion = 5
prix_fou = 15
prix_caval = 20
prix_tour = 35
prix_dame = 75
att_pion = 10
att_fou = 30
att_caval = 40
att_tour = 50
att_dame = 100
vie_pion = 1
vie_fou = 2
vie_caval = 3
vie_tour = 4
vie_dame = 5
vie_max_roi = 200
sousous_par_seconde = 2
p.mouse(True)
rotate_herbe = []
for i in range(256):
rotate_herbe.append((p.rndi(1,4)-1)*90)
deco_fond = []
for i in range(256):
deco_fond.append(p.rndi(1,30))
#===================================================================================================================================================================
#=================================================================== VARIABLES =====================================================================================
#===================================================================================================================================================================
chemin = [(1,0), (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (2,7), (3,7), (4,7), (5,7), (6,7), (7,7), (8,7), (9,7), (9, 6), (9,5), (9,4), (9,3), (8, 3), (7, 3), (6, 3), (5, 3), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (4, 12), (4, 13), (4, 14), (5, 14), (6, 14), (7, 14), (8, 14), (9, 14), (10, 14), (11, 14), (12, 14), (13, 14), (14, 14), (14, 13), (14, 12), (14, 11), (14, 10), (14, 9), (14, 8), (14,7), (14,6)]
pos_roi = chemin[len(chemin)-1]
sousous = 500
vie_roi = vie_max_roi
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
tmps_pion = 40
tmps_fou = 40
tmps_caval = 40
tmps_tour = 40
tmps_dame = 40
build = 0 #1 pion, 2fou, 3 caval, 4tour, 5 dame
vague = {}
fil_dattente = { (1,1) : [0, 1], (2, 1) : [0, 2], (1,2) : [0, 1], (3, 1) : [0, 3], (1, 3) : [0, 1], (4, 1) : [0, 4], (4, 2) : [0, 4], (1, 4) : [0, 1], (1, 5) : [0, 1], (1, 6) : [0, 1], (5, 1) : [0, 5]}
clee_suppr = ""
# 0 = en jeu; 1 = premier menu; 2 = menue de choix des niveau
menu = 1
t_bouton_lvl1 = False
t_bouton_lvl2 = False
t_bouton_lvl3 = False
t_bouton_lvl4 = False
t_bouton_lvl5 = False
t_bouton_lvl6 = False
t_bouton_home = False
t_bouton_jouer = False
couldown_bouton = 0
#niveau : (droit de jour , stars)
lvl = {1 : (True, 0), 2 : (False, 0), 3 : (False, 0), 4 : (False, 0), 5 : (False, 0), 6 : (False, 0)}
#===================================================================================================================================================================
#=================================================================== FONCTION =======================================================================================
#===================================================================================================================================================================
def reset_all():
global vague, sousous, sousous_par_seconde ,vie_roi, pos_roi, nv_p, build, a_supprimer, Game_Over, clee_suppr, menu, t_bouton_jouer, t_bouton_home, fil_dattente
global tourx, toury, pionx, piony, cavalx, cavaly, damex, damey, foux, fouy, couldown_bouton
global tmps_pion, tmps_fou, tmps_caval, tmps_tour, tmps_dame
global t_bouton_lvl1, t_bouton_lvl2, t_bouton_lvl3, t_bouton_lvl4, t_bouton_lvl5, t_bouton_lvl6
sousous = 500
vie_roi = vie_max_roi
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
tmps_pion = 40
tmps_fou = 40
tmps_caval = 40
tmps_tour = 40
tmps_dame = 40
build = 0 #1 pion, 2fou, 3 caval, 4tour, 5 dame
vague = {}
fil_dattente = { (1,1) : [0, 1], (2, 1) : [0, 2], (1,2) : [0, 1], (3, 1) : [0, 3], (1, 3) : [0, 1], (4, 1) : [0, 4], (4, 2) : [0, 4], (1, 4) : [0, 1], (1, 5) : [0, 1], (1, 6) : [0, 1], (5, 1) : [0, 5]}
clee_suppr = ""
Game_Over = 0
lvl_actuel = 0
def pos_piece(nom_piece) :
if nom_piece == None :
return None
global chemin, vague
return chemin[vague[nom_piece][0]]
def lvl1():
global fil_dattente, chemin, lvl_actuel
fil_dattente = { (1,1) : [0, 1], (2, 1) : [0, 2], (1,2) : [0, 1], (3, 1) : [0, 3], (1, 3) : [0, 1], (4, 1) : [0, 4], (4, 2) : [0, 4], (1, 4) : [0, 1], (1, 5) : [0, 1], (1, 6) : [0, 1], (5, 1) : [0, 5]}
chemin = [(1,0), (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (2,7), (3,7), (4,7), (5,7), (6,7), (7,7), (8,7), (9,7), (9, 6), (9,5), (9,4), (9,3), (8, 3), (7, 3), (6, 3), (5, 3), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (4, 12), (4, 13), (4, 14), (5, 14), (6, 14), (7, 14), (8, 14), (9, 14), (10, 14), (11, 14), (12, 14), (13, 14), (14, 14), (14, 13), (14, 12), (14, 11), (14, 10), (14, 9), (14, 8), (14,7), (14,6)]
lvl_actuel = 1
def lvl2():
global fil_dattente, chemin, lvl_actuel
fil_dattente
chemin
lvl_actuel = 2
def lvl3():
global fil_dattente, chemin, lvl_actuel
fil_dattente
chemin
lvl_actuel = 3
def lvl4():
global fil_dattente, chemin, lvl_actuel
fil_dattente
chemin
lvl_actuel = 4
def lvl5():
global fil_dattente, chemin, lvl_actuel
fil_dattente
chemin
lvl_actuel = 5
def lvl6():
global fil_dattente, chemin, lvl_actuel
fil_dattente
chemin
lvl_actuel = 6
#===================================================================================================================================================================
#=================================================================== UPDATES =======================================================================================
#===================================================================================================================================================================
def update():
global vague, sousous, sousous_par_seconde ,vie_roi, pos_roi, nv_p, build, a_supprimer, Game_Over, clee_suppr, menu, t_bouton_jouer, t_bouton_home, fil_dattente, couldown_bouton
global tourx, toury, pionx, piony, cavalx, cavaly, damex, damey, foux, fouy
global tmps_pion, tmps_fou, tmps_caval, tmps_tour, tmps_dame
global t_bouton_lvl1, t_bouton_lvl2, t_bouton_lvl3, t_bouton_lvl4, t_bouton_lvl5, t_bouton_lvl6
cle_suppr = None
if menu == 0:
if Game_Over == 0:
# Déplace les ennemis de la fil d'attente à la vague
for cle, val in fil_dattente.items():
if 0 not in [v[0] for v in vague.values()]:
vague[cle] = val
clee_suppr = cle
break
# supprime l'ennemie de la fil d'attente
if clee_suppr != "":
del fil_dattente[clee_suppr]
clee_suppr = ""
# systeme de game over
if vie_roi <= 0 :
Game_Over = -1
# S'il n'y a plus d'ennemi le joueur a gagné
if len(vague) + len(fil_dattente) == 0:
Game_Over = 1
# degat au roi
for piece, case in vague.items() :
tipe,_ = piece
if pos_piece(piece) == pos_roi :
cle_suppr = piece
if tipe == 1 :
vie_roi -= att_pion
elif tipe == 2 :
vie_roi -= att_fou
elif tipe == 3 :
vie_roi -= att_caval
elif tipe == 4 :
vie_roi -= att_tour
elif tipe == 5 :
vie_roi -= att_dame
# Supprime la piece une fois qu'il atteint le roi
if pos_piece(cle_suppr) == pos_roi :
del vague[cle_suppr]
# deplacement des pieces
for piece, case in vague.items():
tipe,_ = piece
if p.frame_count % 15 == 0 and not tipe == 2:
if not tipe == 0 :
vague[piece][0] += 1
elif p.frame_count % 10 == 0 and tipe == 2:
vague[piece][0] += 1
# fait apparaitre un pion
if p.KEY_SPACE in p.input_keys :
vague[(1, nv_p)] = [0, vie_pion]
nv_p += 1
# Entrer en mode de construction
if p.KEY_A in p.input_keys :
build = 1 # Pion
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
elif p.KEY_Z in p.input_keys :
build = 2 # Fou
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
elif p.KEY_E in p.input_keys :
build = 3 # Cavalier
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
elif p.KEY_R in p.input_keys :
build = 4 # Tour
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
elif p.KEY_T in p.input_keys :
build = 5 # Reine
pionx, piony = 512, 512
foux, fouy = 512, 512
cavalx, cavaly = 512, 512
tourx, toury = 512, 512
damex, damey = 512, 512
# Pose une piece
pos_att_pion = piony//16,pionx//16
pos_att_fou = fouy//16,foux//16
pos_att_caval = cavaly//16,cavalx//16
pos_att_tour = toury//16,tourx//16
pos_att_dame = damey//16,damex//16
if build == 1 and p.btn(p.MOUSE_BUTTON_LEFT) and (sousous-prix_pion) >= 0 and not (pos_att_pion in chemin):
sousous -= prix_pion
tmps_pion = 0
build = 0
elif build == 2 and p.btn(p.MOUSE_BUTTON_LEFT) and (sousous-prix_fou) >= 0 and not (pos_att_fou in chemin):
sousous -= prix_fou
build = 0
tmps_fou = 0
elif build == 3 and p.btn(p.MOUSE_BUTTON_LEFT) and (sousous-prix_caval) >= 0 and not (pos_att_caval in chemin):
sousous -= prix_caval
build = 0
tmps_caval = 0
elif build == 4 and p.btn(p.MOUSE_BUTTON_LEFT) and (sousous-prix_tour) >= 0 and not (pos_att_tour in chemin):
sousous -= prix_tour
tmps_tour = 0
build = 0
elif build == 5 and p.btn(p.MOUSE_BUTTON_LEFT) and (sousous-prix_dame) >= 0 and not (pos_att_dame in chemin):
sousous -= prix_dame
tmps_dame = 0
build = 0
# Remplace la sourie par l'image de la piece selectionnee
if build == 1 :
pionx, piony = (p.mouse_x//16)*16, (p.mouse_y//16)*16
elif build == 2 :
foux, fouy = (p.mouse_x//16)*16, (p.mouse_y//16)*16
elif build == 3 :
cavalx, cavaly = (p.mouse_x//16)*16, (p.mouse_y//16)*16
elif build == 4 :
tourx, toury = (p.mouse_x//16)*16, (p.mouse_y//16)*16
elif build == 5 :
damex, damey = (p.mouse_x//16)*16, (p.mouse_y//16)*16
#COLISION
a_supprimer = []
#tour et dame en ligne
if tmps_tour == 35 or tmps_dame == 35:
for piece in vague:
x,y = pos_piece(piece)
if (y*16 == tourx or x*16 == toury) or (y*16 == damex or x*16 == damey):
vague[piece][1] -= 1
#pion
if tmps_pion == 35:
for piece in vague:
y,x = pos_piece(piece)
if (pionx+16 == x*16 and piony-16 == y*16) or (pionx-16 == x*16 and piony-16 == y*16):
vague[piece][1] -= 1
#diagonale de la dame et fou
if tmps_dame == 35 or tmps_fou == 35:
for piece in vague:
y,x = pos_piece(piece)
for i in range(16):
if (damex+(i*16) == x*16 and damey+(i*16) == y*16) or (foux+(i*16) == x*16 and fouy+(i*16) == y*16):
vague[piece][1] -= 1
elif (damex-(i*16) == x*16 and damey-(i*16) == y*16) or (foux-(i*16) == x*16 and fouy-(i*16) == y*16):
vague[piece][1] -= 1
elif (damex+(i*16) == x*16 and damey-(i*16) == y*16) or (foux+(i*16) == x*16 and fouy-(i*16) == y*16):
vague[piece][1] -= 1
elif (damex-(i*16) == x*16 and damey-(i*16) == y*16) or (foux-(i*16) == x*16 and fouy-(i*16) == y*16):
vague[piece][1] -= 1
#cavalier attention bordel
if tmps_caval == 35:
for piece in vague:
y,x = pos_piece(piece)
y = y*16
x = x*16
if (cavalx == x and cavaly == y) or (cavalx+16 == x and cavaly == y) or (cavalx-16 == x and cavaly == y) or (cavalx == x and cavaly-16 == y) or (cavalx == x and cavaly+16 == y) or (cavalx+32 == x and cavaly == y) or (cavalx-32 == x and cavaly == y) or (cavalx == x and cavaly-32 == y) or (cavalx == x and cavaly+32 == y) or (cavalx+16 == x and cavaly+32 == y) or (cavalx-16 == x and cavaly+32 == y) or (cavalx+16 == x and cavaly-32 == y) or (cavalx-16 == x and cavaly-32 == y) or (cavalx+32 == x and cavaly-16 == y) or (cavalx+32 == x and cavaly+16 == y) or (cavalx-32 == x and cavaly-16 == y) or (cavalx-32 == x and cavaly+16 == y):
vague[piece][1] -= 1
# Si une pièce n'a plus de vie on l'ajoute à a_supprimer
for piece in vague:
if vague[piece][1] <= 0:
a_supprimer.append(piece)
# Donne des sousous à la mort d'une pièce
for piece in a_supprimer:
del vague[piece]
sousous += 2
#maj des tmps
if tmps_pion < 40 :
tmps_pion += 1
if tmps_fou < 40 :
tmps_fou += 1
if tmps_caval < 40 :
tmps_caval += 1
if tmps_tour < 40 :
tmps_tour += 1
if tmps_dame < 40 :
tmps_dame += 1
#génération sousous
if p.frame_count%30 == 0:
sousous += sousous_par_seconde
elif Game_Over == 1:
#bouton home
if 190<(p.mouse_x//16)*16<210 and 20<(p.mouse_y//16)*16<50:
t_bouton_home = True
if p.btn(p.MOUSE_BUTTON_LEFT):
menu = 1
else:
t_bouton_home = False
if lvl_actuel != 6:
_,star_lvl_apres = lvl[lvl_actuel+1]
_,star_lvl_actuel = lvl[lvl_actuel]
if vie_roi/vie_max_roi*100 <= 50 and star_lvl_actuel <= 1:
lvl[lvl_actuel] = (True,1)
lvl[lvl_actuel+1] = (True,star_lvl_apres)
elif vie_roi/vie_max_roi*100 < 100 and star_lvl_actuel <= 2:
lvl[lvl_actuel] = (True,2)
lvl[lvl_actuel+1] = (True,star_lvl_apres)
elif vie_roi/vie_max_roi*100 == 100 and star_lvl_actuel <= 3:
lvl[lvl_actuel] = (True,3)
lvl[lvl_actuel+1] = (True,star_lvl_apres)
elif Game_Over == -1:
#bouton home
if 190<(p.mouse_x//16)*16<210 and 20<(p.mouse_y//16)*16<50:
t_bouton_home = True
if p.btn(p.MOUSE_BUTTON_LEFT):
menu = 1
else:
t_bouton_home = False
elif menu == 1:
#détecter si la souris est sur le bouton jouer
if 80<(p.mouse_x//16)*16<160 and 80<(p.mouse_y//16)*16<115:
t_bouton_jouer = True
if p.btn(p.MOUSE_BUTTON_LEFT):
menu = 2
reset_all()
couldown_bouton = 3
else:
t_bouton_jouer = False
#selection des niveau
elif menu == 2:
#lvl 1
locked,_ = lvl[1]
if 60<(p.mouse_x//16)*16<90 and 70<(p.mouse_y//16)*16<110 and couldown_bouton == 0:
t_bouton_lvl1 = True
if p.btn(p.MOUSE_BUTTON_LEFT) and locked == True:
menu = 0
reset_all()
lvl1()
else:
t_bouton_lvl1 = False
#lvl 2
locked,_ = lvl[2]
if 110<(p.mouse_x//16)*16<140 and 70<(p.mouse_y//16)*16<110 and couldown_bouton == 0:
t_bouton_lvl2 = True
if p.btn(p.MOUSE_BUTTON_LEFT) and locked == True:
menu = 0
reset_all()
lvl2()
else:
t_bouton_lvl2 = False
#lvl 3
locked,_ = lvl[3]
if 160<(p.mouse_x//16)*16<190 and 70<(p.mouse_y//16)*16<110 and couldown_bouton == 0:
t_bouton_lvl3 = True
if p.btn(p.MOUSE_BUTTON_LEFT) and locked == True:
menu = 0
reset_all()
lvl3()
else:
t_bouton_lvl3 = False
#lvl 4
locked,_ = lvl[4]
if 60<(p.mouse_x//16)*16<90 and 130<(p.mouse_y//16)*16<170 and couldown_bouton == 0:
t_bouton_lvl4 = True
if p.btn(p.MOUSE_BUTTON_LEFT) and locked == True:
menu = 0
reset_all()
lvl4()
else:
t_bouton_lvl4 = False
#lvl 5
locked,_ = lvl[5]
if 110<(p.mouse_x//16)*16<140 and 130<(p.mouse_y//16)*16<170 and couldown_bouton == 0:
t_bouton_lvl5 = True
if p.btn(p.MOUSE_BUTTON_LEFT) and locked == True:
menu = 0
reset_all()
lvl5()
else:
t_bouton_lvl5 = False
#lvl 6
if 160<(p.mouse_x//16)*16<190 and 130<(p.mouse_y//16)*16<170 and couldown_bouton == 0:
t_bouton_lvl6 = True
locked,_ = lvl[6]
if p.btn(p.MOUSE_BUTTON_LEFT) and locked == True:
menu = 0
reset_all()
lvl6()
else:
t_bouton_lvl6 = False
if couldown_bouton > 0:
couldown_bouton -= 1
#===================================================================================================================================================================
#=================================================================== FONCTION DRAW =======================================================================================
#===================================================================================================================================================================
def affsousou():
p.rect(208,16,48,16,0)
p.blt(208,16,0,32,0,16,16,3)
p.text(224,22,str(sousous),2)
def affperdu():
p.cls(5)
p.text(100,100,"Tu as perdu",10)
p.blt(116, 130, 2, 16, 32, 16, 16, 3, scale=5)
if t_bouton_home:
p.blt(200,50,2,40,16,16,16,3,scale=2)
else:
p.blt(200,50,2,40,0,16,16,3,scale=2)
def affgagne():
p.cls(5)
p.text(100,100,"Tu as gagnée!",10)
p.blt(116, 130, 2, 0, 32, 16, 16, 3, scale=5)
if t_bouton_home:
p.blt(200,30,2,40,16,16,16,3,scale=2)
else:
p.blt(200,30,2,40,0,16,16,3,scale=2)
_,star = lvl[lvl_actuel]
if star == 0:
p.blt(100,175,2,8,64,8,8,3,scale=2)
p.blt(120,175,2,8,64,8,8,3,scale=2)
p.blt(140,175,2,8,64,8,8,3,scale=2)
elif star == 1:
p.blt(100,175,2,0,64,8,8,3,scale=2)
p.blt(120,175,2,8,64,8,8,3,scale=2)
p.blt(140,175,2,8,64,8,8,3,scale=2)
elif star == 2:
p.blt(100,175,2,0,64,8,8,3,scale=2)
p.blt(120,175,2,0,64,8,8,3,scale=2)
p.blt(140,175,2,8,64,8,8,3,scale=2)
elif star == 3:
p.blt(100,175,2,0,64,8,8,3,scale=2)
p.blt(120,175,2,0,64,8,8,3,scale=2)
p.blt(140,175,2,0,64,8,8,3,scale=2)
def affbossbar():
p.rect(17,199,202,8,0)
p.rect(18,200,vie_roi/vie_max_roi*200,6,2)
def afffond():
case = 0
for i in range(16):
for j in range(16):
p.blt(i*16,j*16,0,0,0,16,16,rotate=rotate_herbe[case])
if deco_fond[case] <= 2:
p.blt(i*16,j*16,0,0,64,16,16,3)
elif deco_fond[case] == 4:
p.blt(i*16,j*16,0,16,80,16,16,0)
elif deco_fond[case] == 5:
p.blt(i*16,j*16,0,48,80,16,16,0)
elif deco_fond[case] == 6:
p.blt(i*16,j*16,0,0,80,16,16,0)
elif deco_fond[case] == 3:
p.blt(i*16,j*16,0,64,80,16,16,0)
elif deco_fond[case] == 7:
p.blt(i*16,j*16,0,32,80,16,16,0)
case += 1
p.blt(3*16,16*13,0,0,16,48,48,3)
def affchemine():
for coord in chemin:
ychemin,xchemin = coord
p.blt(xchemin*16,ychemin*16,0,16,0,16,16)
def affpiecevague():
for piece, case in vague.items():
ypiece,xpiece = pos_piece(piece)
tipe,_ = piece
vie = vague[piece][1]
#pion
if tipe == 1:
p.blt(xpiece*16,ypiece*16,1,0,80,16,16,3)
#fou
if tipe == 2:
if vie == 2:
p.blt(xpiece*16,ypiece*16,1,0,96,16,16,3)
elif vie == 1:
p.blt(xpiece*16,ypiece*16,1,16,96,16,16,3)
#cavalier
if tipe == 3:
if vie == 3:
p.blt(xpiece*16,ypiece*16,1,0,112,16,16,3)
elif vie == 2:
p.blt(xpiece*16,ypiece*16,1,16,112,16,16,3)
elif vie == 1:
p.blt(xpiece*16,ypiece*16,1,32,112,16,16,3)
#tour
if tipe == 4:
if vie == 4:
p.blt(xpiece*16,ypiece*16,1,0,128,16,16,3)
elif vie == 3:
p.blt(xpiece*16,ypiece*16,1,16,128,16,16,3)
elif vie == 2:
p.blt(xpiece*16,ypiece*16,1,32,128,16,16,3)
elif vie == 1:
p.blt(xpiece*16,ypiece*16,1,48,128,16,16,3)
#dame
if tipe == 5:
if vie == 5:
p.blt(xpiece*16,ypiece*16,1,0,144,16,16,3)
elif vie == 4:
p.blt(xpiece*16,ypiece*16,1,16,144,16,16,3)
elif vie == 3:
p.blt(xpiece*16,ypiece*16,1,32,144,16,16,3)
elif vie == 2:
p.blt(xpiece*16,ypiece*16,1,48,144,16,16,3)
elif vie == 1:
p.blt(xpiece*16,ypiece*16,1,64,144,16,16,3)
def afftour():
global tourx, toury
if tmps_tour < 5:
p.blt(tourx,toury,1,0,0,16,16,3)
elif tmps_tour < 10:
p.blt(tourx,toury,1,16,0,16,16,3)
elif tmps_tour < 15:
p.blt(tourx,toury,1,32,0,16,16,3)
elif tmps_tour < 20:
p.blt(tourx,toury,1,48,0,16,16,3)
elif tmps_tour < 25:
p.blt(tourx,toury,1,64,0,16,16,3)
elif tmps_tour < 30:
p.blt(tourx,toury,1,80,0,16,16,3)
elif tmps_tour < 40:
for i in range(16):
p.blt(i*16,toury,1,112,0,16,16,3)
for i in range(16):
p.blt(tourx,i*16,1,112,0,16,16,3,rotate=90)
p.blt(tourx,toury,1,96,0,16,16,3)
if tmps_tour == 39:
tourx = 512
toury = 512
else:
p.blt(tourx,toury,1,0,0,16,16,3)
def affpion():
global pionx,piony
if tmps_pion < 5:
p.blt(pionx,piony,1,0,16,16,16,3)
elif tmps_pion < 10:
p.blt(pionx,piony,1,16,16,16,16,3)
elif tmps_pion < 15:
p.blt(pionx,piony,1,32,16,16,16,3)
elif tmps_pion < 20:
p.blt(pionx,piony,1,48,16,16,16,3)
elif tmps_pion < 25:
p.blt(pionx,piony,1,64,16,16,16,3)
elif tmps_pion < 30:
p.blt(pionx,piony,1,80,16,16,16,3)
elif tmps_pion < 40:
p.blt(pionx+16,piony-16,1,128,16,16,16,3)
p.blt(pionx-16,piony-16,1,112,16,16,16,3)
p.blt(pionx,piony,1,96,16,16,16,3)
if tmps_pion == 39:
pionx = 512
piony = 512
else:
p.blt(pionx,piony,1,0,16,16,16,3)
def affdame():
global damex,damey
if tmps_dame < 5:
p.blt(damex,damey,1,0,32,16,16,3)
elif tmps_dame < 10:
p.blt(damex,damey,1,16,32,16,16,3)
elif tmps_dame < 15:
p.blt(damex,damey,1,32,32,16,16,3)
elif tmps_dame < 20:
p.blt(damex,damey,1,48,32,16,16,3)
elif tmps_dame < 25:
p.blt(damex,damey,1,64,32,16,16,3)
elif tmps_dame < 30:
p.blt(damex,damey,1,80,32,16,16,3)
elif tmps_dame < 40:
for i in range(16):
p.blt(i*16,damey,1,112,0,16,16,3,scale=1.5)
for i in range(16):
p.blt(damex,i*16,1,112,0,16,16,3,rotate=90,scale=1.5)
for i in range(16):
p.blt(damex+(i*16),damey+(i*16),1,112,0,16,16,3,rotate=45,scale=1.5)
p.blt(damex-(i*16),damey+(i*16),1,112,0,16,16,3,rotate=135,scale=1.5)
p.blt(damex+(i*16),damey-(i*16),1,112,0,16,16,3,rotate=135,scale=1.5)
p.blt(damex-(i*16),damey-(i*16),1,112,0,16,16,3,rotate=45,scale=1.5)
p.blt(damex,damey,1,96,32,16,16,3)
if tmps_dame == 39:
damex = 512
damey = 512
else:
p.blt(damex,damey,1,0,32,16,16,3)
def afffou():
global foux, fouy
if tmps_fou < 5:
p.blt(foux,fouy,1,0,64,16,16,3)
elif tmps_fou < 10:
p.blt(foux,fouy,1,16,64,16,16,3)
elif tmps_fou < 15:
p.blt(foux,fouy,1,32,64,16,16,3)
elif tmps_fou < 20:
p.blt(foux,fouy,1,48,64,16,16,3)
elif tmps_fou < 25:
p.blt(foux,fouy,1,64,64,16,16,3)
elif tmps_fou < 30:
p.blt(foux,fouy,1,80,64,16,16,3)
elif tmps_fou < 40:
for i in range(16):
p.blt(foux+(i*16),fouy+(i*16),1,112,0,16,16,3,rotate=45,scale=1.5)
p.blt(foux-(i*16),fouy+(i*16),1,112,0,16,16,3,rotate=135,scale=1.5)
p.blt(foux+(i*16),fouy-(i*16),1,112,0,16,16,3,rotate=135,scale=1.5)
p.blt(foux-(i*16),fouy-(i*16),1,112,0,16,16,3,rotate=45,scale=1.5)
p.blt(foux,fouy,1,96,0,16,16,3,rotate=45,scale=1.5)
if tmps_fou == 39:
foux = 512
fouy = 512
else:
p.blt(foux,fouy,1,0,64,16,16,3)
def affcaval():
global cavalx,cavaly
if tmps_caval < 5:
p.blt(cavalx,cavaly,1,0,48,16,16,3)
elif tmps_caval < 10:
p.blt(cavalx,cavaly,1,16,48,16,16,3)
elif tmps_caval < 15:
p.blt(cavalx,cavaly,1,32,48,16,16,3)
elif tmps_caval < 20:
p.blt(cavalx,cavaly,1,48,48,16,16,3)
elif tmps_caval < 25:
p.blt(cavalx,cavaly,1,64,48,16,16,3)
elif tmps_caval < 30:
p.blt(cavalx,cavaly,1,80,48,16,16,3)
elif tmps_caval < 40:
p.blt(cavalx,cavaly,1,96,48,16,16,3)
p.blt(cavalx+16,cavaly,1,112,48,16,16,3)
p.blt(cavalx-16,cavaly,1,112,48,16,16,3)
p.blt(cavalx,cavaly+16,1,112,48,16,16,3,rotate=90)
p.blt(cavalx,cavaly-16,1,112,48,16,16,3,rotate=90)
p.blt(cavalx+32,cavaly,1,128,48,16,16,3)
p.blt(cavalx-32,cavaly,1,128,48,16,16,3,rotate=180)
p.blt(cavalx,cavaly+32,1,128,48,16,16,3,rotate=90)
p.blt(cavalx,cavaly-32,1,128,48,16,16,3,rotate=270)
p.blt(cavalx+32,cavaly-16,1,144,48,16,16,3)
p.blt(cavalx+32,cavaly+16,1,144,48,16,16,3,rotate=180)
p.blt(cavalx-32,cavaly-16,1,144,48,16,16,3)
p.blt(cavalx-32,cavaly+16,1,144,48,16,16,3,rotate=180)
p.blt(cavalx+16,cavaly-32,1,144,48,16,16,3,rotate=90)
p.blt(cavalx-16,cavaly-32,1,144,48,16,16,3,rotate=270)
p.blt(cavalx+16,cavaly+32,1,144,48,16,16,3,rotate=90)
p.blt(cavalx-16,cavaly+32,1,144,48,16,16,3,rotate=270)
if tmps_caval == 39:
cavalx = 512
cavaly = 512
else:
p.blt(cavalx,cavaly,1,0,48,16,16,3)
def bouton_jouer():
if t_bouton_jouer:
p.blt(107,100,2,0,96,40,18,3,scale=2)
else:
p.blt(107,100,2,0,80,40,16,3,scale=2)
def affchoixlvl():
p.cls(5)
lvllock,_ = lvl[1]
if lvllock == False:
p.blt(70,90,2,0,48,16,16,3,scale=2)
elif lvllock == True:
if t_bouton_lvl1 == True:
p.blt(70,90,2,16,64,16,16,3,scale=2)
else:
p.blt(70,90,2,16,48,16,16,3,scale=2)
lvllock,_ = lvl[2]
if lvllock == False:
p.blt(120,90,2,0,48,16,16,3,scale=2)
elif lvllock == True:
if t_bouton_lvl2:
p.blt(120,90,2,32,64,16,16,3,scale=2)
else:
p.blt(120,90,2,32,48,16,16,3,scale=2)
lvllock,_ = lvl[3]
if lvllock == False:
p.blt(170,90,2,0,48,16,16,3,scale=2)
elif lvllock == True:
if t_bouton_lvl3:
p.blt(170,90,2,48,64,16,16,3,scale=2)
else:
p.blt(170,90,2,48,48,16,16,3,scale=2)
lvllock,_ = lvl[4]
if lvllock == False:
p.blt(70,150,2,0,48,16,16,3,scale=2)
elif lvllock == True:
if t_bouton_lvl4:
p.blt(70,150,2,64,64,16,16,3,scale=2)
else:
p.blt(70,150,2,64,48,16,16,3,scale=2)
lvllock,_ = lvl[5]
if lvllock == False:
p.blt(120,150,2,0,48,16,16,3,scale=2)
elif lvllock == True:
if t_bouton_lvl5:
p.blt(120,150,2,80,64,16,16,3,scale=2)
else:
p.blt(120,150,2,80,48,16,16,3,scale=2)
lvllock,_ = lvl[6]
if lvllock == False:
p.blt(170,150,2,0,48,16,16,3,scale=2)
elif lvllock == True:
if t_bouton_lvl6:
p.blt(170,150,2,96,64,16,16,3,scale=2)
else:
p.blt(170,150,2,96,48,16,16,3,scale=2)
def stars():
_,star = lvl[1]
if star == 0:
p.blt(64,115,2,8,64,8,8,3)
p.blt(74,115,2,8,64,8,8,3)
p.blt(84,115,2,8,64,8,8,3)
elif star == 1:
p.blt(64,115,2,0,64,8,8,3)
p.blt(74,115,2,8,64,8,8,3)
p.blt(84,115,2,8,64,8,8,3)
elif star == 2:
p.blt(64,115,2,0,64,8,8,3)
p.blt(74,115,2,0,64,8,8,3)
p.blt(84,115,2,8,64,8,8,3)
elif star == 3:
p.blt(64,115,2,0,64,8,8,3)
p.blt(74,115,2,0,64,8,8,3)
p.blt(84,115,2,0,64,8,8,3)
_,star = lvl[2]
if star == 0:
p.blt(114,115,2,8,64,8,8,3)
p.blt(124,115,2,8,64,8,8,3)
p.blt(134,115,2,8,64,8,8,3)
elif star == 1:
p.blt(114,115,2,0,64,8,8,3)
p.blt(124,115,2,8,64,8,8,3)
p.blt(134,115,2,8,64,8,8,3)
elif star == 2:
p.blt(114,115,2,0,64,8,8,3)
p.blt(124,115,2,0,64,8,8,3)
p.blt(134,115,2,8,64,8,8,3)
elif star == 3:
p.blt(114,115,2,0,64,8,8,3)
p.blt(124,115,2,0,64,8,8,3)
p.blt(134,115,2,0,64,8,8,3)
_,star = lvl[3]
if star == 0:
p.blt(164,115,2,8,64,8,8,3)
p.blt(174,115,2,8,64,8,8,3)
p.blt(184,115,2,8,64,8,8,3)
elif star == 1:
p.blt(164,115,2,0,64,8,8,3)
p.blt(174,115,2,8,64,8,8,3)
p.blt(184,115,2,8,64,8,8,3)
elif star == 2:
p.blt(164,115,2,0,64,8,8,3)
p.blt(174,115,2,0,64,8,8,3)
p.blt(184,115,2,8,64,8,8,3)
elif star == 3:
p.blt(164,115,2,0,64,8,8,3)
p.blt(174,115,2,0,64,8,8,3)
p.blt(184,115,2,0,64,8,8,3)
_,star = lvl[4]
if star == 0:
p.blt(64,175,2,8,64,8,8,3)
p.blt(74,175,2,8,64,8,8,3)
p.blt(84,175,2,8,64,8,8,3)
elif star == 1:
p.blt(64,175,2,0,64,8,8,3)
p.blt(74,175,2,8,64,8,8,3)
p.blt(84,175,2,8,64,8,8,3)
elif star == 2:
p.blt(64,175,2,0,64,8,8,3)
p.blt(74,175,2,0,64,8,8,3)
p.blt(84,175,2,8,64,8,8,3)
elif star == 3:
p.blt(64,175,2,0,64,8,8,3)
p.blt(74,175,2,0,64,8,8,3)
p.blt(84,175,2,0,64,8,8,3)
_,star = lvl[5]
if star == 0:
p.blt(114,175,2,8,64,8,8,3)
p.blt(124,175,2,8,64,8,8,3)
p.blt(134,175,2,8,64,8,8,3)
elif star == 1:
p.blt(114,175,2,0,64,8,8,3)
p.blt(124,175,2,8,64,8,8,3)
p.blt(134,175,2,8,64,8,8,3)
elif star == 2:
p.blt(114,175,2,0,64,8,8,3)
p.blt(124,175,2,0,64,8,8,3)
p.blt(134,175,2,8,64,8,8,3)
elif star == 3:
p.blt(114,175,2,0,64,8,8,3)
p.blt(124,175,2,0,64,8,8,3)
p.blt(134,175,2,0,64,8,8,3)
_,star = lvl[6]
if star == 0:
p.blt(164,175,2,8,64,8,8,3)
p.blt(174,175,2,8,64,8,8,3)
p.blt(184,175,2,8,64,8,8,3)
elif star == 1:
p.blt(164,175,2,0,64,8,8,3)
p.blt(174,175,2,8,64,8,8,3)
p.blt(184,175,2,8,64,8,8,3)
elif star == 2:
p.blt(164,175,2,0,64,8,8,3)
p.blt(174,175,2,0,64,8,8,3)
p.blt(184,175,2,8,64,8,8,3)
elif star == 3:
p.blt(164,175,2,0,64,8,8,3)
p.blt(174,175,2,0,64,8,8,3)
p.blt(184,175,2,0,64,8,8,3)
#==================================================================================================================================================================
#=================================================================== DRAW ==========================================================================================
#===================================================================================================================================================================
def draw():
global chemin, vague, sousous, vie_roi, pos_roi, nv_p, build
global tourx, toury, pionx, piony, cavalx, cavaly, damex, damey
global prix_pion, prix_fou, prix_caval, prix_tour, prix_dame, att_pion, att_fou, att_caval, att_tour, att_dame, vie_pion
global tmps_pion, tmps_fou, tmps_caval, tmps_tour, tmps_dame, pion_at, fou_at, caval_at, tour_at, dame_at
if menu == 0:
if Game_Over == 0:
afffond()
affchemine()
affpiecevague()
affbossbar()
affsousou()
afftour()
affpion()
affdame()
afffou()
affcaval()
elif Game_Over == -1:
affperdu()
elif Game_Over == 1:
affgagne()
elif menu == 1:
p.cls(5)
bouton_jouer()
elif menu == 2:
affchoixlvl()
stars()
p.run(update,draw)