Python: 为什么调用ppBall类时会出现语法错误?
一般信息
我正在尝试用pygame制作一个乒乓球游戏的重制版。当我运行程序时(现在只有弹球的部分),我遇到了一个无效语法错误。
错误信息
这是我遇到的错误:
C:\Programming\PyGame\Pong>python PyngPongEmbeddedClasses.py
File "PyngPongEmbeddedClasses.py", line 87
pyngBall = ppBall((100,100), BALLSIZE, 0, 1)
^
SyntaxError: invalid syntax
我的代码
#PyngPong by Ben Lippincott
#This game is not affiliated with the game Pong in any way
import pygame, sys, math
from pygame.locals import *
# Globals!
FPS = 30
ANIMATIONSPEED = 1 # pixels per frame
WINDOWHEIGHT = 600 # pixels
WINDOWWIDTH = 800 # pixels
VERSION = 'v1.0'
BASICFONTSIZE = 20 # 20 pt font
# screencenter tuple
SCREENCENTERX = WINDOWWIDTH / 2
SCREENCENTERY = WINDOWHEIGHT / 2
SCREENCENTER = (SCREENCENTERX, SCREENCENTERY)
BALLSIZE = 15 # radius of circle
BGCOLOR = BLACK
# Color Globals
# R G B
WHITE = (255, 255, 255)
BLACK = ( 0, 0, 0)
def addVectors((angle1, length1), (angle2, length2)):
x = math.sin(angle1) * length1 + math.sin(angle2) * length2
y = math.cos(angle1) * length1 + math.cos(angle2) * length2
angle = 0.5 * math.pi - math.atan2(y, x)
length = math.hypot(x, y)
return (angle, length)
class ppBall:
def __init__(self, (x, y), size, angle, speed):
self.x = x
self.y = y
self.size = size
self.color = (255, 255, 255)
self.thickness = 0
self.speed = angle
self.angle = speed
def draw(self):
pygame.draw.circle(screen, self.color, (self.x, self.y), self.size, self.thickness)
def move(self):
(self.angle, self.speed) = addVectors((self.angle, self.speed))
self.x += math.sin(self.angle) * self.speed
self.y -= math.cos(self.angle) * self.speed
def bounce(self):
if self.x > width - self.size:
self.x = 2*(width - self.size) - self.x
self.angle = - self.angle
elif self.x < self.size:
self.x = 2*self.size - self.x
self.angle = - self.angle
if self.y > height - self.size:
self.y = 2*(height - self.size) - self.y
self.angle = math.pi - self.angle
elif self.y < self.size:
self.y = 2*self.size - self.y
self.angle = math.pi - self.angle
def main():
global FPSCLOCK, DISPLAYSURF, BASICFONT
# Initialization time!
pygame.init()
FPSCLOCK = pygame.time.clock()
DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption('Pyng Pong by PhatLipp ' + VERSION)
BASICFONT = pygame.font.Font('freesansbold.ttf', BASICFONTSIZE
pyngBall = ppBall((100,100), BALLSIZE, 0, 1)
while True: # Main game loop!
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
DISPLAYSURF.fill(BGCOLOR)
pyngBall.move()
pyngBall.bounce()
pyngBall.draw()
pygame.display.flip()
if __name__ == "__main__":
main()
这是我调用这个类的方式:
pyngBall = ppBall((100,100), BALLSIZE, 0, 1)
为什么会出现这个问题呢?
1 个回答
5
你在上面那行代码缺少一个右括号:
BASICFONT = pygame.font.Font('freesansbold.ttf', BASICFONTSIZE
# here--^
每当你遇到这种奇怪的语法错误时,最好先检查一下前面的那一行。很多时候,问题只是因为少了一个括号。