我正在尝试为我正在进行的一个小项目渲染一个标题。我复制了用于创建选项集的相同代码(仅为了方便),但它无法正常工作。我想知道是否有人知道我哪里出错了?这可能是非常明显的事情,但是我对python没有经验。
以下是代码:
import pygame
class Option:
hovered = False
def __init__(self, text, pos):
self.text = text
self.pos = pos
self.set_rect()
self.draw()
def draw(self):
self.set_rend()
screen.blit(self.rend, self.rect)
def set_rend(self):
self.rend = menu_font.render(self.text, True, self.get_color())
def get_color(self):
if self.hovered:
return (255, 255, 255)
else:
return (100, 100, 100)
def set_rect(self):
self.set_rend()
self.rect = self.rend.get_rect()
self.rect.topleft = self.pos
class Title:
hovered = False
def __init__(self, text, pos):
self.text = text
self.pos = pos
self.set_rect()
self.draw()
def draw(self):
self.set_rend()
screen.blit(self.rend, self.rect)
def set_rend(self):
self.rend = title_font.render(self.text, True, self.get_color())
def get_color(self):
if self.hovered:
return (255, 255, 255)
else:
return (255, 255, 255)
def set_rect(self):
self.set_rend()
self.rect = self.rend.get_rect()
self.rect.topleft = self.pos
pygame.init()
screen = pygame.display.set_mode((480, 320))
menu_font = pygame.font.Font(None, 40)
options = [Option("PLAY GAME", (140, 105)), Option("OPTIONS", (155, 155)),
Option("QUIT", (180, 205)), Option("NOTPONG", (150,20))]
title_font = pygame.display.font.Font(None, 42)
title = [Title("NOTPONG", (150,20))
while True:
pygame.event.pump()
screen.fill((0, 0, 0))
for option in options:
if option.rect.collidepoint(pygame.mouse.get_pos()):
option.hovered = True
else:
option.hovered = False
option.draw()
pygame.display.update()
while True:
pygame.event.pump()
screen.fill((0, 0, 0))
for Title in title:
if title.rect.collidepoint(pygame.mouse.get_pos()):
title.hovered = True
else:
title.hovered = False
title.draw()
pygame.display.update()
答案 0 :(得分:0)
我不知道你想要发生什么。但我认为你简单有一些错别字。行title = [Title("NOTPONG", (150,20))
必须为title = [Title("NOTPONG", (150,20))]
,并带有结束括号。行title_font = pygame.display.font.Font(None, 42)
必须是title_font = pygame.font.Font(None, 42)
,而不是.display
部分。修复这些错误后,您的菜单屏幕会出现,但不会执行任何操作。我不确定您是否只是想要显示菜单,或者您无法通过菜单进行任何操作或显示。