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()