예제 #1
0
 def load_game(self):
     pygame.init()
     self.screen = pygame.display.set_mode(self.size_window)
     pygame.display.set_caption("breakout")
     self.escenario = Escenario(self.screen)
     self.collision = Collision(5)
     self.pelota = Pelota(self.screen, 16, 16, "sprites/pelota_white.png")
     self.pelota.set_velocity(2, 5)
     self.raquet = Raqueta(self.screen, 74, 12, "sprites/raquet_white.png")
     self.raquet.set_position(300, 550)
     self.bricks = self.load_bricks(12, self.nivel)
     self.tam_list = len(self.bricks)
     self.loop()
예제 #2
0
def game():
      pygame.init()
      pygame.mixer.init()
      screen = pygame.display.set_mode( (SCREEN_WIDTH,SCREEN_HEIGHT) )
      jugando = True
      pygame.display.set_caption( "Pelota" )
      background_image = util.cargar_imagen('imagenes/fondo.jpg');
      fuente = pygame.font.Font(None, 30)
      pygame.mouse.set_visible( False )
      temporizador = pygame.time.Clock()
      pelota = Pelota()      
      while jugando:
          pelota.update()
          for event in pygame.event.get():
              if event.type == pygame.QUIT:
                  sys.exit()
          screen.blit(background_image, (0,0))
          screen.blit(pelota.imagen, pelota.rect)

          pygame.display.update()
          pygame.time.delay(20)
예제 #3
0
    def loadmodels(self):
        #aqui se deben cargar los modelos para el juego
        #carga los jugadores
        
        self.player1 = Jugador(self)

        self.player2 = Jugador(self,False)

        #coloca al jugador 1
        self.player1.modelo.setR(90)
        self.player1.modelo.setPos(-130,0,20)

        #coloca al jugador 2
        self.player2.modelo.setR(90)
        self.player2.modelo.setPos(170,0,20)

        #iniciar marcador
        self.marcador=Marcador(self)

        #inicia y coloca pelota
        self.pelota = Pelota(self)
        
        #inicia el manejador de los eventos de las colisiones
        self.manejador = ManejadorDeColisiones(self)

        #cargamos el fondo
        self.fondo= loader.loadModel("Modelos/fondo");
        self.fondo.reparentTo(render)

        #colocamos el fondo
        self.fondo.setPos(20,300,-15)
        self.t=7
        self.fondo.setScale(self.t,self.t,self.t)
        self.fondo.setHpr(90, 0, -90)

        #cargamos la textura del fondo
        self.tex = loader.loadTexture('Img/fondo.jpg')
        self.fondo.setTexture(self.tex)
        #si activamos esta parte no se veran marcas grises a los lados. Aun espero que me digais como queda mejor
        """
        
        self.fondo2= loader.loadModel("Modelos/fondo");
        self.fondo2.reparentTo(render)
        self.fondo2.setPos(20,320,-15)
        self.t2=200
        self.fondo2.setScale(self.t2,self.t2,self.t2)
        self.fondo2.setHpr(90, 0, -90)
        self.tex = loader.loadTexture('Img/fondo.jpg')

        self.fondo2.setTexture(self.tex)
        """

        #coloca la camara
        self.camera.setPos(20,-500,-20)

        #carga y coloca la luz 1
        dlight = DirectionalLight('my dlight')
        dlnp = render.attachNewNode(dlight)
        dlnp.setHpr(20, 20, 0)
        render.setLight(dlnp)

        #carga y coloca la luz 2
        dlight2 = DirectionalLight('my dlight2')
        dlight2.setColor(Vec4(0.2, 0.2, 0.2, 0.1))
        dlnp2 = render.attachNewNode(dlight2)
        dlnp2.setHpr(180, -20, 0)
        render.setLight(dlnp2)

        #cargando sonidos
        self.sonidofondo = base.loader.loadSfx("sound/fondo.mp3")
        self.gol=base.loader.loadSfx("sound/gol.mp3")
        self.golpe = base.loader.loadSfx("sound/golpe.mp3")
        self.sonidovictoria=base.loader.loadSfx("sound/victoria.mp3")
        self.sonidoderrota=base.loader.loadSfx("sound/derrota.mp3")
        #ponemos en un bucle el sonido de fondo
        self.sonidofondo.setLoop(True)
        #empezamos a reproducir el sonido de fondo
        self.sonidofondo.play()
예제 #4
0
class MyApp(ShowBase):
    def __init__(self):
            ShowBase.__init__(self)

            #cambiando variables de configuracion
            ConfigVariableString('clock-mode','limited')
            ConfigVariableDouble('clock-frame-rate','60')
            ConfigVariableString('audio-library-name','p3openal_audio')

            # Disable the camera trackball controls.
            self.disableMouse()

            #iniciamos la partida
            self.inicia_partida()

            #self.taskMgr.add(player1c,'control del jugador 1', extraArgs=[self], appendTask=True)
            #self.taskMgr.add(player2c,'control del jugador 2', extraArgs=[self], appendTask=True)



    def init_variables(self):
        #inicializa variables
        self.p1 = 1
        self.p2 = 1
        self.px = 1
        self.py = 0
        self.pz = 20
        self.i=5
        self.a=0
        self.abajo1 = False
        self.arriba1 = False
        self.abajo2 = False
        self.arriba2 = False
        #variable para determinar el tipo de IA que se va a aplicar
        self.versusIA=True
        #variable para los puntos del jugador
        self.puntos1=0
        #variable para los puntos de la IA
        self.puntos2=0
        

    def loadmodels(self):
        #aqui se deben cargar los modelos para el juego
        #carga los jugadores
        
        self.player1 = Jugador(self)

        self.player2 = Jugador(self,False)

        #coloca al jugador 1
        self.player1.modelo.setR(90)
        self.player1.modelo.setPos(-130,0,20)

        #coloca al jugador 2
        self.player2.modelo.setR(90)
        self.player2.modelo.setPos(170,0,20)

        #iniciar marcador
        self.marcador=Marcador(self)

        #inicia y coloca pelota
        self.pelota = Pelota(self)
        
        #inicia el manejador de los eventos de las colisiones
        self.manejador = ManejadorDeColisiones(self)

        #cargamos el fondo
        self.fondo= loader.loadModel("Modelos/fondo");
        self.fondo.reparentTo(render)

        #colocamos el fondo
        self.fondo.setPos(20,300,-15)
        self.t=7
        self.fondo.setScale(self.t,self.t,self.t)
        self.fondo.setHpr(90, 0, -90)

        #cargamos la textura del fondo
        self.tex = loader.loadTexture('Img/fondo.jpg')
        self.fondo.setTexture(self.tex)
        #si activamos esta parte no se veran marcas grises a los lados. Aun espero que me digais como queda mejor
        """
        
        self.fondo2= loader.loadModel("Modelos/fondo");
        self.fondo2.reparentTo(render)
        self.fondo2.setPos(20,320,-15)
        self.t2=200
        self.fondo2.setScale(self.t2,self.t2,self.t2)
        self.fondo2.setHpr(90, 0, -90)
        self.tex = loader.loadTexture('Img/fondo.jpg')

        self.fondo2.setTexture(self.tex)
        """

        #coloca la camara
        self.camera.setPos(20,-500,-20)

        #carga y coloca la luz 1
        dlight = DirectionalLight('my dlight')
        dlnp = render.attachNewNode(dlight)
        dlnp.setHpr(20, 20, 0)
        render.setLight(dlnp)

        #carga y coloca la luz 2
        dlight2 = DirectionalLight('my dlight2')
        dlight2.setColor(Vec4(0.2, 0.2, 0.2, 0.1))
        dlnp2 = render.attachNewNode(dlight2)
        dlnp2.setHpr(180, -20, 0)
        render.setLight(dlnp2)

        #cargando sonidos
        self.sonidofondo = base.loader.loadSfx("sound/fondo.mp3")
        self.gol=base.loader.loadSfx("sound/gol.mp3")
        self.golpe = base.loader.loadSfx("sound/golpe.mp3")
        self.sonidovictoria=base.loader.loadSfx("sound/victoria.mp3")
        self.sonidoderrota=base.loader.loadSfx("sound/derrota.mp3")
        #ponemos en un bucle el sonido de fondo
        self.sonidofondo.setLoop(True)
        #empezamos a reproducir el sonido de fondo
        self.sonidofondo.play()


    def pelotac(self,task):
            self.pelota.modelo.setPos(self.px,self.py,self.pz)
            self.px = self.px + 1
            if self.px > 100:
                    self.px = -100

            #self.pelota.setR(self.a)
            #self.a+=50
            #if self.a>360:
            #    self.a=0
            #self.i+=0.1
            return task.cont



    def arriba1true(self):
            self.player1.arriba= True
    def arriba1false(self):
            self.player1.arriba= False
    def abajo1true(self):
            self.player1.abajo= True
    def abajo1false(self):
            self.player1.abajo= False
    def arriba2true(self):
            self.player2.arriba= True
    def arriba2false(self):
            self.player2.arriba= False
    def abajo2true(self):
            self.player2.abajo= True
    def abajo2false(self):
            self.player2.abajo= False

    def puntojugador2(self):
        self.puntos2+=1
        self.pelota.start()

    def puntojugador1(self):
        self.puntos1+=1
        self.pelota.start()

    def inicia_partida(self):

            # inicializa variables
            self.init_variables()
            #cargar los modelos graficos y de sonido
            self.loadmodels()
            #introducimos las teclas que debe escuchar por teclado para el jugador 1
            self.accept('w',self.arriba1true)
            self.accept('w-up',self.arriba1false)
            self.accept('s',self.abajo1true)
            self.accept('s-up',self.abajo1false)
            #inicia la IA o habilita el control del segundo jugador segun la variable "versusIA"
            if(self.versusIA==False):
                #introducimos las teclas que debe escuchar por teclado para el jugador 2
                self.accept('o',self.arriba2true)
                self.accept('o-up',self.arriba2false)
                self.accept('l',self.abajo2true)
                self.accept('l-up',self.abajo2false)
                
            else:
                #si vamos a jugar con IA elegimos con la que queremos jugar
                self.Ia=IA2(self)
                #metemos el metodo update de la IA al task Manager
                self.taskMgr.add(self.Ia.update,'IA', extraArgs=[self], appendTask=True)
예제 #5
0
def main():
    # Crea la ventana:
    fuente = pygame.font.Font(None, 300)
    fuente2 = pygame.font.Font(None, 70)
    cont1 = 0
    cont2 = 0
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Cabezones 1.0")
    arcoIzq = Arco.Arco(38, HEIGHT / 2)
    arcoDer = Arco.Arco(WIDTH - 38, HEIGHT / 2)
    arcoDer.imagen = pygame.transform.flip(arcoDer.imagen, True, False)
    personaje1 = Personaje.Cabeza(900, 210, 0.5, 0.5, personajes[0], K_DOWN,
                                  K_UP, K_RIGHT, K_LEFT, K_RCTRL)
    personaje2 = Personaje.Cabeza(100, 210, 0.5, 0.5, personajes[1], K_s, K_w,
                                  K_d, K_a, K_c)
    personaje2.imagen = pygame.transform.flip(personaje2.imagen, True, False)

    pelota1 = Pelota.Pelota(WIDTH / 2, HEIGHT / 2, 0.5)
    clock = pygame.time.Clock()
    a = True

    while a == True:
        time = clock.tick(60)
        keys = pygame.key.get_pressed()

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

        personaje1.mover(keys, time, HEIGHT, WIDTH, pelota1.rectangulo)
        personaje2.mover(keys, time, HEIGHT, WIDTH, pelota1.rectangulo)

        #validar Gol--------------------------------------------------------
        if pelota1.rectangulo.centerx < 30:
            if pelota1.rectangulo.top > arcoDer.rectangulo.top:
                if pelota1.rectangulo.bottom < arcoDer.rectangulo.bottom:
                    cont1 = cont1 + 1

                    pelota1.rectangulo.centerx = WIDTH / 2
                    pelota1.rectangulo.centery = HEIGHT / 2
        if pelota1.rectangulo.centerx > WIDTH - 30:
            if pelota1.rectangulo.top > arcoDer.rectangulo.top:
                if pelota1.rectangulo.bottom < arcoDer.rectangulo.bottom:
                    cont2 = cont2 + 1

                    pelota1.rectangulo.centerx = WIDTH / 2
                    pelota1.rectangulo.centery = HEIGHT / 2
#Validar Afuera.------------------------------------------------------
        if pelota1.rectangulo.left < 7:
            pelota1.rectangulo.centerx = WIDTH / 2
            pelota1.rectangulo.centery = HEIGHT / 2
        if pelota1.rectangulo.right > WIDTH - 7:
            pelota1.rectangulo.centerx = WIDTH / 2
            pelota1.rectangulo.centery = HEIGHT / 2

        gol1 = fuente.render(str(cont1), 0, (255, 255, 255))
        gol2 = fuente.render(str(cont2), 0, (255, 255, 255))
        ganador1 = fuente2.render("EL Jugador 1 es el Ganador", 0,
                                  (255, 255, 255))
        ganador2 = fuente2.render("EL Jugador 2 es el Ganador", 0,
                                  (255, 255, 255))

        if cont1 == 10:
            screen.blit(ganador1, (200, 180))
            screen.blit(gol1, (WIDTH - 400, HEIGHT / 2))
            screen.blit(gol2, (280, HEIGHT / 2))
        elif cont2 == 10:
            screen.blit(ganador2, (200, 180))
            screen.blit(gol1, (WIDTH - 400, HEIGHT / 2))
            screen.blit(gol2, (280, HEIGHT / 2))
        else:
            #actualiza objeto screen

            screen.blit(fondo1, (0, 0))
            screen.blit(gol1, (WIDTH - 400, HEIGHT / 2))
            screen.blit(gol2, (280, HEIGHT / 2))
            screen.blit(pelota1.imagen, pelota1.rectangulo)
            screen.blit(personaje1.imagen, personaje1.rectangulo)
            screen.blit(personaje2.imagen, personaje2.rectangulo)
            screen.blit(arcoIzq.imagen, arcoIzq.rectangulo)
            screen.blit(arcoDer.imagen, arcoDer.rectangulo)

    # Imprimimos los cambios en la pantalla:
        pygame.display.flip()
        pygame.display.update()
        screen.blit(fondo1, (0, 0))
예제 #6
0
def main():
    pygame.init()
    pygame.mixer.init()
    pygame.mixer.music.load(soundDir + "/musica.ogg")
    pygame.mixer.music.play(loops=0)

    screen = pygame.display.set_mode((width, height))
    pygame.display.set_caption("Pong para 2 jugadores")

    fondo = load_image("fondo.jpg", imgDir, alpha=False).convert()
    sonidoGolpe = loadSound("pelota.ogg", soundDir)
    sonidoPunto = loadSound("punto.ogg", soundDir)

    bola = Pelota(sonidoGolpe, sonidoPunto)
    jugador1 = Palas(15)
    jugador2 = Palas(625)

    reloj = pygame.time.Clock(
    )  #Creamos un reloj que controla el tiempo de juego
    pygame.key.set_repeat(
        1, 12
    )  # Activa repeticion de teclas, primer argumento tiempo de retraso segundo argumento, seungo argumento tiempo entre cada envio en milisegundos
    pygame.mouse.set_visible(
        False)  #Desactiva el cursor dentro de la ventana del juego

    puntos = [0, 0]
    while True:
        #Condicion de victoria
        if (puntos[0] == 5):
            messagebox.showinfo("Victoria", "Ganador el jugador 1")
            sys.exit()
        elif (puntos[1] == 5):
            messagebox.showinfo("Victoria", "Ganador el jugador 2")
            sys.exit()

        reloj.tick(60)  #Seleccionamos los fps en este caso 60

        jugador1.humano(
        )  #Actualizamos la posicion de la paleta del jugador 1 y 2
        jugador2.humano()
        puntos = bola.actualizar(
        )  #Al inicio del bucle actualizamos la posicion de la bola

        bola.colision(jugador1)  #Control de colisiones de la bola
        bola.colision(jugador2)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:  #Cuando se pulsa una tecla
                if event.key == K_UP:  #Si se pulsa la tecla arriba
                    jugador2.rect.centery -= 5
                elif event.key == K_DOWN:  #Si se pula la tecla abajo
                    jugador2.rect.centery += 5
                elif event.key == K_w:
                    jugador1.rect.centery -= 5
                elif event.key == K_s:
                    jugador1.rect.centery += 5
            elif event.type == pygame.KEYUP:  #Cuando se suelta una tecla
                if event.key == K_UP:  #Si se suelta la tecla arriba
                    jugador2.rect.centery += 0
                elif event.key == K_DOWN:  #Si se suelta la tecla abajo
                    jugador2.rect.centery += 0
                elif event.key == K_w:
                    jugador1.rect.centery += 0
                elif event.key == K_s:
                    jugador1.rect.centery += 0
        #Nombre de jugadores
        n_jug1, n_jug1_rect = texto("Jugador 1", width / 4, height / 2,
                                    60)  #Texto, posicionx, posiciony, tamaño
        n_jug2, n_jug2_rect = texto("Jugador 2", width - width / 4, height / 2,
                                    60)

        #Sistema de puntuacion
        p_jug1, p_jug1_rect = texto(str(puntos[0]), width / 4, 40, 60)
        p_jug2, p_jug2_rect = texto(str(puntos[1]), width - width / 4, 40, 60)

        #Actualiza la pantalla por cada iteracion del bucle
        screen.blit(fondo, (0, 0))
        screen.blit(p_jug1, p_jug1_rect)
        screen.blit(p_jug2, p_jug2_rect)
        screen.blit(n_jug1, n_jug1_rect)
        screen.blit(n_jug2, n_jug2_rect)
        screen.blit(bola.image, bola.rect)
        screen.blit(jugador1.image, jugador1.rect)
        screen.blit(jugador2.image, jugador2.rect)
        #Guarda los cambios
        pygame.display.flip()
예제 #7
0
tablero = pygame.display.set_mode([600, 600])
# Recuperamos el tablero de juego para poder operar con él
tableroJuego = pygame.Surface(tablero.get_size())

# Creamos las variables responsable de controlar la salida y fin del juego
gameOver = False
exitJuego = False

# Creamos el reloj que controlará el tiempo de juego
reloj = pygame.time.Clock()

# Cargamos los componentes visuales del juego
spTotal = pygame.sprite.Group()

spPelota = pygame.sprite.Group()
valorPelota = Pelota()
spPelota.add(valorPelota)
spTotal.add(valorPelota)

spPortero = pygame.sprite.Group()
valorPortero = Portero()
spPortero.add(valorPortero)
spTotal.add(valorPortero)

spLadrillo = pygame.sprite.Group()

# Definimos la altura inicial de los bloques
topLadrillo = 80
# Generamos todos los cuadros del panel superior
# 5 filas con 25 ladrillos cada una [600 / 24 = 25] siendo 24 = 23 del ancho del ladrillo + 1 de separación
for fila in range(5):
예제 #8
0
class Breakout():
    def __init__(self):
        self.WHITE = 225, 225, 225
        self.BLACK = 0, 0, 0
        self.clock = pygame.time.Clock()
        self.size_window = (700, 600)
        self.game_over = False
        self.salir = False
        self.soltar_pelota = False
        self.puntaje = 0
        self.nivel = 1
        self.vidas = 3
        self.SCREEN_WIDTH = self.size_window[0]
        self.SCREEN_HEIGHT = self.size_window[1]

    def load_game(self):
        pygame.init()
        self.screen = pygame.display.set_mode(self.size_window)
        pygame.display.set_caption("breakout")
        self.escenario = Escenario(self.screen)
        self.collision = Collision(5)
        self.pelota = Pelota(self.screen, 16, 16, "sprites/pelota_white.png")
        self.pelota.set_velocity(2, 5)
        self.raquet = Raqueta(self.screen, 74, 12, "sprites/raquet_white.png")
        self.raquet.set_position(300, 550)
        self.bricks = self.load_bricks(12, self.nivel)
        self.tam_list = len(self.bricks)
        self.loop()

    def loop(self):
        dt = 0
        while (not self.salir):
            while (not self.game_over):
                self.ctrl_events()
                self.update(dt)
                self.render()
                self.clock.tick(60)
            self.ctrl_events()

    def reset_game(self):
        self.screen.fill(self.BLACK)
        self.clock.tick(1)
        self.game_over = False
        self.soltar_pelota = False
        self.puntaje = 0
        self.nivel = 1
        self.vidas = 3
        self.pelota.set_velocity(2, 5)
        self.raquet.set_position(300, 550)
        self.bricks = self.load_bricks(12, self.nivel)

    def aumentar_nivel(self):
        self.screen.fill(self.BLACK)
        self.clock.tick(1)
        self.soltar_pelota = False
        self.nivel += 1
        self.vidas = 3
        self.bricks = self.load_bricks(12, self.nivel)
        self.tam_list = len(self.bricks)
        self.pelota.set_velocity(2 + self.nivel, 5 + self.nivel)
        self.raquet.set_velocity(self.nivel)

    def update(self, delta):
        self.pelota.update()
        if (self.soltar_pelota):
            self.collision.detect_colision(self.pelota, self.raquet)
            self.pelota.move()
        else:
            self.center_pelota()
            self.pelota.pelota_perdida = False
        self.raquet.update()
        for b in self.bricks:
            if (self.collision.detect_colision(self.pelota, b)):
                b.sub_resist()
                self.puntaje += 10
                if (b.cant_resist == 0):
                    self.bricks.remove(b)
                    self.tam_list -= 1
            b.update()
        if (self.tam_list == 0):
            self.aumentar_nivel()
        if (self.pelota.pelota_perdida):
            self.vidas -= 1
            if (self.vidas == 0):
                self.game_over = True
                self.bricks.clear()
            else:
                self.soltar_pelota = False

    def render(self):
        self.screen.fill(self.BLACK)
        if (not self.game_over):
            self.pelota.draw()
            self.raquet.draw()
            for b in self.bricks:
                b.draw()
        else:
            self.escenario.draw_game_over()
        self.escenario.draw_margen()
        self.escenario.draw_text(self.puntaje, self.vidas, self.nivel)
        pygame.display.flip()

    def center_pelota(self):
        posX = self.raquet.rect.x + (self.raquet.width /
                                     2) - (self.pelota.width / 2)
        posY = self.raquet.rect.y - self.pelota.height
        self.pelota.set_position(posX, posY)

    def ctrl_events(self):
        for event in pygame.event.get():
            if (event.type == pygame.QUIT):
                sys.exit(1)
        keys = pygame.key.get_pressed()
        if (keys[pygame.K_RIGHT]):
            self.raquet.move_to_rigth()
        elif (keys[pygame.K_LEFT]):
            self.raquet.move_to_left()
        if (keys[pygame.K_SPACE]):
            self.soltar_pelota = True
        if (keys[pygame.K_r]):
            self.reset_game()

    def load_bricks(self, rows, cols):
        list_bricks = []
        c = 0
        while (c < cols):
            r = 0
            while (r < rows):
                path = images.select_image()
                brick = Brick(self.screen, 50, 30, path)
                brick.set_position((r + 1) * 52, (c + 1) * 32)
                list_bricks.append(brick)
                r += 1
            c += 1
        return list_bricks
from glew_wish import *
import glfw
from math import *
import random
from enum import Enum
from Marco import *
from Pelota import *
from Jugador1 import *
from Jugador2 import *

# El desfase es debido a que en 0 grados se voltea hacia arriba y no hacia la derecha

tiempo_anterior = 0

marco = Marco()
pelota = Pelota()
jugador1 = Jugador1()
jugador2 = Jugador2()


def actualizar(window):
    global tiempo_anterior

    tiempo_actual = glfw.get_time()
    tiempo_delta = tiempo_actual - tiempo_anterior

    pelota.checar_colisiones(jugador1, jugador2)
    pelota.actualizar(tiempo_delta)
    jugador1.actualizar(window, tiempo_delta, pelota)
    jugador2.actualizar(window, tiempo_delta, pelota)
    tiempo_anterior = tiempo_actual
예제 #10
0
from Pelota import *
from Jugador import *
import random

pelota = Pelota(random.random(), random.random(), random.randint(
    0,
    8,
), random.randint(0, 4), 1, random.uniform(0.9, 0.1), random.uniform(0.9, 0.1),
                random.uniform(0.9, 0.1), random.uniform(0.9, 0.1))

vector_x = pelota.estado_get()
print(vector_x)
print("-----")
prediccion = Jugador(pelota.Xt, pelota.O, pelota.G)