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)