Python ';pygame.Surface';对象没有属性';颜色';
所以,我的问题是,我正在尝试绘制一个矩形,但我不断得到一个错误,即Python ';pygame.Surface';对象没有属性';颜色';,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,所以,我的问题是,我正在尝试绘制一个矩形,但我不断得到一个错误,即'pygame.Surface'对象没有属性“color”。有人能帮我吗 完整错误消息 Traceback (most recent call last): File "main.py", line 64, in <module> game.new() File "main.py", line 23, in new self.run() File "main.py", line 32, in r
'pygame.Surface'对象没有属性“color”
。有人能帮我吗
完整错误消息
Traceback (most recent call last):
File "main.py", line 64, in <module>
game.new()
File "main.py", line 23, in new
self.run()
File "main.py", line 32, in run
self.draw()
File "main.py", line 55, in draw
self.snake.draw(self.screen)
File "C:\Users\sidna\Dropbox\Dev Stuff\Games\Snake\sprites.py", line 15, in draw
pygame.draw.rect(screen, self.color
AttributeError: 'pygame.Surface' object has no attribute 'color'
Main.py
import pygame
class Snake():
def __init__(self):
self.x = 0
self.y = 0
self.w = 10
self.h = 10
self.velX = 1
self.velY = 0
self.color = (0, 0, 0)
def draw(screen, self):
pygame.draw.rect(screen, self.color
(self.x, self.y, self.w, self.h))
def animate(self):
self.x = self.x + self.velX
self.y = self.y + self.velY
from settings import *
from sprites import *
import pygame
import random
class Game:
def __init__(self):
# initialize game window, etc
pygame.init()
pygame.mixer.init()
self.screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption(TITLE)
self.clock = pygame.time.Clock()
self.running = True
def new(self):
# start a new game
self.snake = Snake()
self.run()
def run(self):
# Game Loop
self.playing = True
while self.playing:
self.clock.tick(FPS)
self.events()
self.draw()
self.animate()
self.update()
def update(self):
# Game Loop - Update
pygame.display.update()
def events(self):
# Game Loop - events
for event in pygame.event.get():
# check for closing window
if event.type == pygame.QUIT:
if self.playing:
self.playing = False
self.running = False
def draw(self):
# Game Loop - draw
self.screen.fill((255, 255, 255))
self.snake.draw(self.screen)
def animate(self):
self.snake.animate()
game = Game()
while game.running:
game.new()
pygame.quit()
遵循Python zen显式优于隐式 通常,方法的第一个参数称为self。这没什么 不仅仅是一个惯例:self这个名字绝对没有什么特别之处 对Python的意义。但是,请注意,如果不遵守公约 您的代码对其他Python程序员的可读性可能较低,而且确实如此 也可以想象,一个类浏览器程序可能是这样编写的 依赖于这样一个公约 这意味着您应该将第一个参数设置为
self
,并且您忘记了一个逗号,代码应该如下所示:
def draw(self,screen):
pygame.draw.rect(screen, self.color,(self.x, self.y, self.w, self.h))
看看这个问题,看看更多细节