Спрайт не будет двигаться в пигме - PullRequest
1 голос
/ 05 октября 2019

Спрайт "планеты" из этого кода не пойдет влево и вправо и не оживит. Где ошибка? На самом деле, это список из приложения google play «Programming Hero», где автор пошагового руководства направляет студентов через процесс создания видеоигр с python ...

import pygame

screen_size = [360,640]
screen =     pygame.display.set_mode(screen_size)
background = pygame.image.load('background.png')
planet =     pygame.image.load('one.png')
spaceship =  pygame.image.load('spaceship.png')
bullet =     pygame.image.load('bullet.png')


keep_alive = True
planet_x = 140           # I've edited this
move_direction = 'right' # out of the loop, too

# according to the same logic "I've saved the planet" to go infinitely right
# thanx 

while keep_alive:
    pygame.event.get()
    keys = pygame.key.get_pressed()
    if keys[pygame.K_SPACE] == True:
        print('Space key pressed')

    screen.blit(background, [0,0])
    screen.blit(bullet,[180,500])
    screen.blit(spaceship,[160,500])

    # I put this out off loop:           planet_x = 140
    # wrong, must go out of a loop, too: move_direction = 'right'

    if move_direction == 'right':
        planet_x = planet_x + 5
        if planet_x == 270:
            move_direction = 'left'
    else:
        planet_x = planet_x - 5
        if planet_x == 0:
            move_direction = 'right'

    screen.blit(planet, [planet_x, 50])
    pygame.display.update()

1 Ответ

1 голос
/ 05 октября 2019

Положение планеты (planet_x) повторно инициализируется в каждом кадре:

while keep_alive:
   # [...]

   planet_x = 140

   if move_direction == 'right':
       planet_x = planet_x + 5

   # [...]

   screen.blit(planet, [planet_x, 50])

Переместить инициализацию на planet_x перед основным циклом приложения:

planet_x = 140
while keep_alive:

    # [...]

    if move_direction == 'right':
        planet_x = planet_x + 5

    # [...]

    screen.blit(planet, [planet_x, 50])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...