Un programa de puntería
Te voy a proponer un programa de puntería donde:
- El jugador mueve el puntero con el ratón, puede disparar con clic izquierdo para golpear el blanco.
- El puntero es el archivo "Puntero.png"
y debe de estar en el mismo directorio que el código del programa.
- El blanco se mueve aleatoriamente y rebota en los bordes de la ventana si se mantiene presionada la barra espaciadora.
Código del Programa
import pygame
import random
# Inicialización de Pygame
pygame.init()
# Dimensiones de la ventana
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Disparo al blanco")
# Carga del puntero
puntero = pygame.image.load("Puntero.png")
puntero_rect = puntero.get_rect()
# Color y dimensiones del blanco
blanco_color = (255, 0, 0)
blanco_width, blanco_height = 50, 50
# Posición inicial y velocidad del blanco
blanco_x = random.randint(0, 750)
blanco_y = random.randint(0, 550)
blanco_vel_x = 5
blanco_vel_y = 5
# Fuente para mostrar el número de disparos restantes
font = pygame.font.SysFont(None, 36)
# Bucle principal del juego
running = True
while running:
# Captura de eventos
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Disparo con el botón izquierdo del ratón
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
# Registrar disparo
mouse_pos = pygame.mouse.get_pos()
if blanco_x <= mouse_pos[0] <= blanco_x + blanco_width and blanco_y <= mouse_pos[1] <= blanco_y + blanco_height:
# Mueve el blanco a una nueva posición si es alcanzado
blanco_x = random.randint(0, 750)
blanco_y = random.randint(0, 550)
# Captura la posición del ratón
mouse_pos = pygame.mouse.get_pos()
# Actualiza la posición del puntero
puntero_rect.center = mouse_pos
# Detecta si la barra espaciadora está presionada para mover el blanco
keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE]:
blanco_x += blanco_vel_x
blanco_y += blanco_vel_y
# Rebote del blanco en los bordes de la pantalla
if blanco_x <= 0 or blanco_x + blanco_width >= 800:
blanco_vel_x = -blanco_vel_x
if blanco_y <= 0 or blanco_y + blanco_height >= 600:
blanco_vel_y = -blanco_vel_y
# Dibuja el fondo blanco
screen.fill((255, 255, 255))
# Dibuja el blanco
pygame.draw.rect(screen, blanco_color, (blanco_x, blanco_y, blanco_width, blanco_height))
# Dibuja el puntero
screen.blit(puntero, puntero_rect)
# Actualiza la pantalla
pygame.display.flip()
pygame.time.delay(30)
pygame.quit()