T1a. Kopioi Koodi 1 ja suorita se. Tee tehtävät koodin lopusta
T1b. Lisätään näppäimistökuuntelija Koodi 2, edelliseen koodiin ja ohjaa neliötä näppäimillä.
T1c. Lisätään toinen kuvio ja tutkitaan törmäyksiä Koodi 3
T1d. Hiiren tapahtumat Koodi 4.
Koodi 1 : Perusta
import pygame
import sys
pygame.init()
ikkuna = pygame.display.set_mode((400, 200))
vari1 = (0,0,0)
vari2 = (255,255,255)
OK = True
x = 10
y = 100
pygame.draw.rect(ikkuna, vari1, (x, y, 20, 20))
while OK:
ikkuna.fill(vari2)
# 5)
# 2)
# 1)
pygame.draw.rect(ikkuna, vari1, (x, 100, 20, 20))
pygame.display.flip() #päivittää näytön
# 3)
# T1a
# 0) Muutetaan kuvio ympyräksi .circle(ikkuna, väri, keskipiste, säde)
# voit laittaa väriksi "red", Keskipiste (x,100), säde kokeile
# 1) Lisää "x = x+5"
# 2) Jos x < 400: x = x+5
# muuten x = 0
# 3) Hidastetaan sopivasti pygame.time.wait(50)
# 4) Lisää tekstiä ruudulle koodi 6
# 5) Poista 1) ja 2) kohdat (objektin liikkuminen)
# T1b
# 1) Lisää tapahtumakuuntelija (Koodi2)
# 2) Muuta [pygame.K_RIGHT] (oikea nuolinäppäin)
# HOX! Suorittaessasi klikkaa ikkuna aktiiviseksi.
# 3) Lisää muut suunnat K_LEFT , K_UP ja K_DOWN ja niihin liittyvät x- ja y-koordinaattien muutokset
Koodi2 : Tapahtumakuuntelija
while OK:
for event in pygame.event.get():
if event.type == pygame.QUIT:
OK = False
keys = pygame.key.get_pressed()
if keys[pygame.K_d]:
x = x+5
#1) Muuta [pygame.K_RIGHT] (oikea nuolinäppäin)
Koodi 3 : Törmäykset
import pygame
import sys
#________ Alustus ____________________
pygame.init()
screen = pygame.display.set_mode((600,600))
pygame.display.set_caption("Suorakulmioiden törmäystarkistus")
# Määritä suorakulmio-OLIOT
olio1 = pygame.Rect(100, 130, 100, 100)
olio2 = pygame.Rect(300, 200, 100, 100)
# ___________ silmukka _________________
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
olio1.x += 5 #olio1 siirto
if olio1.x > 600:
olio1.x = 0
if olio1.colliderect(olio2): # Tarkista törmäys
print("Suorakulmiot törmäävät!")
# Päivitä näyttö
screen.fill((255,255,255))
pygame.draw.rect(screen, "red", olio1)
pygame.draw.rect(screen, "blue", olio2)
pygame.display.flip()
pygame.time.delay(10)
pygame.quit()
sys.exit()
Koodi 4 : Hiiren tapahtumat
import pygame
import sys
pygame.init()
running = True
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((800,600))
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# _________ silmukka _________
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# _____ Hiiren painike ________
mouse_buttons = pygame.mouse.get_pressed()
# [0] = vasen, [1]= keski/rullaus, [2] = oikea
if mouse_buttons[0]:
print("Hiiren vasen painike painettuna")
screen.fill(BLACK)
# _____ Hiiren koordinaatit ________
paikka = pygame.mouse.get_pos()
#______ Piirto _____
pygame.draw.circle(screen, WHITE, paikka, 5)
pygame.display.flip()
pygame.time.delay(10)
pygame.quit()
sys.exit()
T2a. Kuvan lisääminen (kesken)
T2b. Sprite-luokan käyttö (kesken)
T3c. Eka ohjelma
Tutustu lähdekoodiin "Koodi 5" joka löytyy sivun alaosasta. Muokkaa koodia seuraavasti:
a) Muuta ohjausnäppäimeksi nuoli oikeaan (kts. pygame.key -dokumentaatio)
b) Lisää ohjausnapit myös muihin suuntiin
c) Muuta aluksen väri
d) Lisää ehto logiikka-osioon ehdot kuvan pysymiseen ruudulla
Koodi 5
def logiikka(olio):
if olio.x>ruudun_leveys:
olio.x = 0
if olio.y>ruudun_korkeus:
olio.y = 0
if olio.x<0:
olio.x = ruudun_leveys
if olio.y<0:
olio.y = ruudun_korkeus
Koodi 6: Tekstin lisääminen
ika = 18 # muuttujan sisällön tulostamiseen
#___Asetetaan muistiin kirjaisin ja koko
f = pygame.font.SysFont('Arial', 40)
#__Renderoidaan teksti annetulla varilla
t= f.render("Onneksi olkoon " +str(ika)), True, (255,0,0))
#__ Tulostetaan t haluttuihin koordinaatteihin
screen.blit(t, (20, 100)