Hi, i was want to add an image that is displayed before my game and then the user will click or press enter and the image will disappear and my game will start. I have tried "blit" and a few other thinks to try and get the image to appear but have not succeeded. Can anyone help me on where to start.

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

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

Recommended Answers

All 2 Replies

It looks like there are 3 duplicates on the same topic.

Maybe you need to narrow down the question?

I see some mention of the splash screen so I'd look deeper into that to see about adding a line of code to wait for a click input.

But posting the same question over and over is not accepted on all the forums I visit.

I'm not sure!

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.