RT,我分明定义了check函数
可是为什么还是报错呢?
报错信息:
Traceback (most recent call last):
File "D:\Python\接弹球计分游戏.py", line 76, in <module>
b.bounce()
File "D:\Python\接弹球计分游戏.py", line 69, in bounce
if check():
NameError: name 'check' is not defined
源代码:
from turtle import *
BALL_SPEED_X = 5 #速度设置
BALL_SPEED_Y = 5
BALL_WIDTH = 11 #球的宽度
SCREEN_MAX_X = 750 #屏幕宽度
SCREEN_MAX_Y = 437 #屏幕高度
class ball(): #球类
def __init__(self, speed_x, speed_y,
x, y, ball_width = 11):
self.speed_x = speed_x #跟上面一样的设置(速度设置,球的宽度)
self.speed_y = speed_y
self.x = x #初始坐标
self.y = y
self.ball_width = ball_width
global ball
ball = Pen()
ball.pensize(ball_width)
ball.speed(0)
ball.pencolor('orange')
ball.fillcolor('orange')
ball.shape('circle')
ball.penup()
def move(self): #移动
self.x+=self.speed_x
self.y+=self.speed_y
ball.goto(self.x,self.y)
def getWhere(self,where):
if where < 0:
return where-self.ball_width
else:
return where+self.ball_width
def check(self): #检查是否碰到边缘
return getWhere(x) == SCREEN_MAX_X or getWhere(x) == -SCREEN_MAX_X or getWhere(y) == SCREEN_MAX_Y or getWhere(y) == -SCREEN_MAX_Y
def bounce(self): #弹跳
if check():
self.speed_x *= -1
self.speed_y *= -1
b=ball(BALL_SPEED_X, BALL_SPEED_Y, 0, 0)
while True:
b.move()
b.bounce()