defenseurs en herbe (Carnot 2026, Terminale)
Il était une fois un chevalier, qui habitait dans un château. Il vivait paisiblement une vie solitaire autour de rien, quand un jour un portail apparue devant son château. De la des monstres en apparurent. Il due alors protéger son domaine avec des tours pouvant tirer et tuer ses monstres,
Pour faire bouger le personnage:
- Fleche du haut = allez en haut
- Fleche du bas = allez en bas
- Fleche de gauche = allez a gauche
- Fleche de droite = allez a droite
Pour quitter le jeu appuyer sur "Q"
Code Python
import pyxel
# taille de la fenetre 128x128 pixels
pyxel.init(128, 128, title="Nuit du Code")
pyxel.load("theme.pyxres")
tour=[]
piece=[]
class Joueur:
def __init__(self, tete_x, tete_y):
self.tete_x = tete_x
self.tete_y = tete_y
self.sprite = None
self.direction = None
def mouvement(self):
if pyxel.btn(pyxel.KEY_UP):
self.tete_y -= 1
if pyxel.btn(pyxel.KEY_DOWN):
self.tete_y += 1
if pyxel.btn(pyxel.KEY_LEFT):
self.tete_x -= 1
if pyxel.btn(pyxel.KEY_RIGHT):
self.tete_x += 1
def draw(self):
self.sprite = pyxel.blt(self.tete_x, self.tete_y, 0, 41, 1, 7, 7, 0)
def update(self):
self.mouvement()
class Ennemi:
def __init__(self, ennemi_x, ennemi_y, vie, direction):
self.ennemi_x=ennemi_x
self.ennemi_y=ennemi_y
self.vie = vie
self.direction = direction
def ennemi_mouvement(self):
if (self.ennemi_x==60 and self.ennemi_y==13*8) or (self.ennemi_x==14*8 and self.ennemi_y==4*8) or (self.ennemi_x==10*8 and self.ennemi_y==6*8):
self.direction="g"
if (self.ennemi_x==16 and self.ennemi_y==8*10) or (self.ennemi_x==11*8 and self.ennemi_y==13*8) or (self.ennemi_x==2*8 and self.ennemi_y==4*8):
self.direction="d"
if (self.ennemi_x==16 and self.ennemi_y==128-8*3) or (self.ennemi_x==14*8 and self.ennemi_y==13*8) or (self.ennemi_x==16 and self.ennemi_y==6*8) or (self.ennemi_x==7*8 and self.ennemi_y==4*8):
self.direction="h"
if (self.ennemi_x==11*8 and self.ennemi_y==10*8) or (self.ennemi_x==10*8 and self.ennemi_y==4*8):
self.direction="b"
if self.direction == "h":
self.ennemi_y-=1
if self.direction == "b":
self.ennemi_y+=1
if self.direction == "g":
self.ennemi_x-=1
if self.direction == "d":
self.ennemi_x+=1
def touche(self):
self.vie-=25
if self.vie==0:
ennemi.pop()
pièce.append[self.ennemi_x,self.ennemi_y]
class Tower:
def __init__(self, tower_x, tower_y):
self.tower_x=tower_x
self.tower_y=tower_y
def tir(self, ennemi_x, ennemi_y):
if -20<ennemi_x-self.tower_x<20 and -20<ennemi_y-self.tower_y<20:
Ennemi.touche()
def placer(self):
if pyxel.btn(pyxel.KEY_T):
tour.append[pyxel.MOUSE_POS_X,pyxel.MOUSE_POS_Y]
def vague(numero):
for i in range (numero):
if pyxel.frame_count%30:
ennemi.append[60,114]
class Chateau:
def __init__(self, vie, coord_x, coord_y):
self.vie = vie
self.coord_x = coord_x
self.coord_y = coord_y
self.sprite = None
def prend_degat(self):
...
def draw(self):
self.sprite = pyxel.blt(48, 2, 0, 0, 40, 32, 16, 0, scale = 1.2)
class Jeu:
def __init__(self, hauteur, largeur):
self.fond = pyxel.bltm(0, 0, 0, 0, 0, 128, 128)
self.hauteur = hauteur
self.largeur = largeur
self.joueur = Joueur(64, 64)
self.chateau = Chateau(3, 48, 2)
self.ennemi = Ennemi(60, 114, 100, "h")
self.score_kill = 0
self.score_piece = 0
self.tower_list = []
self.ennemi_list = []
self.visible = True
def draw(self):
pyxel.cls(0)
self.fond = pyxel.bltm(0, 0, 0, 0, 0, 128, 128)
##a changer
#portail
pyxel.blt(56,112,0,48,40,16,16,0)
#piece
pyxel.blt(3, 11, 0, 34, 18, 4, 4, 0)
pyxel.text(9, 10, str(self.score_piece), 0)
pyxel.blt(self.ennemi.ennemi_x, self.ennemi.ennemi_y, 0, 24, 0, 7, 8, 0)
#hearts
pyxel.blt(3, 3, 0, 49, 17, 6, 5, 1)
pyxel.blt(10, 3, 0, 49, 17, 6, 5, 1)
pyxel.blt(17, 3, 0, 49, 17, 6, 5, 1)
pyxel.text(90, 3,"Score:" + str(self.score_kill), 0)
self.joueur.draw()
self.chateau.draw()
pyxel.mouse(self.visible)
def placer(self):
if pyxel.btn(pyxel.KEY_T):
tour.append[pyxel.MOUSE_POS_X, pyxel.MOUSE_POS_Y]
def update(self):
self.joueur.update()
self.ennemi.ennemi_mouvement()
if pyxel.btn(pyxel.KEY_Q):
quit()
def run(self):
pyxel.run(self.update, self.draw)
jeu = Jeu(128, 128)
jeu.run()