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