如何解决如何在pygame中移动表面
我正在 pygame 中制作游戏,我正在尝试移动 self.jetRect,它是 Surface (jetSurface) 的矩形区域,但是当我尝试更新矩形的坐标时,我收到了 TypeError :“元组”对象不可调用。我认为这与元组不可变这一事实有关,但我不知道如何解决这个问题。
import pygame
pygame.init()
clock = pygame.time.Clock()
# Screen setup
screen_width = 600
screen_height = 600
screen = pygame.display.set_mode((screen_width,screen_height))
pygame.display.set_caption("Jet fighter Game")
# Colors
black = (0,0)
white = (255,255,255)
grey = (100,100,100)
# Classes
class PLAYER1:
def __init__(self):
self.jetSurface = pygame.image.load("player1 - blackJet.png")
self.x = 100
self.y = 100
self.speed = 5
self.jetRect = self.jetSurface.get_rect(center = (self.x,self.y))
self.angle = 0
self.rotatedJet = self.jetSurface
def rotateJet(self,surface,angle):
key = pygame.key.get_pressed()
if key[pygame.K_a]:
self.angle += 10
self.rotatedJet = pygame.transform.rotozoom(surface,angle,1)
self.jetRect = self.rotatedJet.get_rect(center=(self.x,self.y))
if key[pygame.K_d]:
self.angle -= 10
self.rotatedJet = pygame.transform.rotozoom(surface,self.y))
if self.angle >= 360:
self.angle = 0
screen.blit(self.rotatedJet,self.jetRect)
def moveJet(self):
key = pygame.key.get_pressed()
if key[pygame.K_w]:
self.y -= self.speed
self.jetRect.center(self.x,self.y)
class PLAYER2:
pass
class BULLET:
pass
class MAIN:
def __init__(self):
self.player1 = PLAYER1()
def rotateJets(self):
self.player1.rotateJet(self.player1.jetSurface,self.player1.angle)
def moveJets(self):
self.player1.moveJet()
main = MAIN()
# Main loop
run = True
while run:
# Checking for events
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# Drawing on screen
screen.fill(grey)
# Movement and Collisions
main.rotateJets()
main.moveJets()
pygame.display.flip()
clock.tick(60)
pygame.quit()
解决方法
打错字了。 self.jetRect.center
是 (self.x,self.y)
的元组,所以当你这样做时
self.jetRect.center(self.x,self.y)
,您正在执行 (self.x,self.y)(self.x,self.y)
,因此出现 calling a tuple
的错误消息。
我认为您打算将元组分配为 self.jetRect.center = (self.x,self.y)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。