Я делаю клон космических захватчиков и у меня проблемы. Итак, прямо сейчас у меня есть управляемый пользователем корабль (в настоящее время это мышь, потому что это то, что было в моей папке python из предыдущей игры, но со временем я это изменю), перемещающийся вперед и назад в нижней части экрана, что я и хочу, но у меня проблемы со стрельбой, когда я нажимаю пробел. Я могу запустить игру, но когда я нажимаю пробел, я получаю эту ошибку:
AttributeError: класс User_Ship не имеет атрибута «прямой»
и я не знаю, как это исправить. Кроме того, я думаю, что после того, как это будет исправлено, мой корабль все равно не будет стрелять, потому что мне было трудно получить код, поэтому, вероятно, есть некоторые ошибки. Если бы вы могли дать мне несколько советов и советов, как заставить мой корабль стрелять, это было бы здорово. Спасибо
from pygame import *
import pygame
size_x = 900
size_y = 650
class Object:
def disp(self, screen):
screen.blit(self.sprite, self.rect)
class User_Ship(Object):
def __init__(self):
self.sprite = image.load("mouse.bmp")
self.rect = self.sprite.get_rect()
self.rect.centerx = size_x/2
self.rect.centery = size_y - 40
self.count = 0
self.move_x = 0
self.move_y = 0
def checkwith(self, otherrect):
if self.rect.colliderect(otherrect):
exit()
def cycle(self):
self.rect.centerx += self.move_x
if self.rect.centerx < 0:
self.rect.centerx = 0
if self.rect.centerx > size_x:
self.rect.centerx = size_x
self.rect.centery += self.move_y
if self.rect.centery < 0:
self.rect.centery = 800
def right(self):
self.move_x += 10
def left(self):
self.move_x -= 10
def stop_x(self):
self.move_x = 0
def stop_y(self):
self.move_y = 0
class Missile(Object):
def __init__(self):
self.sprite = image.load("missile.png")
self.rect = self.sprite.get_rect()
def update(self):
self.rect.move_ip(self.speed)
if self.rect.left < 0 or self.rect.right > size_x or self.rect.top < 0 or self.rect.bottom > size_y:
self.kill()
missiles = pygame.sprite.RenderUpdates()
init()
screen = display.set_mode((size_x, size_y))
m = User_Ship()
#b = Missile()
clock = time.Clock()
while True:
for e in event.get():
if e.type == QUIT:
quit()
if e.type == KEYDOWN:
if e.key == K_RIGHT:
m.right()
elif e.key == K_LEFT:
m.left()
if (e.key == K_SPACE):
missiles.add(Missile("missile.png",(User_Ship.rect.centerx)))
if e.type == KEYUP:
if e.key == K_RIGHT or e.key == K_LEFT:
m.stop_x()
missiles.draw(screen)
m.cycle()
screen.fill((255,255,255))
m.disp(screen)
# b.disp(screen)
display.flip()