如果enjuego==假pygam

2024-10-01 19:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用pygame创建一个游戏,当我试图在False中使用变量来打印文本并停止音乐时遇到了一个问题,但它似乎没有做到这一点。不启动任何错误只是不运行游戏结束

import pygame,sys
from pygame.locals import *
from clases import nave
from clases import Invasor as Enemigo

#Variables globales
ancho =900
alto =480
listaEnemigo=[]

def detenerTodo():
    for enemigo in listaEnemigo:
        for disparo in enemigo.listaDisparo:
            enemigo.listaDisparo.remove(disparo)

        enemigo.conquista=True

def cargarEnemigos():
    posx=100
    for x in range (1,5):
        enemigo=Enemigo(posx,100,40,'imagenes/marcianoA.jpg','imagenes/MarcianoB.jpg')
        listaEnemigo.append(enemigo)
        posx=posx+200

    posx=100
    for x in range (1,5):
        enemigo=Enemigo(posx,0,40,'imagenes/Marciano2A.jpg','imagenes/Marciano2B.jpg')
        listaEnemigo.append(enemigo)
        posx=posx+200

    posx=100
    for x in range (1,5):
        enemigo=Enemigo(posx,-100,40,'imagenes/Marciano3A.jpg','imagenes/Marciano3B.jpg')
        listaEnemigo.append(enemigo)
        posx=posx+200


def SpaceInvader():
    pygame.init()

    ventana = pygame.display.set_mode((ancho,alto))
    pygame.display.set_caption("Primer Juego")

    imagenfondo=pygame.image.load('imagenes/Fondo.jpg')

    pygame.mixer.music.load('sonidos/fastinvader1.wav')
    pygame.mixer.music.play(411)

    Fuente=pygame.font.SysFont("Arial",31)
    texto=Fuente.render("Fin del Juego",0,(120,100,40))

    jugador=nave.naveEspacial(ancho,alto)
    cargarEnemigos()



    enjuego=True
    reloj=pygame.time.Clock()
    while True:
     reloj.tick(60)

     tiempo=pygame.time.get_ticks()/1000

     for eventos in pygame.event.get():
         if eventos.type == pygame.QUIT:
            sys.exit()

         if enjuego==True:
            if eventos.type==pygame.KEYDOWN:
                if eventos.key==K_LEFT:
                    jugador.movimientoIzquierda()

                elif eventos.key==K_RIGHT:
                    jugador.movimientoDerecha()

                elif eventos.key==K_b:
                    x,y=jugador.rect.center
                    jugador.disparar(x,y)

     ventana.blit(imagenfondo,(0,0))



     jugador.dibujar(ventana)


     if len(jugador.listaDisparo)>0:
        for x in jugador.listaDisparo:
            x.dibujar(ventana)
            x.trayectoria()

            if x.rect.top<-10:
                jugador.listaDisparo.remove(x)
            else:
                for enemigo in listaEnemigo:
                    if x.rect.colliderect(enemigo.rect):
                        listaEnemigo.remove(enemigo)
                        jugador.listaDisparo.remove(x)

     if len(listaEnemigo)>0:
        for enemigo in listaEnemigo:
            enemigo.comportamiento(tiempo)
            enemigo.dibujar(ventana)

            if enemigo.rect.colliderect(jugador.rect):
                jugador.destruccion()
                enjuego==False
                detenerTodo()

            if len(enemigo.listaDisparo)>0:
               for x in enemigo.listaDisparo:
                   x.dibujar(ventana)
                   x.trayectoria()

                   if x.rect.colliderect(jugador.rect):
                    jugador.destruccion()
                    enjuego==False
                    detenerTodo()

                   if x.rect.top>900:
                       enemigo.listaDisparo.remove(x)
                   else:
                    for disparo in jugador.listaDisparo:
                        if x.rect.colliderect(disparo.rect):
                            jugador.listaDisparo.remove(disparo)
                            enemigo.listaDisparo.remove(x)


     if enjuego==False:
        pygame.mixer.music.fadeout(3000)
        ventana.blit(texto,(300,300))

     pygame.display.update()

SpaceInvader()

Tags: inrectforifpygameremovejpgposx

热门问题