Les chalonnais (Pontus 2026, Premiere)

ZORBIT

Martin Villaume Charles Jeghen Lilwen Bacot

UNIVERS / THÈME CHOISI

Univers U1

MODE D'EMPLOI

Pour vous déplacer utiliser les touches de direction :

-la flèche du haut=monter -la flèche du bas=descendre -la flèche de gauche =allez à gauche -la flèche de droite =allez à droite

Pour éviter les ennemis il faut donc vous déplacer avec ses flèches. Si un ennemi ou une météorite vous touche une mort instantanée vous attend…

PRÉSENTATION / EXPLICATIONS

Vous êtes un petit vaisseau abandonné dans l’espace.

Votre but est de survivre en évitant les différents vaisseaux ennemis et les projectiles en vous déplaçant avec les touches de direction. Durant votre aventure vous allez donc rencontrer différents ennemis, des météorites qui descendent du ciel (en haut), des vaisseaux spatiaux ennemis qui arrivent du côté gauche de l’écran et qui petit à petit seront de plus en plus rapide et nombreux.

Bonne chance !

Code Python
import pyxel
from random import *
from copy import deepcopy

# taille de la fenetre 128x128 pixels
pyxel.init(256, 256, title="Nuit du Code")
pyxel.load("U1.pyxres")
vaisseau={
"pos_x" : 128,
"pos_y" : 248,
"dim_x" : 8,
"dim_y" : 8}
perdu = False
score = 0

liste_star=[[randint(0,255),randint(0,255)] for _ in range(100)]
def creer_etoile(liste_star):
    liste_star.append([randint(0,255),0])
def mouvement_etoile(liste_star):
    for s in liste_star:
        s[1]+=1

    return liste_star
def affiche_etoile(liste_star):
        for s in liste_star:
            pyxel.pset(s[0],s[1],13)


rotation = 0
astronaute = {"pos_x" : -8, "pos_y" : randint(50,206)}
angle_astronaute = randint(-1, 1)
rotation_astronaute = 0
angle_meteorite = randint(-1, 1)

nb_ennemi=1

def dif(nb_ennemi):
    if (pyxel.frame_count%30==0):
        nb_ennemi+=1

METEORITE= {"pos_x":0,
    "pos_y":16,
    "dim_x":8,
    "dim_y":8,
    "angle" : 0
}

liste_meteorite = []

def creation_meteorite(liste_meteorite, nb_ennemi=2):
    nb_ennemi = int(nb_ennemi)
    if (pyxel.frame_count%110==0):
        for _ in range(nb_ennemi):
            meteorite=deepcopy(METEORITE)
            meteorite["pos_x"]=randint(30, 200)
            meteorite["pos_y"]=-8
            meteorite["angle"]=randint(-2,2)
            liste_meteorite.append(meteorite)
    return liste_meteorite

def mouvementm(objet, angle):
    if pyxel.frame_count%5==0 :
        objet["pos_x"] += objet["angle"]
        objet["pos_y"] += 4

def mouvement_meteorite(liste_meteorite):
    for e in liste_meteorite:
        e = mouvementm(e, angle_meteorite)
    return liste_meteorite

def affiche_meteorite(liste_meteorite):
    for e in liste_meteorite:
        pyxel.blt(e["pos_x"], e["pos_y"], 0, 40, 32, 8, 8)


ENNEMI= {"pos_x":0,
    "pos_y":0,
    "dim_x":8,
    "dim_y":8,
    "type":0
}

ENNEMI1= {"pos_x":0,
    "pos_y":16,
    "dim_x":8,
    "dim_y":8,
    "type":1
}



liste_ennemi=[]

def creation_ennemi(liste_ennemi,nb_ennemi=2):
    nb_ennemi=int(nb_ennemi)
    if (pyxel.frame_count%100==0):
        for _ in range(nb_ennemi):
            ennemi=deepcopy(ENNEMI)
            ennemi["pos_y"]=randint(0,248)
            ennemi["pos_x"]=-8
            ennemi["type"]=0
            ennemi1=deepcopy(ENNEMI)
            ennemi1["pos_y"]=randint(0,248)
            ennemi1["pos_x"]=-8
            ennemi1["type"]=1
            liste_ennemi.append(ennemi)
            liste_ennemi.append(ennemi1)
    return liste_ennemi




def mouvement(objet):
    if (pyxel.frame_count%5==0):
        objet["pos_x"]+=3
    return objet

def mouvement_ennemi(liste_ennemi):
    for e in liste_ennemi:
        e=mouvement(e)
    return liste_ennemi

def affiche_ennemi(liste_ennemi):
    for e in liste_ennemi:
        pyxel.blt(e["pos_x"], e["pos_y"], 0, 16, 0, 8, 8)


"""UPDATE"""

def update() :

    global score, astronaute, angle_astronaute, rotation_astronaute, liste_ennemi, nb_ennemi, liste_meteorite, nb_meteorite, liste_star, perdu
    if not perdu :
        creer_etoile(liste_star)
        liste_star=mouvement_etoile(liste_star)

        if (pyxel.frame_count%300==0) and pyxel.frame_count!=0:
            nb_ennemi+=1

        if pyxel.frame_count%15 == 0 :
            score += 10

        if pyxel.btn(pyxel.KEY_ESCAPE) :
            pyxel.quit()

        """ASTRONAUTE"""

        if pyxel.frame_count%900 == 0 :
            astronaute = {"pos_x" : -8, "pos_y" : randint(50,206)}
            angle_astronaute = randint(-1, 1)
        astronaute["pos_x"]+=1
        astronaute["pos_y"]+=angle_astronaute
        rotation_astronaute += 1

        """VAISSEAU"""

        global vaisseau

        vaisseau["pos_y"] += 3

        if pyxel.btn(pyxel.KEY_UP) :
            vaisseau["pos_y"] -= 7
        if pyxel.btn(pyxel.KEY_RIGHT) :
            vaisseau["pos_x"] += 4
        if pyxel.btn(pyxel.KEY_LEFT) :
            vaisseau["pos_x"] -= 4

        if vaisseau["pos_x"] < 0 :
            vaisseau["pos_x"] = 0
        if vaisseau["pos_x"] > 248 :
            vaisseau["pos_x"] = 248
        if vaisseau["pos_y"] < 0 :
            vaisseau["pos_y"] = 0
        if vaisseau["pos_y"] > 248 :
            vaisseau["pos_y"] = 248

        """ENNEMIES"""

        liste_ennemi=creation_ennemi(liste_ennemi,nb_ennemi)
        liste_ennemi=mouvement_ennemi(liste_ennemi)

        liste_meteorite = creation_meteorite(liste_meteorite, nb_ennemi)
        liste_meteorite = mouvement_meteorite(liste_meteorite)


        for x in liste_ennemi :
            if collision(vaisseau, x):
                perdu = True

        for x in liste_meteorite :
            if collision(vaisseau, x):
                perdu = True



"""COLLISION"""

def collision(objet_1, objet_2):
    if ( objet_1["pos_x"] <= objet_2["pos_x"] <= objet_1["pos_x"]+objet_1["dim_x"] ) and ( objet_1["pos_y"] <= objet_2["pos_y"] <= objet_1["pos_y"]+objet_1["dim_y"] ):
        return True
    elif ( objet_1["pos_x"] <= objet_2["pos_x"]+objet_2["dim_x"] <= objet_1["pos_x"]+objet_1["dim_x"] ) and ( objet_1["pos_y"] <= objet_2["pos_y"]+objet_2["dim_y"] <= objet_1["pos_y"]+objet_1["dim_y"] ):
        return True
    else :
        return False




def draw() :

    global rotation_astronaute, liste_ennemi, liste_meteorite, liste_star, perdu

    pyxel.cls(0)
    if not perdu :
        pyxel.text(200, 10, "score : "+str(score), 7)


        pyxel.blt(vaisseau["pos_x"], vaisseau["pos_y"], 0, 8, 32, 8, 8)
        if pyxel.btn(pyxel.KEY_UP) :
            pyxel.blt(vaisseau["pos_x"], vaisseau["pos_y"]+8, 0, 8, 40, 8, 8)
        if pyxel.btn(pyxel.KEY_RIGHT) :
            pyxel.blt(vaisseau["pos_x"]-8, vaisseau["pos_y"]+2, 0, 0, 34, 8, 5)
        if pyxel.btn(pyxel.KEY_LEFT) :
            pyxel.blt(vaisseau["pos_x"]+8, vaisseau["pos_y"]+2, 0, 0, 34, 8, 5, rotate=180)

        pyxel.blt(astronaute["pos_x"], astronaute["pos_y"], 0, 24, 32, 8, 8, rotate=rotation_astronaute)

        affiche_etoile(liste_star)  

        affiche_ennemi(liste_ennemi)

        affiche_meteorite(liste_meteorite)
    else:
        pyxel.text(80, 110, "GAME OVER : "+str(score)+"pts",7)


pyxel.run(update, draw)