Kakskümmend üheksa

Võtame näidiseks ühe lihtsa PyGame näite, milles saab liigutada palli:


#!/usr/bin/python
# -*- coding: utf-8 -*-
bif = "bg.jpg"
mif = "ball.png"
import pygame
from pygame import *
pygame.init()
ekraan=pygame.display.set_mode((800, 600), 0, 32)
taust=pygame.image.load(bif).convert()
hiir1=pygame.image.load(mif).convert_alpha()
hiir2=pygame.image.load(mif).convert_alpha()
x, y = 0, 0
liigutax, liigutay = 0, 0
hiir = hiir1
while True :
    for syndmus in pygame.event.get() :
        if syndmus.type == QUIT:
            pygame.quit()
            sys.exit()
        if syndmus.type==KEYDOWN:
            if syndmus.key==K_LEFT:
                liigutax=-1
            elif syndmus.key==K_RIGHT:
                liigutax=+1
            elif syndmus.key==K_UP:
                liigutay=-1
            elif syndmus.key==K_DOWN:
                liigutay=+1
            elif syndmus.key==K_SPACE:
                hiir=hiir2
                ekraan.blit(hiir, (x, y))
            elif syndmus.key==K_TAB:
                hiir=hiir1
                ekraan.blit(hiir, (x, y))
        if syndmus.type==KEYUP:
            if syndmus.key==K_LEFT:
                liigutax=0
            elif syndmus.key==K_RIGHT:
                liigutax=0
            elif syndmus.key==K_UP:
                liigutay=0
            elif syndmus.key==K_DOWN:
                liigutay=0
    x+=liigutax
    y+=liigutay
    ekraan.blit(taust, (0, 0))
    ekraan.blit(hiir, (x, y))
    pygame.display.update()

Vajalikud pildid on siin.

Ja selle keerukam jätk:

Lõpeks meie oma kahe “asjaga” programm: punane pall, mida saab klaviatuurilt juhtida ja rakett, mis jälitab palli. Jälitamisalgoritm on praegu “aeglustuv”, sihtmärgi juurde jõudes on “rakett” väga aeglane.


#!/usr/bin/python
# -*- coding: utf-8 -*-
bif = "bg.jpg"
mif = "ball.png"
gif = "ball2.png"
rif = "rakett.png"

import pygame, sys
from pygame import *

pygame.init()

ekraan=pygame.display.set_mode((800, 600), 0, 32)
taust=pygame.image.load(bif).convert()
hiir1=pygame.image.load(mif).convert_alpha()
hiir2=pygame.image.load(gif).convert_alpha()
rakett=pygame.image.load(rif).convert_alpha()

x, y = 0, 0
rx, ry = 700, 550
liigutax, liigutay = 0, 0
pall = hiir1

kell = pygame.time.Clock()
kiirus = 1

while True :
    for syndmus in pygame.event.get() :
        if syndmus.type == QUIT:
            pygame.quit()
            sys.exit()
        if syndmus.type==KEYDOWN:
            if syndmus.key==K_LEFT:
                liigutax=-1
            elif syndmus.key==K_RIGHT:
                liigutax=+1
            elif syndmus.key==K_UP:
                liigutay=-1
            elif syndmus.key==K_DOWN:
                liigutay=+1
            elif syndmus.key==K_SPACE:
                hiir=hiir2
                ekraan.blit(pall, (x, y))
            elif syndmus.key==K_TAB:
                hiir=hiir1
                ekraan.blit(pall, (x, y))
        if syndmus.type==KEYUP:
            if syndmus.key==K_LEFT:
                liigutax=0
            elif syndmus.key==K_RIGHT:
                liigutax=0
            elif syndmus.key==K_UP:
                liigutay=0
            elif syndmus.key==K_DOWN:
                liigutay=0
    x+=liigutax
    y+=liigutay

    milli = kell.tick()
    sekundid = milli / 1000.
    dm =sekundid * kiirus

    if rx<>x :
        rx-=((rx-x)/kiirus*sekundid)
    if ry<>y :
        ry-=((ry-y)/kiirus*sekundid)
    #rx+=dm

    if x < 0 : x = 0     elif x > 799 : x=799
    if y < 0 : y=0     elif y > 599 : y=599

    ekraan.blit(taust, (0, 0))
    ekraan.blit(pall, (x, y))
    ekraan.blit(rakett, (rx, ry))
    pygame.display.update()

Rakett võib olla suvaline väike osalt läbipaistev PNG (ka muu pilt, aga PNG läbipaistvus võimaldab ilusamat tulemust). Näiteks kiir korras tehtud rakett:

Rubriigid: Uncategorized. Salvesta püsiviide oma järjehoidjasse.

Lisa kommentaar