python - Why doesn't titlescreen display anything? -
import pygame,sys pygame.init() size = (425,550) screen = pygame.display.set_mode(size) lightcyan = (191,255,255) black = (0,0,0) titlefont = pygame.font.sysfont("calibri",36) subtitlefont = pygame.font.sysfont("calibri",24) def title(): titlescreenalpha = 0 centeredtext = pygame.display.set_mode(size) centeredtext = centeredtext.convert() centeredtext.set_alpha(0) titlescreen = pygame.display.set_mode(size).convert() titlescreen.set_alpha(titlescreenalpha) nowiseetext = titlefont.render("now see",1,black) centeredtext.blit(nowiseetext,(0,0)) nowiseetextrect = nowiseetext.get_rect() nowiseetextrect.center = (size[0]/2,225) while true: event in pygame.event.get(): if event.type == pygame.quit: pygame.quit() sys.exit() if titlescreenalpha < 255: titlescreenalpha += 1 titlescreen.set_alpha(titlescreenalpha) print(titlescreenalpha) screen.fill(lightcyan) titlescreen.blit(nowiseetext,nowiseetextrect) pygame.display.flip() pygame.time.wait(10) title() i'm attempting make title sequence e-spread optics. have far.
whenever run it, titlescreenalpha increases 1 until reaches 255, titlescreen.set_alpha(titlescreenalpha) doesn't seem working.
why can see stuff on screen?
you have mess in code. use set_mode 3 times use create window, not surfaces. pygame has pygame.surface() create surface.
main problem alpha.
pygame has 2 types of alpha:
- per pixel alpha - every pixel has own alpha values (ie. image transparent background)
- full surface alpha - pygame uses same alpha pixels (ie. smoothly show/hide image)
pygame can't use both in 1 surface - see set_alpha
you have create text background , can use set_alpha
import pygame import sys # --- constants --- (upper_case names) lightcyan = (191, 255, 255) black = ( 0, 0, 0) white = (255, 255, 255) size = (425, 550) # --- classes --- (camelcase names) # empty # --- functions --- (lower_case names) def title(): # init pygame.init() # create window screen = pygame.display.set_mode(size) screen_rect = screen.get_rect() # create fonts title_font = pygame.font.sysfont("calibri", 36) subtitle_font = pygame.font.sysfont("calibri", 24) # render surface text (and background) , center on screen text = title_font.render("now see", true, black, lightcyan) # white) text = text.convert() text_rect = text.get_rect(center=screen_rect.center) text_alpha = 0 while true: event in pygame.event.get(): if event.type == pygame.quit: pygame.quit() sys.exit() elif event.type == pygame.keydown: if event.key == pygame.k_escape: pygame.quit() sys.exit() # change "full surface alpha" if text_alpha < 255: text_alpha += 1 text.set_alpha(text_alpha) print(text_alpha) # draw on `screen` screen.fill(lightcyan) screen.blit(text, text_rect) pygame.display.flip() pygame.time.wait(10) # --- main --- title() edit: more complex version :)
import pygame import sys # --- constants --- (upper_case names) lightcyan = (191, 255, 255) black = ( 0, 0, 0) white = (255, 255, 255) size = (425, 550) # --- classes --- (camelcase names) # empty # --- functions --- (lower_case names) def title(message, screen, scree_rect): # create fonts title_font = pygame.font.sysfont("calibri", 36) subtitle_font = pygame.font.sysfont("calibri", 24) # render surface text (and background) , center on screen text = title_font.render(message, true, black, lightcyan) # white) text = text.convert() text_rect = text.get_rect(center=screen_rect.center) text_alpha = 0 while true: event in pygame.event.get(): if event.type == pygame.quit: return false # skip rest of program elif event.type == pygame.keydown: if event.key == pygame.k_escape: return true elif event.type == pygame.mousebuttondown: if event.button == 1: return true # change "full surface alpha" if text_alpha < 255: text_alpha += 1 text.set_alpha(text_alpha) print(text_alpha) # draw on `screen` screen.fill(lightcyan) screen.blit(text, text_rect) pygame.display.flip() pygame.time.wait(10) # --- main --- # init pygame.init() # create window screen = pygame.display.set_mode(size) screen_rect = screen.get_rect() # many scenes result = title("click mouse", screen, screen_rect) if result: # skip if pygame.quit result = title("or press esc", screen, screen_rect) if result: # skip if pygame.quit result = title("now see", screen, screen_rect) if result: # skip if pygame.quit result = title("hello world", screen, screen_rect) if result: # skip if pygame.quit result = title("bye, bye", screen, screen_rect) # quit pygame.quit() sys.exit()
Comments
Post a Comment