为啥报这个错?
  • 板块灌水区
  • 楼主Grace25
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/12/5 20:44
  • 上次更新2023/11/5 06:35:37
查看原帖
为啥报这个错?
359883
Grace25楼主2020/12/5 20:44

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()
2020/12/5 20:44
加载中...