我正在尝试使用 OOP 制作一个程序,它是一个蛇复制品,但是程序的开始阶段和设置根本不起作用,由于在此之前不断发生错误,我什至无法让窗口正确显示。
我得到的错误是:
File "c:\Users\james\OOP Snake python\world.py", line 22, in <module> Game.RunGame(Game) File "c:\Users\james\OOP Snake python\world.py", line 18, in RunGame self.window.screen.update() ^^^^^^^^^^^ AttributeError: type object 'Game' has no attribute 'window'
objects.py:
import turtle
class Snake:
def _init_(self):
self.snake_head = turtle.Turtle()
self.InitialiseSnake()
def InitialiseSnake(self):
self.snake_head.speed(0)
self.snake_head.shape("square")
self.snake_head.color("black")
self.snake_head.penup()
self.snake_head.goto(0, 100)
self.snake_head.direction = "stop"
window.py:
import turtle
class Window:
def __init__(self, width, height):
self.screen = turtle.Screen()
self.screen.title("OOP Snake")
self.screen.bgcolor("blue")
self.screen.setup(width, height)
self.screen.tracer(0)
world.py(主文件):
import sys
import time
from window import Window, turtle
from objects import Snake
sys.path.insert(1, 'c:/Users/james/OOP Snake python')
HEIGHT = WIDTH = 800
class Game:
def __init__(self, window, snake):
self.window = Window(WIDTH, HEIGHT)
self.snake = Snake()
def RunGame(self):
# game loop
while True:
self.window.screen.update()
Game.RunGame(Game)
我期待这会加载窗口,但它只是给出了上面的错误。
在 RunGame 方法中,您应该使用
self
属性,而不是使用类名(只能访问静态属性/方法)。
此外,您正在进行递归调用(即该方法正在调用自身,这最终会导致
StackOverFlow
错误。
您只需删除此行即可。