Eliott Clement (Notre-Dame 2026, Premiere)
UNIVERS / THÈME CHOISI:
Le thème de notre jeu porte sur un jeu fantastique à partir de la bibliothèque U4.
MODE D'EMPLOI
- Flèche pour diriger
- Espace pour frapper les ennemis avec les épées
- R pour recommencer
PRÉSENTATION / EXPLICATIONS
Notre jeu se présente sous la forme d'un jeu type arcade vue du dessus prenant place dans une arène. Des ennemis apparaissent de manière aléatoire, par vagues de nombre croissante. Pour les tuer, il faut orienter les épées de manière à ce qu'elles touchent les ennemis et appuyer sur espace. Plusieurs types d'ennemis sont disponibles.
Code Python
import pyxel
pyxel.init(256, 256, fps=60, title="Nuit du Code")
pyxel.load('U4.pyxres')
game=True
apparu=False
liste_ennemi=[]
joueur={'x' : 128, 'y' : 128, 'vx' : 0, 'vy' : 0, 'life' : 5, 'power' : 1, 'score' : 0, 'debuff' : 0, 'debuff_temps' : 0, 'vitesse' : 2, 'level' : 1, 'orientation' : 'RIGHT'}
epee={'x' :112 , 'y' : 112, 'rotation' : 90}
w=0
pyxel.playm(0,sec=0, loop=True)
def move_ennemi():
for i in range(len(liste_ennemi)):
liste_ennemi[i]['dx'] = joueur['x'] - liste_ennemi[i]['x']
liste_ennemi[i]['dy'] = joueur['y'] - liste_ennemi[i]['y']
liste_ennemi[i]['x']+=liste_ennemi[i]['dx']*0.01
liste_ennemi[i]['y']+=liste_ennemi[i]['dy']*0.01
def mort_ennemi():
global liste_ennemi, apparu, joueur
mort=[]
for k in range(len(liste_ennemi)):
if liste_ennemi[k]['life'] <= 0:
joueur['score']+=1
mort.append(k)
for i in range(len(mort)):
del liste_ennemi[mort[i]-i]
if len(liste_ennemi)==0:
apparu=False
def spawner():
global liste_ennemi, joueur, apparu
a=pyxel.rndi(0, 240)
b=pyxel.rndi(0, 240)
if apparu==False:
for i in range(joueur['level']*2):
c=pyxel.rndi(0,2)
if c==0:
ennemi={'x' : a, 'y' : b, 'life' : 2, 'power' : 1, 'buff': 0, 'dx' : 0, 'dy' : 0, 'X1':8, 'Y1':80, 'X2':0, 'Y2':80, 'type' : 'vert'}
elif c==1:
ennemi={'x' : a, 'y' : b, 'life' : 2, 'power' : 1, 'buff': 0, 'dx' : 0, 'dy' : 0, 'X1':8, 'Y1':72, 'X2':0, 'Y2':72, 'type' : 'rouge'}
else:
ennemi={'x' : a, 'y' : b, 'life' : 2, 'power' : 1, 'buff': 0, 'dx' : 0, 'dy' : 0, 'X1':8, 'Y1':64, 'X2':0, 'Y2':64, 'type' : 'bleu'}
a=pyxel.rndi(0, 240)
b=pyxel.rndi(0, 240)
liste_ennemi.append(ennemi)
apparu=True
def mort_joueur():
global joueur, game, liste_ennemi
if joueur['life'] <= 0:
game=False
liste_ennemi=[]
if game==False:
if pyxel.btnp(pyxel.KEY_R):
joueur={'x' : 128, 'y' : 128, 'vx' : 0, 'vy' : 0, 'life' : 3, 'power' : 1, 'score' : 0, 'debuff' : 0, 'debuff_temps' : 0, 'vitesse' : 2, 'level' : 1, 'orientation' : 'RIGHT'}
liste_ennemi=[]
game=True
def level():
if joueur['score'] == 2:
joueur['level'] += 1
joueur['score'] = 0
def pepee():
for k in range(len(liste_ennemi)):
if liste_ennemi[k]['x']-16 < joueur['x'] < liste_ennemi[k]['x']+16 and liste_ennemi[k]['y']-16 < joueur['y'] < liste_ennemi[k]['y']+16:
joueur['life']-=1
liste_ennemi[k]['x']-=16
liste_ennemi[k]['y']-=16
if pyxel.btnp(pyxel.KEY_SPACE):
for i in range(len(liste_ennemi)):
if liste_ennemi[i]['x']-16 < epee['x'] < liste_ennemi[i]['x']+16 and liste_ennemi[i]['y']-16 < epee['y'] < liste_ennemi[i]['y']+16:
liste_ennemi[i]['life']-=1
pyxel.blt(liste_ennemi[i]['x'],liste_ennemi[i]['y'],0,liste_ennemi[i]['X2'],liste_ennemi[i]['Y2'],8,8,None,0,2)
if pyxel.frame_count % 17 == 0:
pyxel.blt(liste_ennemi[i]['x'],liste_ennemi[i]['y'],0,liste_ennemi[i]['X1'],liste_ennemi[i]['Y1'],8,8,None,0,2)
def move_player():
if pyxel.btn(pyxel.KEY_LEFT):
joueur['vx'] -= 1
joueur['orientation'] = 'LEFT'
epee['x']=joueur['x']-16
epee['y']=joueur['y']
epee['rotation']=270
if pyxel.btn(pyxel.KEY_RIGHT):
joueur['orientation'] = 'RIGHT'
joueur['vx'] += 1
epee['x']=joueur['x']+16
epee['y']=joueur['y']
epee['rotation']=90
if pyxel.btn(pyxel.KEY_UP):
joueur['orientation'] = 'UP'
joueur['vy'] -=1
epee['x']=joueur['x']
epee['y']=joueur['y']-16
epee['rotation']=0
if pyxel.btn(pyxel.KEY_DOWN):
joueur['orientation'] = 'DOWN'
joueur['vy'] +=1
epee['x']=joueur['x']
epee['y']=joueur['y']+16
epee['rotation']=180
joueur['vx']*=0.7
joueur['vy']*=0.7
joueur['x']+=joueur['vx']*joueur['vitesse']
joueur['y']+=joueur['vy']*joueur['vitesse']
if joueur['orientation'] == 'LEFT':
epee['x']=joueur['x']-16
epee['y']=joueur['y']
for k in range(len(liste_ennemi)):
if liste_ennemi[k]['x']-15 < joueur['x'] < liste_ennemi[k]['x']+15 and liste_ennemi[k]['y']-15 < joueur['y'] < liste_ennemi[k]['y']+15:
liste_ennemi[k]['x']-=16
liste_ennemi[k]['y']-=16
if joueur['orientation'] == 'RIGHT':
epee['x']=joueur['x']+16
epee['y']=joueur['y']
for k in range(len(liste_ennemi)):
if liste_ennemi[k]['x']-15 < joueur['x'] < liste_ennemi[k]['x']+15 and liste_ennemi[k]['y']-15 < joueur['y'] < liste_ennemi[k]['y']+15:
liste_ennemi[k]['x']-=16
liste_ennemi[k]['y']-=16
if joueur['orientation'] == 'UP':
epee['x']=joueur['x']
epee['y']=joueur['y']-16
for k in range(len(liste_ennemi)):
if liste_ennemi[k]['x']-15 < joueur['x'] < liste_ennemi[k]['x']+15 and liste_ennemi[k]['y']-15 < joueur['y'] < liste_ennemi[k]['y']+15:
liste_ennemi[k]['x']-=16
liste_ennemi[k]['y']-=16
if joueur['orientation'] == 'DOWN':
epee['x']=joueur['x']
epee['y']=joueur['y']+16
for k in range(len(liste_ennemi)):
if liste_ennemi[k]['x']-15 < joueur['x'] < liste_ennemi[k]['x']+15 and liste_ennemi[k]['y']-15 < joueur['y'] < liste_ennemi[k]['y']+15:
liste_ennemi[k]['x']-=16
liste_ennemi[k]['y']-=16
def update():
if game==True:
move_player()
joueur['x']=max(0, min(joueur['x'], 240))
joueur['y']=max(0, min(joueur['y'], 240))
pepee()
level()
spawner()
move_ennemi()
mort_ennemi()
mort_joueur()
def draw():
global w
pyxel.cls(0)
pyxel.text(75, 10, "Bienvenue dans Arena Fight", 8, font=None)
pyxel.text(100, 20, "Le but ?", 8, font=None)
pyxel.text(20, 40, "Survivre le plus longtemps possible sans mourrir", 8, font=None)
pyxel.text(10, 60, "Pour tuer des ennemis, approche toi d'eux sans te faire",8,font=None)
pyxel.text(10,80,"tourcher et lorsque l'epee les touches, appuie sur ESPACE",8,font=None)
pyxel.text(70, 100, "Appuie sur O pour commencer", 8, font=None)
pyxel.text(70, 120, "Appuie sur R pour recommencer", 8, font=None)
if pyxel.btn(pyxel.KEY_O):
w=1
if w==1:
pyxel.cls(0)
a = 0
while a >= 0 and a <= 256:
pyxel.blt(a,0,0,0,24,8,8,None,0,2)
pyxel.blt(0,a,0,0,24,8,8,None,0,2)
pyxel.blt(256-8,a,0,0,24,8,8,None,0,2)
pyxel.blt(a,256-8,0,0,24,8,8,None,0,2)
a += 8
pyxel.blt(4,4,0,8,0,8,8,None,45+180+90,2)
pyxel.blt(244,4,0,8,0,8,8,None,45,2)
pyxel.blt(4,244,0,8,0,8,8,None,45+180,2)
pyxel.blt(244,244,0,8,0,8,8,None,90+45,2)
pyxel.blt(4,122,0,8,0,8,8,None,180+90,2)
pyxel.blt(244,122,0,8,0,8,8,None,90,2)
pyxel.blt(122,4,0,8,0,8,8,None,0,2)
pyxel.blt(122,244,0,8,0,8,8,None,180,2)
pyxel.blt(145,48,0,0,48,8,8,None,0,2)
pyxel.blt(71,214,0,0,48,8,8,None,0,2)
pyxel.blt(203,150,0,0,48,8,8,None,0,2)
pyxel.blt(78,123,0,0,48,8,8,None,0,2)
pyxel.blt(94,84,0,0,48,8,8,None,0,2)
pyxel.blt(joueur['x'],joueur['y'],0,0,56,8,8,None,0,2)
pyxel.blt(epee['x'],epee['y'],0,24,0,8,8,None,epee['rotation'],2)
for n in range(len(liste_ennemi)):
if liste_ennemi[n]['type'] == 'rouge':
pyxel.blt(liste_ennemi[n]['x'],liste_ennemi[n]['y'],0,liste_ennemi[n]['X1'],liste_ennemi[n]['Y1'],8,8,None,0,2)
elif liste_ennemi[n]['type'] == 'bleu':
pyxel.blt(liste_ennemi[n]['x'],liste_ennemi[n]['y'],0,liste_ennemi[n]['X1'],liste_ennemi[n]['Y1'],8,8,None,0,2)
elif liste_ennemi[n]['type'] == 'vert':
pyxel.blt(liste_ennemi[n]['x'],liste_ennemi[n]['y'],0,liste_ennemi[n]['X1'],liste_ennemi[n]['Y1'],8,8,None,0,2)
pyxel.text(20,12, "Score :"+ str(joueur['level']), 7)
pyxel.text(20,22, "Level :"+ str(joueur['score']), 7)
pyxel.text(20,32, "Life :"+ str(joueur['life']), 7)
if joueur['life'] <= 0:
pyxel.text(20,42, "Game Over", 10)
pyxel.run(draw, update)