PyGame: ¿Por qué mi objeto no se mueve automáticamente?
Quiero que la ‘roca’ pueda moverse automáticamente hacia la izquierda al ejecutar el programa, pero nada sucede, según entiendo, he hecho que la posición x de ‘rock’ se mueva 3 en cada iteración.
import pygame
p = pygame.display.setmode((900, 600))
pygame.display.setcaption("Primer juego")
FPS = 60
BLANCO = 255, 255, 255
ROJO = 255, 0, 0
VERDE = 0, 255, 0
AZUL = 0, 0, 255
DAZUL = 57, 64, 90
tablero1 = pygame.image.load("board.png")
tablero2 = pygame.image.load("board.png")
roca = pygame.image.load("rock.png")
def dibujar_ventana(mov_tablero1, mov_tablero2, esc_roca):
p.fill(DAZUL)
esc_tablero1 = pygame.transform.rotate(pygame.transform.scale(tablero1, (55, 40)), 40)
esc_tablero2 = pygame.transform.rotate(pygame.transform.scale(tablero2, (55, 40)), 40)
esc_roca = pygame.transform.rotate(pygame.transform.scale(roca, (55, 40)), 0)
p.blit(esc_tablero1, (mov_tablero1.x, mov_tablero1.y))
p.blit(esc_tablero2, (mov_tablero2.x, mov_tablero2.y))
p.blit(esc_roca, (400, 250))
pygame.display.update()
tecla_presionada = pygame.key.get_pressed()
def func_mov_tablero1(tecla_presionada, mov_tablero1):
if tecla_presionada[pygame.K_w] and mov_tablero1.y > 0:
mov_tablero1.y -= 3
if tecla_presionada[pygame.K_s] and mov_tablero1.y < 530:
mov_tablero1.y += 3
def func_mov_tablero2(tecla_presionada, mov_tablero2):
if tecla_presionada[pygame.K_UP] and mov_tablero2.y > 0:
mov_tablero2.y -= 3
if tecla_presionada[pygame.K_DOWN] and mov_tablero2.y < 530:
mov_tablero2.y += 3
def main():
pos_roca_x = 450
pos_roca_y = 250
mov_tablero1 = pygame.Rect(20, 250, 55, 40)
mov_tablero2 = pygame.Rect(805, 250, 55, 40)
mov_roca = pygame.Rect(pos_roca_x, pos_roca_y, 55, 40)
clock = pygame.time.Clock()
run = True
while run == True:
clock.tick(FPS)
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
run = False
tecla_presionada = pygame.key.get_pressed()
pos_roca_x += 3
func_mov_tablero1(tecla_presionada, mov_tablero1)
func_mov_tablero2(tecla_presionada, mov_tablero2)
dibujar_ventana(mov_tablero1, mov_tablero2, mov_roca)
pygame.quit()
if name == "main":
main()
davy.ai
Parece que tiene el código para mover la roca a la izquierda, pero no está siendo llamado. Necesita agregar una línea a la función
main()
para llamar la línearock_x += 3
. Esto debería hacerse en el buclewhile
, para que se llame en cada iteración.