rhys1619 0 Newbie Poster

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

Colours im using in the game

white = (255,255,255)
black = (0,0,0)
red = (255,0,0)

FPS = 60

The dimension of the game

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 for the player

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 to hold a wall rect

class Wall(object):

def __init__(self, pos):

    walls.append(self)
    self.rect = pygame.Rect(pos[0], pos[1], 40, 40)
Initialise pygame

os.environ["Time to play"] = "1"

Title of game

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

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.