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 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)
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()
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)
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))
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()
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):
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
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)