Hi I am new to this site.
Here is the question.
Currently the program displays an image which is supposed to be the start up screen for three seconds.
I then want it to stop displaying the first image and display another one instead continuously.
I am using pygame version 1.9.1 and python version 2.7.9.
The code is below.
Thanks in advance too.
import pygame, sys
from pygame.locals import *
pygame.init()
gameDisplay=pygame.display.set_mode((600,600))
pygame.display.set_caption("Platypus")
white=255,255,255
black=0,0,0
red=255,0,0
important_platypus=pygame.image.load("C:/Users/Sarah_2/Pictures/no_one_knows_why_Duck_Billed_Platypi_are_important.jpg")
important_platypus=pygame.transform.scale(important_platypus,(600,600))
gameExit=False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
gameDisplay.blit(important_platypus, (0, 0) )
pygame.display.update()
pygame.quit()
quit()
time.sleep is the function you want. Below is a full example:
import pygame, sys
from pygame.locals import *
pygame.init()
gameDisplay=pygame.display.set_mo de((600,600))
pygame.display.set_caption ("Platypus")
time.sleep(3)
gameDisplay=pygame.display.set_mo de((600,600))
pygame.display.set_caption ("second image")
Related
I am trying to recreate this pygame but i keep getting a black screen without anything displayed. I get no error's so i don't know where i need to start.
import pygame
from sys import exit
pygame.init()
screen = pygame.display.set_mode((800, 400))
pygame.display.set_caption("Runner")
clock = pygame.time.Clock()
test_surface = pygame.image.load('graphics/Sky.png')
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.blit(test_surface,(0, 0))
pygame.display.update()
clock.tick(60)
The problem got solved after reinstalling python and pycharm. Not sure if both were needed but it did the trick for me, thanks all.
I'm a Macbook user and I have just recently started learning programming games using python.
my issue is that every time I try to close the screen it doesn't close.
import pygame
import sys
pygame.init()
width = 800
hight = 600
screen = pygame.display.set_mode((width , hight))
game_over= False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT :
sys.exit()
When I point the cursor to the screen it turns to a circle... Cursur, so usually I just press force to quit "on the snake icone" in the dock
So how can I fix this and make the screen close just by pressing the close button ?
I'm using python 3.
Thank you.
Full edited and tested code :
import pygame
import sys
pygame.init()
width = 800
hight = 600
running = True
screen = pygame.display.set_mode((width , hight))
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT :
pygame.quit()
sys.exit()
Test on Linux mint with visual studio code. Tested more than 5 times. Expected results.
As someone new to pygame, I have searched the web for how to create a rectangle. I then used that code, but when run it just showed a blank screen. No error codes showed, but the code didn't run like I thought it would. What am I doing wrong?
import pygame, sys
import pygame.locals as GAME_GLOBALS
import pygame.event as GAME_EVENTS
pygame.init
#window variables
WindowHeight = 480
WindowWidth = 640
surface = pygame.display.set_mode((WindowWidth,WindowHeight))
surface.fill((255,255,255))
pygame.draw.rect(surface,(100,0,155),(0,0,100,100))
while True:
for event in GAME_EVENTS.get():
if event.type == GAME_GLOBALS.QUIT:
pygame.quit()
sys.exit()
Your code is pretty, but to write a good pygame code start from this:
import pygame, sys
from pygame.locals import *
WindowHeight = 480
WindowWidth = 640
def main():
pygame.init()
DISPLAY=pygame.display.set_mode((WindowWidth,WindowHeight),0,32)
WHITE=(255,255,255)
blue=(0,0,255)
DISPLAY.fill(WHITE)
pygame.draw.rect(DISPLAY,blue,(200,150,100,50))
while True:
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
main()
put everything in the main function, init pygame and update the display.
This creates a simple window that is white. Within the window will be a blue rectangle. Look up pygame.org for more info
I am unable to see the image when I start the program. I have a folder named "game" and "mygame.py" file with a "background.png" all in it. I have tried using the the PATH "/game/background.png" instead of "background.png" but it doesn't seem to work. Any ideas?
my code:
import pygame , sys
pygame.init()
#screen start
def screen():
screen = [1024,768]
screen = pygame.display.set_mode(screen,0,32)
pygame.display.set_caption("Testing Caption")
background = pygame.image.load("background.png")
screen.blit(background, (0,0))
while True:
screen.blit(background, (0,0))
#keyboard commands
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
screen()
Thank you.
You are missing the flip/update call:
clock = pygame.time.Clock()
while True:
#keyboard commands
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
screen.blit(background, (0,0))
pygame.display.flip()
clock.tick(40) # keep program running at given FPS
Every blit occurs in a internal buffer, you need to call flip or update once per frame to update the real screen.
To my knowledge you can make this work one of two ways.
You can use an absolute path to the file, such as:
"C:\path_to_game_folder\game\background.png"
or you can use a relative path. To do this add the following code to your program:
import os
dir = os.path.dirname(__file__)
backgroundFile = os.path.join(dir, "background.png")
and change:
pygame.image.load("background.png")
to
pygame.image.load(backgroundFile)
I suggest using relative paths whenever possible it keeps the code portable as well as makes it easier to maintain and distribute.
I got it! Using pygame its important to use "pygame.display.update()" inside while True: screen.flip doesn't work with pygame to refresh or update the screen. Thanks to the users who responded earlier though.
Full Code:
import pygame , sys
pygame.init()
#screen start
def screen():
width , height = 1280,768
screen = pygame.display.set_mode((width,height))
pygame.display.set_caption("Testing Caption")
background = pygame.image.load("background.jpg")
screen.blit(background, (0,0))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
screen.blit(background, (0,0))
pygame.display.update()
screen()
The code loads up a pygame screen window, but when I click the X to close it, it becomes unresponsive. I'm running on a 64-bit system, using a 32-bit python and 32-bit pygame.
from livewires import games, color
games.init(screen_width = 640, screen_height = 480, fps = 50)
games.screen.mainloop()
Mach1723's answer is correct, but I would like to suggest another variant of a main loop:
while 1:
for event in pygame.event.get():
if event.type == QUIT: ## defined in pygame.locals
pygame.quit()
sys.exit()
if event.type == ## Handle other event types here...
## Do other important game loop stuff here.
I'd recommend the following code. First, it includes Clock so your program doesn't eat the CPU doing nothing but polling for events. Second, it calls pygame.quit() which prevents the program from freezing when running under IDLE on windows.
# Sample Python/Pygame Programs
# Simpson College Computer Science
# http://cs.simpson.edu/?q=python_pygame_examples
import pygame
# Define some colors
black = ( 0, 0, 0)
white = ( 255, 255, 255)
green = ( 0, 255, 0)
red = ( 255, 0, 0)
pygame.init()
# Set the height and width of the screen
size=[700,500]
screen=pygame.display.set_mode(size)
pygame.display.set_caption("My Game")
#Loop until the user clicks the close button.
done=False
# Used to manage how fast the screen updates
clock=pygame.time.Clock()
# -------- Main Program Loop -----------
while done==False:
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT: # If user clicked close
done=True # Flag that we are done so we exit this loop
# Set the screen background
screen.fill(black)
# Limit to 20 frames per second
clock.tick(20)
# Go ahead and update the screen with what we've drawn.
pygame.display.flip()
# Be IDLE friendly. If you forget this line, the program will 'hang'
# on exit.
pygame.quit ()
This is a pretty simple issue, you need to handle the "QUIT" event, see the event documentation at: http://www.pygame.org/docs/ref/event.html
EDIT:
It occurs to me now that you might be handling the "QUIT" event and its not working
but without more details to your code I dunno.
A quick example of a simple way to handle the "QUIT" event:
import sys
import pygame
# Initialize pygame
pygame.init()
pygame.display.set_mode(resolution=(640, 480))
# Simple(ugly) main loop
curEvent = pygame.event.poll()
while curEvent.type != pygame.QUIT:
# do something
curEvent = pygame.event.poll()
In using pygame, you have to handle all events including QUIT so if you don't handle the quit event, your program will not quit. Here's a code.
import sys
import pygame
from pygame.locals import *
def main():
running = True
while running:
for event in pygame.event.get():
if event.type==QUIT: #QUIT is defined at pygame.locals
runnning = False
#other game stuff to be done
if __name__=='__main__':
pygame.init()
pygame.display.set_mode((640,480))
main()