Big MONKEYS (Carnot 2026, Terminale)
Nom du jeu : Star Banana
OH OH OH mais voilà un jeune voyageur ou une jeune voyageuse de l'espace. Vous venez de pénétrer dans un espace hors de lois intergalactiques. Battez vous pour protéger votre précieuse banane, car les singes de l'espaces sont déchaînés.
Fait par :
- HALE Gabrien
- Raphaël
- GILLIG Gauthier
Le but défendre les singes attaquants, vous avez 10 points de vies, chaque singe qui atteint la banane vous en fait perdre 1. Grâce à vos majestueux tours vous pouvez vous défendre en appuyant sur clique gauche pour une simple tour qui fait des dégâts sur les côtés adjacents et clique droit pour une tour améliorer qui tire tout autour d'elle. et tapez espace pour améliorer les dégâts généraux.
Code Python
import pyxel
import random
class App:
def __init__(self):
pyxel.init(256, 256, title="Nuit du Code", fps=30)
pyxel.load("theme.pyxres")
self.x = random.randint(0, 127)
self.y=random.randint(0, 127)
pyxel.mouse(True)
self.tours=Tours()
self.minions=[]
self.vie=10*30
self.argent=18
self.nbr_tours=0
self.degats_tour=1
pyxel.run(self.update, self.draw)
def update(self):
if pyxel.frame_count%300==0:
self.minions.append(Minions())
for minion in self.minions:
minion.update()
if (minion.min_x, minion.min_y)==(((2*16)//32)*32, 0):
self.vie-=1
for case in self.tours.cases_danger:
if (minion.min_x, minion.min_y)==case:
minion.vie -= self.degats_tour
if minion.vie==0:
self.argent+=2
self.tours.update(self.argent)
if pyxel.btnr(pyxel.MOUSE_BUTTON_LEFT):
self.argent-=6
if pyxel.btnr(pyxel.MOUSE_BUTTON_RIGHT):
self.argent-=18
if self.argent>=20:
if pyxel.btnr(pyxel.KEY_SPACE):
self.degats_tour=self.degats_tour*1.5
self.argent-=20
def draw(self):
pyxel.cls(0)
pyxel.bltm(64, 64, 0, 0, 0, 128, 128, scale=2)
self.tours.draw()
for minion in self.minions:
minion.draw()
if self.vie<=0:
pyxel.cls(0)
pyxel.text(110, 128, "GAME OVER", 8)
pyxel.text(200, 10, "Argents :"+str(self.argent), 8)
pyxel.text(200, 20, "PV :"+str(self.vie), 8)
class Tours:
def __init__(self):
self.tour_y=0
self.tour_x=0
self.nbr_t=0
self.coord_tour=[]
self.cases_danger = []
self.type=None
def update(self, argent):
if argent>=6:
if pyxel.btnr(pyxel.MOUSE_BUTTON_LEFT):
self.tour_x, self.tour_y = pyxel.mouse_x, pyxel.mouse_y
self.nbr_t+=1
self.coord_tour.append(((self.tour_x//32)*32, (self.tour_y//32)*32))
self.cases_danger.append(((self.tour_x//32)*32, (self.tour_y//32)*32 - 32))
self.cases_danger.append(((self.tour_x//32)*32, (self.tour_y//32)*32 + 32))
self.cases_danger.append(((self.tour_x//32)*32 + 32, (self.tour_y//32)*32))
self.cases_danger.append(((self.tour_x//32)*32 - 32, (self.tour_y//32)*32))
self.type=1
if argent>=18:
if pyxel.btnr(pyxel.MOUSE_BUTTON_RIGHT):
self.tour_x, self.tour_y = pyxel.mouse_x, pyxel.mouse_y
self.nbr_t+=1
self.coord_tour.append(((self.tour_x//32)*32, (self.tour_y//32)*32))
self.cases_danger.append(((self.tour_x//32)*32, (self.tour_y//32)*32 - 32))
self.cases_danger.append(((self.tour_x//32)*32, (self.tour_y//32)*32 + 32))
self.cases_danger.append(((self.tour_x//32)*32 + 32, (self.tour_y//32)*32))
self.cases_danger.append(((self.tour_x//32)*32 - 32, (self.tour_y//32)*32))
self.cases_danger.append(((self.tour_x//32)*32 - 32, (self.tour_y//32)*32-32))
self.cases_danger.append(((self.tour_x//32)*32 - 32, (self.tour_y//32)*32+32))
self.cases_danger.append(((self.tour_x//32)*32 + 32, (self.tour_y//32)*32-32))
self.cases_danger.append(((self.tour_x//32)*32 + 32, (self.tour_y//32)*32+32))
self.type=2
def draw(self):
for i in range(self.nbr_t):
self.tour_x, self.tour_y=self.coord_tour[i]
if self.type==1:
pyxel.blt((self.tour_x//32)*32+8, (self.tour_y//32)*32+8, 0, 48, 32, 16, 16, 0,scale=2)
if self.type==2:
pyxel.blt((self.tour_x//32)*32+8, (self.tour_y//32)*32+8, 0, 16, 32, 16, 16, 0,scale=2)
class Minions:
def __init__(self):
self.min_x = 0
self.min_y = 0
self.niv_parcour=0
self.trace_x=[2 ,2 ,2 ,2 ,4 , 6, 6, 6, 8, 10, 12, 12, 12, 12, 12, 12, 10, 8, 6, 4, 2, 2, 400]
self.trace_y=[14 ,12 ,10 ,8 ,8, 8, 10, 12, 12, 12, 12, 10, 8, 6, 4, 2, 2, 2, 2, 2, 2, 0, 400]
self.nbr_m=0
self.nbr_dead=0
self.vie = 1
def update(self):
if pyxel.frame_count % 30 == 0:
self.niv_parcour = self.niv_parcour + 1
if self.niv_parcour<len(self.trace_x):
if self.vie>0:
self.min_x = ((self.trace_x[self.niv_parcour]*16)//32)*32
self.min_y = ((self.trace_y[self.niv_parcour]*16)//32)*32
else:
self.min_x=400
self.min_y=400
self.nbr_dead+=1
if self.nbr_dead%2==0:
self.vie=self.vie*1.023373
def draw(self):
pyxel.blt(self.min_x+8, self.min_y+8, 0, 0, 16, 16, 16, 0,scale=2)
App()