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

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -