The Python Game Book

code games. learn Python.

User Tools

Site Tools


en:part2:pygame:step008

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:part2:pygame:step008 [2010/01/24 16:58]
horst
— (current)
Line 1: Line 1:
-^ [[:en:part2:step007| ← previous]] ^ [[en:part2:start| ↑ Overview]] ^ [[:en:part2:step009| → next ]] ^ 
-====== step 008 - loading images ====== 
-==== discussion ==== 
-=== loading images === 
-Using pre-fabricated images instead of painting all images yourself with the [[http://www.pygame.org/docs/ref/draw.html|pygame.draw - functions]] comes very handy. This example shows you how to load images into pygame. Note that in this example, the images must be in the same folder as the python program ! In this example, if pygame can not find the images, it will print an error message and use the image-drawing methods from the previous code example. 
- 
- 
- 
-=== catching file not found error ==== 
- 
-This is done using the **try:** **except:** method. 
-<code python> 
-try: 
-   #do something risky that may not work like loading files 
-   #... 
-except: 
-   #do that if an error occurs inside the try block 
-   #... 
-# continue here if no error 
-</code> 
- 
- Also see the official documentation: 
-==== documentation ==== 
-  * python 2.x  
-    * http://docs.python.org/reference/compound_stmts.html#the-try-statement 
-  * python 3.x 
-    * http://docs.python.org/3.1/reference/compound_stmts.html#the-try-statement 
- 
-==== additional resources ==== 
-Put those 2 graphic files in the same folder as **part2step008-loading-image.py** to make the program run correctly. If one or both of those files are not found you will see a brown and a blue circle instead: 
-^ filename ^ preview((left-click to zoom to original size)) / note  ^ folder ((<key>.</key>  means the same folder as the program)) ^ source ^ license ^ 
-| {{filename>babytux.png}} | {{:en:part2:babytux.png|Babytux graphic file (.png) with transparent border}} |  <key>.</key>   | [[http://commons.wikimedia.org/wiki/File:Mini-babytux.gif|wikimedia commons]] from [[http://commons.wikimedia.org/wiki/File:Gnu.tux-1600x800.png|wikimedia commons]] | [[wp>GNU_General_Public_License|GNU-GPL]] | 
-| {{filename>background640x480_a.jpg}} | {{:en:part2:background640x480_a.jpg?150|background.jpg file}} \\  |  <key>.</key>  | [[en:resources:people:jens_horst:start|Horst JENS]] | public domain | 
-| {{:en:part2:part2step008.zip|}} | all files except the source \\ code in a zipped package | | | 
- 
- 
-<html><a rel="license" href="http://creativecommons.org/licenses/by/3.0/at/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/at/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/StillImage" property="dc:title" rel="dc:type">background640x480a</span> von <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.pythongamebook.com" property="cc:attributionName" rel="cc:attributionURL">Horst JENS</a> steht unter einer <a rel="license" href="http://creativecommons.org/licenses/by/3.0/at/">Creative Commons Namensnennung 3.0 &#214;sterreich Lizenz</a>.<br />&#220;ber diese Lizenz hinausgehende Erlaubnisse k&#246;nnen Sie unter <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.pythongamebook.com" rel="cc:morePermissions">http://www.pythongamebook.com</a> erhalten.</html> 
- 
-==== source code ==== 
- 
-<code python| part2step008-loading-image.py> 
-# -*- coding: utf-8 -*- 
-""" 
-part2step008-loading-image.py 
- 
-loading images from harddisk and using convert_alpha() 
-This program try to load 2 image files from the harddisk. Both files must be in the 
-same folder as the program itself. If the image files are not found, images are 
-created by code instead and an error message is printed. 
-Note that convert_alpha() is only necessary when the loaded image had 
-a transparent color. Some .png and .gif files have this, but never .jpg files. 
-""" 
-import pygame 
-pygame.init() 
-screen=pygame.display.set_mode((640,480)) # try out larger values and see what happens ! 
-try: 
-    background = pygame.image.load("background640x480_a.jpg") 
-except: 
-    print("Error: the image background640x480_a.jpg is not in this folder") 
-    background = pygame.Surface(screen.get_size()) # create a pygame Surface 
-    background.fill((255,255,255))                 # fill the background white  
-    pygame.draw.circle(background, (50,50,0), (300,250), 200)   # draw circle 
-try: 
-    ball = pygame.image.load("babytux.png") 
-except: 
-    print("Error: the image babytux.png is not in this folder") 
-    ball = pygame.Surface((50,50))     #create a new black surface  
-    ball.set_colorkey((0,0,0))          
-    pygame.draw.circle(ball, (0,0,255), (25,25),25) # paint blue circle 
-#finally: 
-background = background.convert()  # jpg can not have transparency 
-ball = ball.convert_alpha()        # png image has transparent color  
-ballx, bally = 550, 240            # start position of ball surface 
-dx, dy  = 60, 60                   # ball speed in pixel per second ! 
-screen.blit(background, (0,0))     # blit background on screen (overwriting all) 
-screen.blit(ball, (ballx, bally))  # blit the ball shape  
-clock = pygame.time.Clock()        # create pygame clock object  
-mainloop = True 
-FPS = 60                           # desired max. framerate in frames per second.  
-while mainloop: 
-    milliseconds = clock.tick(FPS)  # milliseconds passed since last frame 
-    seconds = milliseconds / 1000.0 # seconds passed since last frame 
-    for event in pygame.event.get(): 
-        if event.type == pygame.QUIT: 
-            mainloop = False # pygame window closed by user 
-        elif event.type == pygame.KEYDOWN: 
-            if event.key == pygame.K_ESCAPE: 
-                mainloop = False # user pressed ESC 
-    pygame.display.set_caption("[FPS]: %.2f X:%.1f Y:%.1f Speed" 
-    " [pixel/sec] dx:%.2f dy:%.2f" % (clock.get_fps(), ballx, bally, dx, dy)) 
-    # only blit the part of the background where the ball was (cleanrect) 
-    dirtyrect = background.subsurface((round(ballx,0),  
-                round(bally,0), ball.get_width(), ball.get_height())) 
-    # comment out the next line for a funny effect ! 
-    screen.blit(dirtyrect, (round(ballx,0), round(bally,0)))  
-    #calculate new center of ball  
-    ballx += dx * seconds # time based movement 
-    bally += dy * seconds 
-    # bounce ball if out of screen 
-    if ballx < 0: 
-        ballx = 0 
-        dx *= -1  
-    elif ballx + ball.get_width() > screen.get_width(): 
-        ballx = screen.get_width() - ball.get_width() 
-        dx *= -1 
-    if bally < 0: 
-        bally = 0 
-        dy *= -1 
-    elif bally + ball.get_height() > screen.get_height(): 
-        bally = screen.get_height() - ball.get_height() 
-        dy *= -1 
-    # paint the ball     
-    screen.blit(ball, (round(ballx,0), round(bally,0)))     
-    pygame.display.flip()          # flip the screen 30 times a second                # flip the screen 30 (or FPS) times a second 
-</code> 
-^ [[:en:part2:step007| ← previous]] ^ [[en:part2:start| ↑ Overview]] ^ [[:en:part2:step009| → next ]] ^ 
  
en/part2/pygame/step008.1264348723.txt.gz · Last modified: 2014/01/09 11:07 (external edit)