我正在使用 python 和codeskulptor
/来制作游戏,
当我定义一个类时simplegui
,我得到了这里所说的这个错误。"undefined: RangeError: Maximum call stack size exceeded"
import simplegui, random, time
level = 1
balls = []
class Person():
def __init__(self):
self.deg = 0
self.fall = False
self.ball = Ball()
class Ball():
global level
def __init__(self):
self.velo = 0
self.pos = [random.randint(100, 500), 0] //error here
self.xChange = random.randint(-5, 5)
def move(self):
self.velo = level
self.pos[1] += level
self.pos[0] += xChange
if self.pos[0] <= 0 or self.pos[0] >= 600:
self.xChange *= -1
if self.pos[1] >= 500:
self.pos[0] = random.randint(100, 500)
self.pos[1] = 0
class Player():
def __init__(self):
global balls
self.posx = 300
self.velo = 0
self.gameover = False
self.pearson = Person()
self.ball = Ball()
self.game = Game()
def left(self):
self.velo -= 0.5
self.pearson.deg -= 0.5
def right(self):
self.velo += 0.5
self.pearson.deg += 0.5
def renewInfo(self):
self.posx += self.velo
def hit(self):
if self.posx + 10 <= self.ball.pos[0] and self.posx - 10 >= self.ball.pos[0] and self.ball.pos[1] >= 470:
self.game.gameover
class Game():
global balls
def __init__(self):
self.person = Person()
self.ball = Ball()
self.player = Player()
def spBall(self):
for i in range(10):
balls.append(self.ball)
def move(self):
pass
def gameover(self):
pass
game = Game()
def draw(canvas):
pass
def keydown(key):
if key == 37:
game.player.left
if key == 39:
game.player.right
def time_handler():
global level
level += 1
timer = simplegui.create_timer(30000, time_handler)
timer.start()
frame = simplegui.create_frame('Quake Control', 800, 500)
frame.set_canvas_background('white')
frame.set_draw_handler(draw)
frame.set_keydown_handler(keydown)
frame.start()
我的想法是你用方向键移动,避开球,但是你的位置会引起地震,一个人会朝那个方向倾斜,如果这个人摔倒或者你撞到球,你就输了。