[Python + PyGame]PRVI KORAK- crtanje i micanje slike po ekra

Sadržaji namijenjeni potpunim početnicima u svijetu programiranja i/ili razvoja igara.
Post Reply
User avatar
Danijel Korent
Romulanski špijun na Zemlji
Posts: 1583
Joined: Fri Sep 05, 2008 12:35 pm
Smallest prime number bigger than 20: 23
Location: Njemacka
Contact:

[Python + PyGame]PRVI KORAK- crtanje i micanje slike po ekra

Post by Danijel Korent » Thu Jun 25, 2009 6:42 pm

Ovdje se nalazi source kod od jednostavnog programa u kojem ucitavate neku sliku sa diska, crtate je u prozor i mijenjate joj pozicija sa arrow tipkama. (taj isti kod napisan u C/C++ se moze vidjeti ovde)

Da bi kod mogli pokrenutimorate imati instalirano:

Python interpreter 2.x - 14 mb
http://www.python.org/download/

Pygame library - 1.4 mb (odabrati distribucija za vasu verziju pythona)
http://www.pygame.org/download.shtml

Kod instalacije ne treba nista posebno konfigurirati, jednostavno je kao i instaliranje neke igrice


Ovdje se moze skinuti source kod sa komentarima (u folderu Python):
http://www.box.net/shared/mhsr44earl
- kod se pokrece tako da se samo dvaputa klikne kocka.py, prilikom cega se pokrene python interpreter i program
- da bi se kod editirao mora se datoteka kocka.py otvoriti sa nekim editorom, dovoljan je i obicni notepad, ali najbolje koristiti neki poput Eclipse + plugin za python, al za pocetak moze biti i ovo dovoljno: Notepad++ koji boji Pythonovu sintaksu pa je kod pregledan
Last edited by Danijel Korent on Thu Jun 25, 2009 6:48 pm, edited 3 times in total.

User avatar
Danijel Korent
Romulanski špijun na Zemlji
Posts: 1583
Joined: Fri Sep 05, 2008 12:35 pm
Smallest prime number bigger than 20: 23
Location: Njemacka
Contact:

Re: [PYTHON + PYGAME]PRVI KORAK- crtanje i micanje slike po ekra

Post by Danijel Korent » Thu Jun 25, 2009 6:43 pm

Source kod programa bez komentara:

Code: Select all

import pygame 
from pygame.locals import * 
from sys import exit 
 
pygame.init() 
 
glavni_buffer = pygame.display.set_mode((800, 600), DOUBLEBUF, 32) 
 
kocka_PozicijaX = 100 
kocka_PozicijaY = 100 
kocka_brzina = 50 
kocka_slika = pygame.image.load('kocka.bmp').convert() 
 
glavna_petlja = True 
 
 
while glavna_petlja == True: 
 
    for event in pygame.event.get(): 
        if event.type == QUIT: 
            exit() 
 
        if event.type == KEYDOWN: 
 
            if event.key == K_ESCAPE: 
                glavna_petlja = False 
 
            if event.key == K_LEFT: 
                kocka_PozicijaX = kocka_PozicijaX - kocka_brzina 
 
            if event.key == K_RIGHT: 
                kocka_PozicijaX = kocka_PozicijaX + kocka_brzina 
 
            if event.key == K_UP: 
                kocka_PozicijaY = kocka_PozicijaY - kocka_brzina 
 
            if event.key == K_DOWN: 
                kocka_PozicijaY = kocka_PozicijaY + kocka_brzina 
 
 
    glavni_buffer.fill((0, 0, 0)) 
    glavni_buffer.blit(kocka_slika, (kocka_PozicijaX, kocka_PozicijaY)) 
    pygame.display.flip()  
Last edited by Danijel Korent on Thu Jun 25, 2009 6:48 pm, edited 1 time in total.

User avatar
Danijel Korent
Romulanski špijun na Zemlji
Posts: 1583
Joined: Fri Sep 05, 2008 12:35 pm
Smallest prime number bigger than 20: 23
Location: Njemacka
Contact:

Re: [PYTHON + PYGAME]PRVI KORAK- crtanje i micanje slike po ekra

Post by Danijel Korent » Thu Jun 25, 2009 6:43 pm

Source kod sa komentarima: (moglo bi ruzno izgledati na nizoj rezoluciji)

Code: Select all

# importamo pygame da mozemo koristiti njegove funkcije
import pygame

# ovo koristimo da mozemo koristiti konstante tipa K_ESCAPE bez njenog prefiksa
# (inace bi morali pisati pygame.locals.K_ESCAPE)
from pygame.locals import * 

# importamo funkciju exit iz librarya sys
from sys import exit 

# pygame-ova funkcija koju moramo pozvati da se sam pygame interno inicijalizira 
# bez toga ne rade njegove funkcije
pygame.init()

# funkcija  pygame.display.set_mode stvara prozor na temelju argumenata koje smo joj dali
# ta funkcija ujedno i vraca objekt u nasu varijablu glavni_buffer
#  taj objekt je u biti onaj buffer u kojeg cemo crtati
# OBJEKT - najjednostavnije receno to je struktura koja moze sadrzavat vise varijabala/podataka i 
# vlastite funkcije koje tim varijablama ili podacima manipuliraju 
glavni_buffer = pygame.display.set_mode((800, 600), DOUBLEBUF, 32)


# ovdje smo si definirali nekliko varijbala koje cemo koristiti u nasem programu
kocka_PozicijaX = 100
kocka_PozicijaY = 100
kocka_brzina = 50

# funkcija pygame.image.load ucitava sliku i u kocka_slika vraca objekt sa slikom
kocka_slika = pygame.image.load('kocka.bmp').convert()


# varijabla glavna petlja koja se koritisti u nasoj petlju dolje
# kada je True petlja se "vrti", a kada je False petlja se prekida...
glavna_petlja = True


# kao sto pise gore -  kada je True petlja se "vrti", a kada je False petlja se prekida...
while glavna_petlja == True: 
	
    # ova petlja uzima  iz funkcije pygame.event.get() objekt koji sadrzi nas unos/user input
    # i pridruzuje ga imenu event
    for event in pygame.event.get(): 
        if event.type == QUIT: # ako je pritisnut gumb x na prozoru 
            exit() #  prekida program (from sys import exit)
			
        if event.type == KEYDOWN: #ako je pritisnuta neka tipka
		
            # ako je pritisnut ESC
            if event.key == K_ESCAPE: 
                glavna_petlja = False # varijabla glavna_petlja je false a time se i prekida ova petlja 

            # ako je pritisnuta lijeva tipka (ona strelica lijevo :D )
            if event.key == K_LEFT: 
                # pozicija kocke se poveca za iznos varijable kocka_brzina
                kocka_PozicijaX = kocka_PozicijaX - kocka_brzina 
				
            if event.key == K_RIGHT:
                kocka_PozicijaX = kocka_PozicijaX + kocka_brzina
				
            if event.key == K_UP:
                kocka_PozicijaY = kocka_PozicijaY - kocka_brzina
				
            if event.key == K_DOWN:
                kocka_PozicijaY = kocka_PozicijaY + kocka_brzina
				

    # puni glavni_buffer sa RGB bojom 0,0,0 znaci crna, te time odma brise sve sto se prije nalazilo u njemu
    # tako da moze crtati novu sliku -  odnosno da se nova ne crta preko stare
    glavni_buffer.fill((0, 0, 0))
	
    # crta sliku kocke u glavni_buffer, i to na koordinate x = kocka_PozicijaX i y = kocka_PozicijaY
    glavni_buffer.blit(kocka_slika, (kocka_PozicijaX, kocka_PozicijaY)) 
	
    pygame.display.flip() # prebacuje sadrzaj glavnog buffera na ekran i petlja krece od pocetka
    #kraj glavne peljte i petlja krece iz pocetka --> while glavna_petlja == true:
a.k.a. Koki

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest