Я следую простому примеру кода, чтобы немного научиться.У меня нет проблем с кодированием основного экрана, игрока и врага.Однако, когда я пытаюсь приблизить противника, он просто падает с экрана.
Я пытался замедлить движение, а также установить скорость, с которой оно падает до 0 после использования, затем вернуть его обратно кисходная скорость, как только она «безопасна».Это не работает.
Космические захватчики
import turtle
import os
настройка экрана
wn = turtle.Screen()
wn.bgcolor("black")
wn.title("Space Invaders")
рисование границы
border_pen=turtle.Turtle()
border_pen.speed(0)
border_pen.color("white")
border_pen.penup()
border_pen.setposition(-300,-300)
border_pen.pendown()
border_pen.pensize(3)
for side in range(4):
border_pen.fd(600)
border_pen.lt(90)
border_pen.hideturtle()
создание черепахи игрока
player=turtle.Turtle()
player.color("blue")
player.shape("triangle")
player.penup()
player.speed(0)
player.setposition(0,-250)
player.setheading(90)
playerspeed=15
создание enenmy
enemy = turtle.Turtle()
enemy.color("red")
enemy.shape("circle")
enemy.penup()
enemy.speed(0)
enemy.setposition(-200,250)
enemyspeed = 1
enemydropspeed = 40
обработчиков событий для левой и правой кнопок
def move_left():
x=player.xcor()
x -= playerspeed
if x < -280:
x = -280
player.setx(x)
def move_right():
x=player.xcor()
x += playerspeed
if x > 280:
x = 280
player.setx(x)
привязка к клавиатуре
turtle.listen()
turtle.onkey(move_left,"Left")
turtle.onkey(move_right,"Right")
основная играцикл
while True:
# move the enemy
x = enemy.xcor()
x += enemyspeed
это биты, которые не работают ... я думаю
if enemy.xcor() < -280:
y = enemy.ycor()
y -= enemydropspeed
enemyspeed *= -1
enemy.sety(y)
if enemy.xcor() > 280:
y = enemy.ycor()
y -= enemydropspeed
enemyspeed *= -1
enemy.sety(y)
enemy.setx(x)
wn.mainloop()
Когда это будет запущено, враг переместится на «правую» сторонуэкрана, а затем просто падают с края, он должен просто опуститься на 40, а затем двигаться влево.