En Pygame, uno puede crear una bala que se dispara en la dirección del mouse. Para hacer esto, sería necesario crear una clase que represente la viñeta y establecer su posición inicial y dirección según la posición del mouse.
Clase para la viñeta
Primero, crea una clase para la bala. Esta clase debe incluir atributos para la posición, el tamaño y la superficie de la bala. La superficie es lo que se representará en la pantalla.
import pygame
class Bullet:
def __init__(self, x, y):
self.x = x
self.y = y
self.height = 7
self.width = 2
self.bullet = pygame.Surface((self.width, self.height))
self.bullet.fill((255, 255, 255))
Funciones de clase de juego
A continuación, crea una clase para el juego. Esta clase contendrá funciones para disparar y generar balas.
class Game:
def __init__(self):
self.bullets = []
def shoot_bullet(self):
mouse_x, mouse_y = pygame.mouse.get_pos() # Get the mouse position
for bullet in self.bullets:
rise = mouse_y - bullet.y # Calculate the difference between mouse and bullet y position
run = mouse_x - bullet.x # Calculate the difference between mouse and bullet x position
angle = math.atan2(rise, run) # Calculate the angle between mouse and bullet
bullet.x = math.cos(angle) * 10 # Update bullet x position
bullet.y = math.sin(angle) * 10 # Update bullet y position
# Rotate and draw the bullet
rotated_bullet = pygame.transform.rotate(bullet.bullet, -math.degrees(angle))
screen.blit(rotated_bullet, (bullet.x, bullet.y))
def generate_bullet(self):
mouse_buttons = pygame.mouse.get_pressed() # Check if mouse is clicked
if mouse_buttons[0]: # If left mouse button is clicked
self.bullets.append(Bullet(player.x, player.y)) # Create a new bullet
Usando la clase Bullet
En el bucle principal del juego, cree una instancia de la clase Game y llame a las funciones shoot_bullet y generate_bullet.
game = Game()
while running:
# Event handling
# Update
game.shoot_bullet()
game.generate_bullet()
# Draw
screen.fill((0, 0, 0))
for bullet in game.bullets:
screen.blit(bullet.bullet, (bullet.x, bullet.y))
pygame.display.update()
Este código creará una bala que se dispara en la dirección del mouse. La bala se moverá hasta salir de la pantalla.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3