hi, so ive been trying to add a splash screen to the start of my game. the user presses "e" to continue and "q" to quit. it's not working, could anyone help.
import os
import pygame
import random
pygame.init()
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
FPS = 60
display_width = 680
display_height = 440
def game_intro():
intro = True
while intro :
for event in pygame.event.get():
if even.type == pygame.Quit:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_e:
intro = False
if event.key == pygame.K_q:
pygame.quit()
quit()
intro_background = pygame.image.load("rock floor.png") #Load the image file
intro_background = pygame.transform.scale(intro_background,(display_width,display_height)) #Make it the same size as the screen
gameDisplay.blit(intro_background(0,0))
pygame.display.update()
clock.tick(15)
class Player(object):
def __init__(self):
self.rect = pygame.Rect(40, 40, 30, 30)
def move(self, dx, dy):
#Move each axis separately. Note that this checks for collisions both times.
if dx != 0:
self.move_single_axis(dx, 0)
if dy != 0:
self.move_single_axis(0, dy)
def move_single_axis(self, dx, dy):
#Move the player
self.rect.x += dx
self.rect.y += dy
#If you collide with a wall, move out based on velocity
for wall in walls:
if self.rect.colliderect(wall.rect):
if dx > 0: #Moving right, Hit the left side of the wall
self.rect.right = wall.rect.left
if dx < 0: #Moving left, Hit the right side of the wall
self.rect.left = wall.rect.right
if dy > 0: #Moving down, Hit the top side of the wall
self.rect.bottom = wall.rect.top
if dy < 0: #Moving up, Hit the bottom side of the wall
self.rect.top = wall.rect.bottom
background = pygame.image.load("dirt floor.png") #Load the image file
background = pygame.transform.scale(background,(display_width,display_height)) #Make it the same size as the screen
class Wall(object):
def __init__(self, pos):
walls.append(self)
self.rect = pygame.Rect(pos[0], pos[1], 40, 40)
os.environ["Time to play"] = "1"
pygame.display.set_caption("Wrath of the gods")
gameDisplay = pygame.display.set_mode((display_width,display_height))
clock = pygame.time.Clock()
walls = [] #List to hold the walls
player = None
end_rect = None
def reinit():
global player, end_rect
player = Player() #Create the player
#Holds the level layout in a list of strings.
level = [
"WWWWWWWWWWWWWWWWW",
"W W W W",
"W WW W WW WWW W",
"W W W W W W W W",
"W WWWWW WWW W W W",
"W W W W W W",
"WW W WW WWWWWWW W",
"W W W W",
"W WWWW W WWWWW WW",
"W W W W",
"WWWWWWWWWWWWWWWEW",
]
# W = wall, E = exit
x = y = 0
for row in level:
for col in row:
if col == "W":
Wall((x, y))
if col == "E":
end_rect = pygame.Rect(x, y, 40, 40)
x += 40
y += 40
x = 0
reinit()
bigfont = pygame.font.Font(None, 80)
smallfont = pygame.font.Font(None, 45)
def play_again():
SCREEN_WIDTH = display_width
SCREEN_HEIGHT = display_height
screen = gameDisplay
text = bigfont.render("YOU WIN Play again?", 13, (0, 0, 0))
textx = SCREEN_WIDTH / 2 - text.get_width() / 2
texty = SCREEN_HEIGHT / 2 - text.get_height() / 2
textx_size = text.get_width()
texty_size = text.get_height()
pygame.draw.rect(screen, (255, 255, 255), ((textx - 5, texty - 5),
(textx_size + 10, texty_size +
10)))
screen.blit(text, (SCREEN_WIDTH / 2 - text.get_width() / 2,
SCREEN_HEIGHT / 2 - text.get_height() / 2))
#Clock = pygame.time.Clock()
pygame.display.flip()
in_main_menu = True
while in_main_menu:
clock.tick(50)
for event in pygame.event.get():
if event.type == pygame.QUIT:
in_main_menu = False
return False
elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
x, y = event.pos
if x >= textx - 5 and x <= textx + textx_size + 5:
if y >= texty - 5 and y <= texty + texty_size + 5:
in_main_menu = False
return True
running = True
while running:
clock.tick(FPS)
for e in pygame.event.get():
if e.type == pygame.QUIT:
running = False
if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE:
running = False
#Move the player
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
player.move(-2, 0)
if key[pygame.K_RIGHT]:
player.move(2, 0)
if key[pygame.K_UP]:
player.move(0, -2)
if key[pygame.K_DOWN]:
player.move(0, 2)
if player.rect.colliderect(end_rect):
again = play_again()
if again:
reinit()
else:
break
#Draw the scene
gameDisplay.blit(background,(0,0))#Blit the background onto the screen first
for wall in walls:
pygame.draw.rect(gameDisplay, red, wall.rect)
pygame.draw.rect(gameDisplay, white, player.rect)
pygame.display.flip()
pygame.quit()
quit()