движущиеся объекты в питоне самостоятельно - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь заставить объект (корабль) двигаться самостоятельно со своей скоростью и случайным направлением, но, посмотрев в интернет, я смог найти только объекты, которые перемещаются вручную.Я попытался использовать randrange, чтобы, возможно, заставить его двигаться случайным образом

    def on_mouse_press(self, x, y, button, modifiers):
    if button == arcade.MOUSE_BUTTON_LEFT:
        self.player_sprite.center_x = random.randrange(800)
        self.player_sprite.center_y = random.randrange(800)

, но для этого требовалось несколько кликов, и мой корабль просто перепрыгивал.Может ли кто-нибудь научить меня, как это сделать правильно?спасибо.

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

    def on_mouse_press(self, x, y, button, modifiers):
    while self.score != 1:
        while button == arcade.MOUSE_BUTTON_LEFT:
            self.player_sprite.center_x += random.choice([-1, 1])
            self.player_sprite.center_y += random.choice([-1, 1])
        if self.score == 1:
            break
    print("box has been found!")

, но теперь программа вообще не запускается и выдает код выхода -805306369.

1 Ответ

0 голосов
/ 08 декабря 2018

Для плавного перемещения вашего корабля вам нужно перемещать его по одному шагу за раз.

random.randrange(800) даст вам случайное значение от 0 до 800, и поэтому ваш корабль прыгает.

Вам нужно что-то вроде этого.

 if button == arcade.MOUSE_BUTTON_LEFT:
        self.player_sprite.center_x += random.randrange(-1,2)
        self.player_sprite.center_y += random.randrange(-1,2)

random.randrange (-1,2) даст вам значение -1, 0 или 1.

  • Если добавить к ось x , то он либо сместится влево , вправо , либо не будет двигаться вообще.
  • Для оси y она либо сместится вверх , вниз , либо не будет двигаться.

В случае, если вы всегда хотите двигаться.Вы можете изменить random.randrange(-1,2) на random.choice([-1, 1])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...