2016-07-15 22 views
0

Ich versuche, einen Titel für ein kleines Projekt, an dem ich arbeite, zu rendern. Ich habe den gleichen Code repliziert, der zum Erstellen der Optionen verwendet wurde (nur zur Vereinfachung), aber es funktioniert nicht. Ich habe mich gefragt, ob jemand weiß, wo ich falsch liege? es ist wahrscheinlich etwas sehr offensichtlich, aber ich habe keine Erfahrung, wenn es um Python geht.Python/Pygame Titel Rendering

Hier ist der Code:

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() 

Antwort

0

Ich weiß nicht, was genau Sie wollen passieren. Aber ich denke du hast einfach ein paar Tippfehler. Die Linie title = [Title("NOTPONG", (150,20)) muss title = [Title("NOTPONG", (150,20))] mit der schließenden Klammer sein. Und die Linie title_font = pygame.display.font.Font(None, 42) muss title_font = pygame.font.Font(None, 42) ohne den .display Teil sein. Nachdem Sie diese Fehler behoben haben, erscheint Ihr Menübildschirm, der aber nichts bewirkt. Ich bin mir nicht sicher, ob du nur versucht hast, das Menü zu zeigen, oder du kannst das Menü nicht dazu bringen, etwas zu tun oder zu zeigen.

+0

Es tat, danke! –