Python / Pygame标题渲染

时间:2016-07-15 17:47:28

标签: python text fonts pygame

我正在尝试为我正在进行的一个小项目渲染一个标题。我复制了用于创建选项集的相同代码(仅为了方便),但它无法正常工作。我想知道是否有人知道我哪里出错了?这可能是非常明显的事情,但是我对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() 

1 个答案:

答案 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部分。修复这些错误后,您的菜单屏幕会出现,但不会执行任何操作。我不确定您是否只是想要显示菜单,或者您无法通过菜单进行任何操作或显示。