PYGAME DEVELOPER VISUAL NOVEL DANIEL PHILLIPE GONÇALVES MENEZES SERGIPE ARACAJU.PDF

danielphmenezes 0 views 16 slides Sep 28, 2025
Slide 1
Slide 1 of 16
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16

About This Presentation

PYGAME DEVELOPER VISUAL NOVEL DANIEL PHILLIPE GONÇALVES MENEZES


Slide Content

Pygame
Viikko 13, Ohjelmoinnin jatkokurssi

Mikä Pygame?
Kirjasto "multimediasovellusten" tuottamiseen Pythonilla

Yleisimmin käytetään 2d-pelien tekemiseen

Avointa lähdekoodia, ilmaiseksi käytettävissä

Asennus
Pygame ei tule Pythonin mukana, se täytyy asentaa erikseen

Yleensä helpointa PIP-työkalulla, ks. tarkemmat ohjeet materiaalista
pip install pygame

Pygame - alustus
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))

naytto.fill((0,0,0))
pygame.display.flip()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

Väriarvoista
Ilmoitetaan kolmen komponentin (punainen, vihreä ja sininen) yhdistelmänä
RGB (Red, Green, Blue)
Kaikkien arvot 0 - 255
Käteviä työkaluja löytyy helposti, googlaa "rgb color picker"
(255,0,0) (0,255,0) (255,0,0) (255,255,0) (0,255,255)
(0,0,0) (255,255,255)

Kuvan tuominen ohjelmaan
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))

robo = pygame.image.load("robo.png")

naytto.fill((0, 0, 0))
naytto.blit(robo, (100, 50))
pygame.display.flip()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

Koordinaattijärjestelmä
Origo on piirtoalueen vasemmassa yläkulmassa, kaikki ruudulla näkyvät koordinaatit ovat siis positiviisia
Ikkunan koon voi määrittää, esim. 640 x 480 kokoinen ikkuna:
(0, 0)
(640, 480)

Kuva useampaan kertaan
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))

robo = pygame.image.load("robo.png")

naytto.fill((0, 0, 0))
naytto.blit(robo, (0, 0))
naytto.blit(robo, (100, 50))
naytto.blit(robo, (300, 300))
pygame.display.flip()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

Animaatio
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))

robo = pygame.image.load("robo.png")

x = 0
y = 0
kello = pygame.time.Clock()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

naytto.fill((0, 0, 0))
naytto.blit(robo, (x, y))
pygame.display.flip()

x += 1
kello.tick(60)

Luokkien hyödyntäminen
class Robo:
def __init__(self, x: int, y: int):
self.x = x
self.y = y
self.kuva = pygame.image.load("robo.png")

def piirra(self, naytto):
naytto.blit(self.kuva, (self.x, self.y))

def liikuta_oikealle(self):
self.x += 1
if self.x > 640:
self.x = 0

Luokkien hyödyntäminen (2)
robo = Robo(0, 240)
kello = pygame.time.Clock()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

naytto.fill((0, 0, 0))
robo.piirra(naytto)
robo.liikuta_oikealle()
pygame.display.flip()
kello.tick(60)

Näppäimistön käsittely
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.KEYDOWN:
if tapahtuma.key == pygame.K_LEFT:
print("vasemmalle")
if tapahtuma.key == pygame.K_RIGHT:
print("oikealle")

if tapahtuma.type == pygame.QUIT:
exit()

Kuvioiden piirtäminen
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))
naytto.fill((0, 0, 0))

pygame.draw.rect(naytto, (0, 255, 0), (50, 100, 200, 250))
pygame.draw.circle(naytto, (255, 0, 0), (200, 150), 40)
pygame.draw.line(naytto, (0, 0, 255), (80, 120), (300, 160), 2)

pygame.display.flip()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

Tekstin "piirtäminen"
import pygame

pygame.init()
naytto = pygame.display.set_mode((640, 480))
naytto.fill((0, 0, 0))

fontti = pygame.font.SysFont("Arial", 24)
teksti = fontti.render("Moikka!", True, (255, 0, 0))
naytto.blit(teksti, (100, 50))
pygame.display.flip()

while True:
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()

Tentistä
3-4 ohjelmointitehtävää

Tehtävät eivät niin vaikeita kuin vaikeimmat kurssitehtävät

Kiitos!
Ensi viikolla ei enää luentoa

Tenttiin ei tarvitse ilmoittautua

Tulokset tulevat tammikuussa
Tags