Necesito ayuda: codificación de programa en Python Pyxel

Resuelto
EmixWarrior64 -  
 EmixWarrior64 -
Buenas noches, Estoy escribiendo un programa pero estoy atascado. El programa está en Pyxel y me quedé atascado en una última parte (ver def vitesse_ennemis()) lo que me fastidia es la gestión de la dificultad (aquí la velocidad de los enemigos, cada 10 segundos quiero que el enemigo sea un poco más rápido). Si alguien pudiera ayudarme, por favor, es para un proyecto NSI que estoy intentando hacer. Una precisión pequeña: tampoco logro mostrar la puntuación cuando pierdo una vida (ver el programa al final), si alguien pudiera ayudarme también porque franchement no lo consigo... Aquí está el programa:
# ******************************************************************************
# ******* Proyecto : juego donde los enemigos se vuelven cada vez más rápidos *******
# ******************************************************************************
import pyxel, random

# tamaño de la ventana
128x128 pixeles - no modificar
pyxel.init(128, 128, title="Nuit du code")

# posición inicial del buque
# (origen de las posiciones : esquina superior izquierda)
vaisseau_x = 60
vaisseau_y = 60

# vidas
vies = 1

# inicialización de los enemigos
ennemis_liste = []

# inicialización de la puntuación
score = 0

def vaisseau_deplacement(x, y):
    """desplazamiento con las teclas de dirección"""
    if pyxel.btn(pyxel.KEY_RIGHT):
        if (x < 120) : x = x + 1.5
    if pyxel.btn(pyxel.KEY_LEFT):
        if (x > 0) : x = x - 1.5
    if pyxel.btn(pyxel.KEY_DOWN):
        if (y < 120) : y = y + 1.5
    if pyxel.btn(pyxel.KEY_UP):
        if (y > 0) : y = y - 1.5
    return x, y

def ennemis_creation(ennemis_liste):
    """création aléatoire des ennemis"""
    # un ennemi par seconde
    if (pyxel.frame_count % 30 == 0):
        ennemis_liste.append([random.randint(0, 120), 0])
    return ennemis_liste

def ennemis_deplacement(ennemis_liste):
    """déplacement des ennemis vers le haut et suppression s'ils sortent du cadre"""
    for ennemi in ennemis_liste:
        ennemi[1] += 1
        if ennemi[1]>128:
            ennemis_liste.remove(ennemi)
    return ennemis_liste

def vaisseau_suppression(vies):
    """disparition du vaisseau et d'un ennemi si contact"""
    for ennemi in ennemis_liste:
        if ennemi[0] <= vaisseau_x+6 and ennemi[1] <= vaisseau_y+6 and ennemi[0]+6 >= vaisseau_x and ennemi[1]+6 >= vaisseau_y:
            ennemis_liste.remove(ennemi)
            vies = 0
    return vies

def vitesse_ennemis(ennemis_liste):
    for ennemi in ennemis_liste:
        ennemi[1] += 1
        if (pyxel.frame_count % 30 == 0):
            ennemi[1] + 1

# ==========================================================
# ========= Mise à jour de toutes les informations =========
# ==========================================================

def update():
    """mise à jour des variables (30 fois par seconde)"""
    global vaisseau_x, vaisseau_y, ennemis_liste, vies

    # mise à jour de la position du vaisseau
    vaisseau_x, vaisseau_y = vaisseau_deplacement(vaisseau_x, vaisseau_y)

    # creation des ennemis
    ennemis_liste = ennemis_creation(ennemis_liste)

    # mise a jour des positions des ennemis
    ennemis_liste = ennemis_deplacement(ennemis_liste)

    # suppression du vaisseau et ennemi si contact
    vies = vaisseau_suppression(vies)

# ==========================================================
# ========================== DRAW ==========================
# ==========================================================

def draw():
    """création des objets (30 fois par seconde)"""
    pyxel.cls(0)

    # si le vaisseau possede des vies le jeu continue
    if vies > 0:
        # vaisseau (carre 8x8)
        pyxel.rect(vaisseau_x, vaisseau_y, 8, 8, 1)

        # ennemis
        for ennemi in ennemis_liste:
            pyxel.rect(ennemi[0], ennemi[1], 6, 6, 4)

    # sinon:
    GAME OVER
    else:
        pyxel.text(49,49, 'GAME OVER', 7)
        pyxel.text(20,60, 'Ton score est de :', 7)
        #pyxel.text(30,60, score, 7)
        print("Ton score est de :", score)

pyxel.run(update, draw)

1 respuesta

  1. xHaMaz Mensajes publicados 123 Fecha de registro   Estado Miembro Última intervención   18
     
    Buenas noches, para aumentar la velocidad de los enemigos cada 10 segundos puedes usar un contador de frames que verifique si el número de frames es múltiplo de un cierto número. Puedes usar esa verificación en tu función "vitesse_ennemis" para aumentar la velocidad de cada enemigo en tu lista, quedaría así:
    def vitesse_ennemis(ennemis_liste):     # Aumenta la velocidad de cada enemigo cada 10 segundos (300 frames)     if pyxel.frame_count % 300 == 0:         for ennemi in ennemis_liste:             ennemi[1] += 1

    Y para mostrar la puntuación cuando pierdes una vida, puedes usar la función "pyxel.text" en la función "draw". Esto permite mostrar texto en la pantalla. Quedaría así:

    def draw():     """affichage de tous les éléments"""     global vies, score     # borrar la pantalla     pyxel.cls(0)     # mostrar la nave     pyxel.blt(vaisseau_x, vaisseau_y, 0, 0, 0, 7, 7)     # mostrar los enemigos     for ennemi in ennemis_liste:         pyxel.blt(ennemi[0], ennemi[1], 0, 7, 0, 7, 7)     # mostrar la puntuación     pyxel.text(0, 0, "Score: " + str(score), 7)     # mostrar las vidas restantes     pyxel.text(80, 0, "Vies: " + str(vies), 7)     # mostrar la puntuación cuando pierdas una vida     if vies == 0:         pyxel.text(40, 40, "Game Over", 7)         pyxel.text(40, 50, "Score: " + str(score), 7)

    Manténme informado

    1
    1. EmixWarrior64
       

      Gracias tío, acabo de verlo, acabo de probar y funcionó!!!!!!!!

      0