2016-07-15 68 views
0

我想爲我正在處理的一個小項目渲染標題。我已經複製了用於創建選項集的相同代碼(僅用於簡化),但它不起作用。我想知道有沒有人知道我要去哪裏?這可能是一些非常明顯的事情,但是我對python沒有經驗。Python/Pygame標題渲染

下面的代碼:

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

我不知道要發生什麼。但我認爲你簡單有一些錯別字。行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部分。修復這些錯誤之後,出現菜單屏幕,但不執行任何操作。我不確定你是否試圖讓菜單顯示,或者你不能讓菜單做任何事情或顯示。

+0

它的確如此,謝謝! –