Archive for the 'pygame' Category

29
kol.
09

Freedom The Game

Ovu igricu sam napravio za natjecanje na DoubleBuffer forumu.
Priča:
U zemlji gdje ništa nije besplatno, pa ni zrak, vi morate ubiti The Mother of Chaos, iliti Majku Kaosa i tako prekinuti njenu tiraniju.

Upute:
Za igranje: Pokrenite “main.exe”
Za kontrole: Pogledajte “readme.txt”

Pygame Stranica
Download Stranica

14
kol.
09

Pygame Finale

Ovako izgleda kod za našu igru, gdje igrač kontrolira metak, i uništava kutije.
[tab] je jedan pritisak na tiku “Tab”!

import pygame
from pygame.locals import *
import sys

class Kutija(pygame.sprite.Sprite):
[tab]def __init__(self,x,y):
[tab][tab]#započinjemo sprite
[tab][tab]pygame.sprite.Sprite.__init__(self)
[tab][tab]#stvaramo varijablu self.image za prikaz slike
[tab][tab]self.image = pygame.image.load("kutija.PNG").convert()
[tab][tab]#stvaramo kvadrat koji nam treba za koliziju i poziciju
[tab][tab]self.rect = self.image.get_rect()
[tab][tab]#ovdje mijenjamo poziciju od kvadrata- mislim da sada znate kako micati sprite ;)
[tab][tab]self.rect.x = x
[tab][tab]self.rect.y = y
[tab][tab]self.zivot = 100
[tab]def update(self):
[tab][tab]#ovdje obnavljamo sprite
[tab][tab]if self.zivot<=0:
[tab][tab][tab]#ovdje je mičemo iz grupe- neće se prikazati, ali je se i dalje može koristiti
[tab][tab][tab]self.kill()

class Metak(pygame.sprite.Sprite):
[tab]def __init__(self,x,y,kutije):
[tab][tab]pygame.sprite.Sprite.__init__(self)
[tab][tab]self.image = pygame.image.load("metak.PNG").convert()
[tab][tab]self.rect = self.image.get_rect()
[tab][tab]self.rect.x = x
[tab][tab]self.rect.y = y
[tab][tab]self.kutije = kutije

[tab]def update(self):
[tab][tab]kolizija= pygame.sprite.spritecollide(self,self.kutije,False)
[tab][tab]if kolizija:
[tab][tab][tab]for i in kolizija:
[tab][tab][tab][tab]i.zivot-=5
[tab][tab][tab]self.rect.x-=5
[tab][tab][tab]self.rect.y-=5
[tab][tab]else:
[tab][tab][tab]pass

[tab]def micanje(self,x,y):
[tab][tab]self.rect.x+=x
[tab][tab]self.rect.y+=y

fps = pygame.time.Clock()
pygame.init()
ekran = pygame.display.set_mode((800,600))
pygame.display.set_caption("CroProgrammer Rocks!")
pygame.key.set_repeat(500,30)
kutije = pygame.sprite.Group()
kutije.add(Kutija(10,20))
kutije.add(Kutija(300,20))
kutije.add(Kutija(20,100))
metci = pygame.sprite.Group()
metak = Metak(700,300,kutije)
metci.add(metak)
while True:
[tab]ekran.fill((0,0,255))
[tab]for event in pygame.event.get():
[tab][tab]if event.type==QUIT:
[tab][tab][tab]sys.exit(0)
[tab][tab]elif event.type==KEYDOWN:
[tab][tab][tab]if event.key==K_w:
[tab][tab][tab][tab]metak.micanje(0,-2)
[tab][tab][tab]elif event.key==K_s:
[tab][tab][tab][tab]metak.micanje(0,2)
[tab][tab][tab]elif event.key==K_a:
[tab][tab][tab][tab]metak.micanje(2,0)
[tab][tab][tab]elif event.key==K_d:
[tab][tab][tab][tab]metak.micanje(-2,0)
[tab]metci.draw(screen)
[tab]metci.update()
[tab]kutije.draw(screen)
[tab]kutije.update()
[tab][tab]fps.tick(30)
pygame.display.update()

13
kol.
09

Pygame 5

Kolizija! Dio koji ste svi čekali 😉
Za početak, maknite dio else: self.zivot-=1 u “update” funkciji u klasi “Kutija”.
Sada ćemo dodati sprite “Metak”.
HINT: ako ne želite da igrač mora stalno stiskati tipku, dodajte ovo PRIJE while petlje
pygame.key.set_repeat(500,30)

METAK

class Metak(pygame.sprite.Sprite):
def __init__(self,x,y,kutije):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("metak.PNG").convert()
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.kutije = kutije

def update(self):
kolizija= pygame.sprite.spritecollide(self,self.kutije,False)
if kolizija:
for i in kolizija:
i.zivot-=5
self.rect.x-=5
self.rect.y-=5
else:
pass
def micanje(self,x,y):
self.rect.x+=x
self.rect.y+=y

Što nam fali u našoj videoigri? Meni! Pygame, nažalost, nema vlastiti GUI, pa ćete ili morati napraviti vlastite komponente ili skinuti tuđi GUI. Evo kod za jednostavni gumb:

class Gumb(pygame.sprite.Sprite):
def __init__(self,x,y,funkcija):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("gumb.PNG")
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.funkcija = funkcija
def update(self):
#provjera da li je neka tipka na mišu pritisnuta
klik = pygame.mouse.get_pressed()
#provjera pozicije miša
pozicija = pygame.mouse.get_pos()
#provjera da li se miš sudara sa gumbom i da li je pritisnuta lijeva tipka miša
if self.rect.collidepoint(pozicija) and klik[0]==1:
#obavi funkciju
self.funkcija()

12
kol.
09

Pygame 3

Događaji su okidači, koji kad se pokrenu, uzrokuju nešto.
Preskočit ću kod i prebaciti se na važan dio- petlju “for event in pygame.event.get()

if event.type==QUIT:
sys.exit(0)

#sada dodajemo još neke events-e
elif event.type==KEYDOWN:
print "Tipka pritisnuta!"
if event.key==K_p:
print "Tipka 'p' pritisnuta!"

elif event.type==KEYUP:
print "Tipka otpuštena"

elif event.type==MOUSEDOWN:
if event.button==LEFT:
print "Pritisnuli ste lijevi gumb misa!"

elif event.type==MOUSEUP:
print "Otpustili ste tikpu misa"

elif event.type==MOUSEMOTION:
print "Micete mis!"

Sada kada ste ovo naučili, probajte micati sliku pomoću tipki! Kada se pritisne neka tipka neka se ili x ili y smanji ili poveća, a onda neka se prikaže slika

ekran.blit(nekaslika,(x,y))

Gdje su x i y vaše definirane varijable.

12
kol.
09

Pygame 2

Danas ćemo razgovarati o površinama i slikama. Što su površine? One sadržavaju stvari za prikaz. U prošlom kodu napravili smo jednu- to je bila varijabla “ekran”. Ne trebamo koristiti ostale površine, ali trebamo koristiti “ekran”, koja je stvorena funkcijom “pygame.display.set_mode()”.
Example:

import sys
import pygame
from pygame.locals import *
pygame.init()
ekran = pygame.display.set_mode((800,600))
pygame.display.set_caption("CroProgrammer Rocks!")
#ovdje učitamo našu sliku
#koristimo .convert() kako bi dobili bolje performanse
python = pygame.image.load("big_python.PNG").convert()
metak = pygame.image.load("metak.gif").convert()
#ovdje radimo površinu veličine 10px*10px
sceond = pygame.surface.Surface((10,10))

while True:
ekran.fill((0,0,255))
#ovdje prikazujemo sliku na poziciji x: 10, y:20
ekran.blit(python,(10,20))
#ovdje prikazujemo našu drugu površinu a onda i sliku na njoj
#pozicija metka 0,0 odnosi se na x:0 y:0 od naše površine "second"
screen.blit(second,(30,20))
second.blit(metak,(0,0))
for event in pygame.event.get():
if event.type==QUIT:
sys.exit(0)

Koristimo ekran.fill() da bismo očistili prikaz.

12
kol.
09

Pygame 1

Napokon, Pygame tutorial! Ako niste pročitali Python tutoriale, pročitajte ih. Trebate skinuti trenutnu verziju Pygame-a(1.9.x).
Let’s rock!

Pygame je modul koji omogućuje uporabu SDL-a sa Pythonom.
Kako izgleda osnovna aplikacija u Pygame-u?

import sys
import pygame
#Ovdje importamo Pygameove varijable
from pygame.locals import *
#Ovdje započinjemo Pygame
pygame.init()
#Ovo će postaviti naš ekran dužine 800px i visine 600px
ekran = pygame.display.set_mode((800,600))
#Ovo postavlja naslov prozora na 'CroProgrammer Rocks!'
pygame.display.set_caption("CroProgrammer Rocks!")

#glavna petlja: bez ovoga naša aplikacija bi se odmah zatvorila
while True:
#ovo boji površinu u boju određene RGB vrijednosti
ekran.fill((0,0,255))
#ovdje se provjeravaju događaji: pritisci tipkovnica, miš,...
for event in pygame.event.get():
#ako se klikne na X, naša aplikacija se zatvori
if event.type==QUIT:
sys.exit(0)

Ako ste sve točni napravili, pokazat će se plavi prozor sa naslovom “CroProgrammer Rocks!”. Nije puno, ali ipak je ovo početak 😉




Kategorije

Share-Me

Bookmark and Share