Mi Videojuego en Python

Un juego de plataformas 2D desarrollado con Pygame. ¡Explora mundos únicos y supera desafíos!

Acerca del Juego

Historia Original

Sigue las aventuras de [Nombre del Protagonista] en su misión para [objetivo del juego].

Tecnologías

Desarrollado con Python 3 y Pygame. Compatible con Windows, Linux y macOS.

Características

  • 5 niveles únicos
  • Sistema de combate
  • Bandas sonoras originales

Capturas de Pantalla

Captura 1
Captura 2
Captura 3

Codigo del Video juego en 2D


import pygame
import sys
import time

# Inicializar Pygame
pygame.init()
ANCHO, ALTO = 800, 600
ventana = pygame.display.set_mode((ANCHO, ALTO))
pygame.display.set_caption("Block Heroes")

# Cargar recursos
logo = pygame.image.load("assets/logo.png")
logo = pygame.transform.scale(logo, (300, 150))

personaje_img = pygame.image.load("assets/player.png")
personaje_img = pygame.transform.scale(personaje_img, (64, 64))

# Cargar sprites animados para caminar hacia abajo (modifica para otras direcciones)
caminar_abajo = [
    pygame.image.load("assets/walk_down1.png"),
    pygame.image.load("assets/walk_down2.png"),
    pygame.image.load("assets/walk_down3.png")
]
caminar_abajo = [pygame.transform.scale(img, (64, 64)) for img in caminar_abajo]

# Sonidos y música (coloca archivos mp3/wav en assets/)
pygame.mixer.music.load("assets/musica_fondo.wav")
pygame.mixer.music.play(-1)
sonido_pesca = pygame.mixer.Sound("assets/Sonido_pesca.mp3")

# Variables animación
frame = 0
reloj_animacion = 0
direccion = "abajo"

# Fuente para textos
fuente = pygame.font.SysFont("arial", 40)
BLANCO = (255, 255, 255)
NEGRO = (0, 0, 0)

# Zona de pesca
zona_agua = pygame.Rect(100, 450, 600, 100)
pescando = False
tiempo_pesca = 0

# Ciclo día/noche
opacidad_noche = 0
ciclo_noche_dia = 1  # 1 para día, -1 para noche

# Pantalla de carga
def pantalla_carga():
    ventana.fill(NEGRO)
    ventana.blit(logo, (ANCHO // 2 - logo.get_width() // 2, 100))
    texto = fuente.render("Cargando...", True, BLANCO)
    ventana.blit(texto, (ANCHO // 2 - texto.get_width() // 2, 300))
    pygame.display.update()
    time.sleep(2)

# Juego principal
def juego():
    global frame, reloj_animacion, direccion, pescando, tiempo_pesca, opacidad_noche, ciclo_noche_dia
    
    x, y = ANCHO // 2, ALTO // 2
    velocidad = 5
    reloj = pygame.time.Clock()
    ejecutando = True

    while ejecutando:
        for evento in pygame.event.get():
            if evento.type == pygame.QUIT:
                ejecutando = False

        teclas = pygame.key.get_pressed()
        moved = False

        if not pescando:
            if teclas[pygame.K_LEFT]:
                x -= velocidad
                direccion = "izquierda"
                moved = True
            elif teclas[pygame.K_RIGHT]:
                x += velocidad
                direccion = "derecha"
                moved = True
            elif teclas[pygame.K_UP]:
                y -= velocidad
                direccion = "arriba"
                moved = True
            elif teclas[pygame.K_DOWN]:
                y += velocidad
                direccion = "abajo"
                moved = True

        # Animación
        if moved and not pescando:
            reloj_animacion += 1
            if reloj_animacion >= 10:
                frame = (frame + 1) % len(caminar_abajo)
                reloj_animacion = 0
        else:
            frame = 0

        ventana.fill((100, 200, 100))  # Fondo pasto

        # Dibujar zona de agua
        pygame.draw.rect(ventana, (0, 100, 255), zona_agua)

        # Posición jugador para colisiones
        pos_jugador = pygame.Rect(x, y, 64, 64)
        en_agua = zona_agua.colliderect(pos_jugador)

        # Iniciar pesca
        if en_agua and teclas[pygame.K_f] and not pescando:
            pescando = True
            tiempo_pesca = pygame.time.get_ticks()

        # Controlar pesca
        if pescando:
            # Capa negra semi-transparente
            filtro_pesca = pygame.Surface((ANCHO, ALTO))
            filtro_pesca.set_alpha(180)
            filtro_pesca.fill((0, 0, 0))
            ventana.blit(filtro_pesca, (0, 0))

            texto_pescar = fuente.render("Pescando...", True, (255, 255, 255))
            ventana.blit(texto_pescar, (ANCHO // 2 - texto_pescar.get_width() // 2, ALTO // 2))

            if pygame.time.get_ticks() - tiempo_pesca > 3000:  # 3 segundos pesca
                pescando = False
                sonido_pesca.play()
                print("¡Has pescado un pez!")

        # Mostrar personaje (solo animación abajo para ahora)
        if direccion == "abajo":
            ventana.blit(caminar_abajo[frame], (x, y))
        else:
            ventana.blit(personaje_img, (x, y))

        # Ciclo noche/día
        opacidad_noche += ciclo_noche_dia
        if opacidad_noche >= 150 or opacidad_noche <= 0:
            ciclo_noche_dia *= -1
        filtro_noche = pygame.Surface((ANCHO, ALTO))
        filtro_noche.set_alpha(opacidad_noche)
        filtro_noche.fill((0, 0, 50))
        ventana.blit(filtro_noche, (0, 0))

        pygame.display.update()
        reloj.tick(60)

    pygame.quit()
    sys.exit()

# Ejecutar juego
pantalla_carga()
juego()