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()
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
FPS = 60
display_width = 680
display_height = 440
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()