Пули стреляют из неправильной позиции после перемещения игрока в небольшой игре «Space Invaders»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Пули стреляют из неправильной позиции после перемещения игрока в небольшой игре «Space Invaders»

Сообщение Anonymous »

Я новичок в Python и пытаюсь написать код для такой игры, как Space Invaders.
Я создал все, но когда я перемещаю своего персонажа и стреляю, пуля продолжает стрелять из исходное положение персонажа.
Мне нужно, чтобы оно каждый раз снималось с фактического положения персонажа.
main.pyfrom turtle import Turtle, Screen
from player import Player
from bullet import Bullet, BULLET_SPEED

turtle = Turtle()

screen = Screen()
screen.setup(width=800, height=800)
screen.title("Shmup Test")
screen.bgcolor("black")

player = Player()
bullet = Bullet()

screen.listen()
screen.onkey(key="Up", fun=player.go_up)
screen.onkey(key="Down", fun=player.go_down)
screen.onkey(key="Left", fun=player.go_left)
screen.onkey(key="Right", fun=player.go_right)

screen.onkey(key="space", fun=bullet.fire_bullet)

while True:
bullet.forward(BULLET_SPEED)

player.py
from turtle import Turtle, Screen

MOVE_DISTANCE = 10

screen = Screen()

class Player(Turtle):

def __init__(self):
super().__init__()
self.image = "penguin.gif"
screen.register_shape(self.image)
self.shape(self.image)
self.penup()
self.speed(0)
self.setposition(0, -180)
self.setheading(90)

def go_up(self):
new_y = self.ycor() + MOVE_DISTANCE
if new_y > 330:
new_y = 330
self.goto(self.xcor(), new_y)

def go_down(self):
new_y = self.ycor() - MOVE_DISTANCE
if new_y < -330:
new_y = -330
self.goto(self.xcor(), new_y)

def go_left(self):
new_x = self.xcor() - MOVE_DISTANCE
if new_x < -330:
new_x = -330
self.goto(new_x, self.ycor())

def go_right(self):
new_x = self.xcor() + MOVE_DISTANCE
if new_x > 330:
new_x = 330
self.goto(new_x, self.ycor())

bullet.py
from turtle import Turtle, Screen
from player import Player

BULLET_SPEED = 10

self = Turtle()
player = Player()
screen = Screen()

class Bullet(Turtle):

def __init__(self):
super().__init__()
self.color("red")
self.shape("circle")
self.penup()
self.speed(0)
self.setposition(player.xcor(), player.ycor())
self.setheading(90)
self.shapesize(.5, .5)
self.hideturtle()

def fire_bullet(self):
x_pos = player.xcor()
y_pos = player.ycor()
self.setposition(x_pos, y_pos)
self.showturtle()


Подробнее здесь: https://stackoverflow.com/questions/793 ... e-invaders
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Пули стреляют из неправильной позиции после перемещения игрока в небольшой игре «Space Invaders»
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Пули стреляют из неправильной позиции после перемещения игрока в небольшой игре «Space Invaders»
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Враги Space Invaders не двигаются
    Anonymous » » в форуме CSS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Пули стреляют только в одном направлении
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Пули не стреляют в pygame
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»