2016-11-14 3 views
0

Ich versuche, mit pygame Klavierkacheln in Python zu machen. Also, ich habe mit dem Erstellen eines Intro-Fensters begonnen, aber ich kann kein Hintergrundbild 1 in mein in-Fenster hochladen. Ich möchte eigentlich den Namen 'Piano-Kacheln' und das Hintergrundbild anzeigen, wenn der Spieler das Spiel startet. Hier ist mein Code:Klavierkacheln: Hintergrundbild

import pygame,os,random,time 
from pygame.locals import * 
wix=800 
wiy=800 
pygame.init() 
white=(255,255,255) 
black = (0,0,0) 
red = (255,0,0) 
green = (0,155,0) 
clock = pygame.time.Clock() 
smallfont = pygame.font.SysFont("comicsansms", 25) 
medfont = pygame.font.SysFont("comicsansms", 50) 
largefont = pygame.font.SysFont("comicsansms", 100) 
gameDisplay=pygame.display.set_mode((wix,wiy)) 
bg = pygame.image.load("background.jpg") 
pygame.display.set_caption("Piano Tiles") 
def game_intro(): 
    screen=pygame.display.set_mode((wix,wiy)) 
    intro =True 
    while intro: 
     bg = pygame.image.load("background.jpg") 
     screen.blit(bg,(0,0)) 
     gameDisplay.fill(white) 
     message_to_screen("PIANO TILES",black,-100,"large") 
     pygame.display.update() 
     clock.tick(8) 

def text_objects(text,color,size): 
    if size == "small": 
     textSurface = smallfont.render(text, True, color) 
    elif size == "medium": 
     textSurface = medfont.render(text, True, color) 
    elif size == "large": 
     textSurface = largefont.render(text, True, color) 


    return textSurface, textSurface.get_rect() 
def message_to_screen(msg,color, y_displace=0, size = "small"): 
    textSurf, textRect = text_objects(msg,color, size) 
    textRect.center = (wix/ 2), (wiy/2)+y_displace 
    gameDisplay.blit(textSurf, textRect) 

game_intro() 
pygame.time.wait(4000) 
pygame.quit() 
quit() 
+0

entfernen aussehen könnte 'füllen (weiß)' oder es verwenden, bevor 'screen.blit' BTW muss man nicht die gleiche Bild milions mal in' while' Schleife laden - lade es vor der Schleife. – furas

+0

und verwenden Sie 'screen' statt' gameDisplay' - 'gameDisplay' kann eine andere Oberfläche als' screen' sein. Sie müssen 'set_mode' nicht zweimal verwenden. – furas

+0

Es hat funktioniert! Danke vielmals! –

Antwort

0

Sie haben fill(white) zu verwenden, bevor Sie blit etwas, weil es klar Bildschirm.

es so

import pygame 

# --- constants --- (UPPER_CASE names) 

WIX = 800 
WIY = 800 

WHITE = (255,255,255) 
BLACK = ( 0, 0, 0) 
RED = (255, 0, 0) 
GREEN = ( 0,155, 0) 

FPS = 8 

# --- functions --- (lower_case names) 

def text_objects(text, color, size): 
    if size == "small": 
     text_font = small_font 
    elif size == "medium": 
     font = med_font 
    elif size == "large": 
     font = large_font 

    #fonts = {"small": small_font, "medium": med_font, "large": large_font} 
    #font = fonts[size] 

    text_surface = font.render(text, True, color) 
    text_rect = text_surface.get_rect() 

    return text_surface, text_rect 

def message_to_screen(screen, msg, color, y_displace=0, size="small"): 
    text_surface, text_rect = text_objects(msg, color, size) 
    text_rect.center = screen.get_rect().center 
    text_rect.y += y_displace 
    screen.blit(text_surface, text_rect) 

def game_intro(screen, text): 
    #bg = pygame.image.load("background.jpg") 

    screen.fill(WHITE) # use if background is smaller then screen 

    screen.blit(bg, (0,0)) 

    message_to_screen(screen, text, BLACK, -100, "large") 
    message_to_screen(screen, text, BLACK, 0, "large") 
    message_to_screen(screen, text, BLACK, 100, "large") 

    pygame.display.update() 

    clock = pygame.time.Clock() 

    while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       return False # exit program 
      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_ESCAPE: 
        return True # go to next stage 
      elif event.type == pygame.MOUSEBUTTONDOWN: 
       if event.button == 1: 
        return True # go to next stage 

     clock.tick(FPS) 

# --- main --- (lower_case names) 

# - init - 

pygame.init() 

screen = pygame.display.set_mode((WIX, WIY)) 
#screen_rect = screen.get_rect() 

pygame.display.set_caption("Piano Tiles") 

# - resources - 

bg = pygame.image.load("Obrazy/test.png")#"background.jpg") 

small_font = pygame.font.SysFont("comicsansms", 25) 
med_font = pygame.font.SysFont("comicsansms", 50) 
large_font = pygame.font.SysFont("comicsansms", 100) 

#fonts = {"small": small_font, "medium": med_font, "large": large_font} 

# - stages - 

go_next = game_intro(screen, "HELLO WORLD") 
if go_next: 
    go_next = game_intro(screen, "PIANO TILES") 
if go_next: 
    go_next = game_intro(screen, "BYE, BYE") 

# - exit - 

pygame.quit()