python马里奥游戏
# 游戏主要入口
import pygame
from source import tools, setup
def main():
game = tools.Game()
game.run()
if __name__ == '__main__':
main()
# 工具和游戏主控
import os
import pygame
import pygame
import random
class Game:
def __init__(self):
self.screen = pygame.display.get_surface()
self.clock = pygame.time.Clock()
def run(self):
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.display.quit()
elif event.type == pygame.KEYDOWN:
self.keys = pygame.key.get_pressed()
elif event.type == pygame.KEYUP:
self.keys = pygame.key.get_pressed()
self.screen.fill((random.randint(0,255),random.randint(0,255),random.randint(0,255))) # 随机出一种颜色
pygame.display.update()
self.clock.tick(60) # 每秒钟60帧
这两个代码分别是两个python file里面的,代码是正确的,但是会显示以下错误,我怎样都解决不了
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:\Users\fbyzb\PycharmProjects\SuperMario\main.py", line 14, in
main()
File "C:\Users\fbyzb\PycharmProjects\SuperMario\main.py", line 9, in main
game.run()
^^^^^^^^
AttributeError: 'Game' object has no attribute 'run'
Process finished with exit code 1
这段代码中出现了一个错误。错误信息是"AttributeError: Game object has no attribute run",意思是Game对象没有run属性。
这个错误是因为在Game类中定义了一个run方法,但是该方法被放置在了init方法内部,导致无法访问到。要解决这个错误,需要将run方法移动到init方法的外部。
修正后的代码如下:
class Game:
def __init__(self):
self.screen = pygame.display.get_surface()
self.clock = pygame.time.Clock()
def run(self):
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.display.quit()
elif event.type == pygame.KEYDOWN:
self.keys = pygame.key.get_pressed()
elif event.type == pygame.KEYUP:
self.keys = pygame.key.get_pressed()
self.screen.fill((random.randint(0,255),random.randint(0,255),random.randint(0,255))) # 随机出一种颜色
pygame.display.update()
self.clock.tick(60) # 每秒钟60帧
将run方法移动到init方法的外部后,再次运行代码应该就不会出现该错误了。
不知道你这个问题是否已经解决, 如果还没有解决的话:针对该问题,考虑如下解决方案:
首先,需要理解“AttributeError: 'Game' object has no attribute 'run'”这个错误的含义。这个错误意味着一个名为'run'的属性不存在于'Game'对象中,可能是一个拼写错误或是缺少必要的引用。
接下来,检查代码中是否存在名字为“run”的属性。如果没有,那么需要检查代码中是否缺少必要的引用或者库。
如果代码中存在名字为“run”的属性,那么需要检查其是否存在于正确的对象中。具体来说,检查是否在'Game'对象中定义了一个名为'run'的方法或属性。
如果代码中确实存在'Game'对象中的'run'方法或属性,那么需要检查是否已经正确地初始化和创建'Game'对象。检查是否存在任何与'Game'对象相关的错误或其他异常情况。
最后,检查是否正确使用了pygame库中的相关功能。检查是否存在任何遗漏或错误的导入语句、语法错误或其他与pygame相关的问题。
下面提供一些可能能够帮助解决问题的建议:
确认自己已经安装了pygame库,并且已经正确地引用了pygame库。
仔细检查代码中是否存在拼写错误或语法错误,注意检查方法和属性名字的拼写,确保完整引用方法。
尝试使用其他的马里奥游戏代码,或者从在线资源中获取已经被证明有效的代码。
参考代码:
# 导入 pygame 库
import pygame
# 初始化 pygame 库
pygame.init()
# 创建一个窗口
screen = pygame.display.set_mode((800, 600))
# 定义 Game 类
class Game:
def __init__(self):
self.score = 0
def run(self):
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
# 绘制游戏内容
pygame.display.flip()
# 创建 Game 对象
game = Game()
# 运行游戏
game.run()
在以上代码中,我们使用pygame库创建一个基础的窗口,并定义了一个名为'Game'的类,该类具有一个名为'run'的方法。在创建Game对象后,我们调用game.run()启动游戏循环。当我们退出游戏时,我们使用pygame.quit()来关闭pygame库。