Üheksateist

Täna võtame ette taas pooleli jäänud galaktikaprogrammi viimise PyGame moodulile. Võtame aluseks eelmise korra tulemuse.

Enne veel võime lihtsustada tähekeste joonistamise meetodi:

def taheke(x, y, s):
n=int((1+s)/3)
return ((x-s, y),(x-n, y-n), (x, y-s), (x+n, y-n), (x+s, y), (x+n, y+n), (x, y+s), (x-n, y+n))

Sedasi hoiame kokku arvuti “võhma” puhtal arvutamisel – muidu peaks iga numbri n (väiksem haarake) kasutamise juhul väljakirjutama valemi ja jooksma neli-viis operatsiooni, nüüd haaratakse tähte joonistades see kaasa vaid üks kord ja numbrit tarvitades pole vaja lisaks arvutada.

Et pilti põnevamaks teha, siis saame küllalt lihtsalt lisada võimaluse kasutada mitut erinevat suurust tähti. Siin toodud tähe joonistaja sobib selleks suurepäraselt, aga lisada tuleks galaktika moodulisse tähe objekti alla suuruse väli, samasugune täisarvuline muutuja kui värv. Lisaks luua või muuta tähe loomismeetodit (__init__) nii, et ka selles suurus määrataks ja suuruse parameetrit kasutada saaks. Viimaks peab tähtede kuvamisel, taheke(x, y, s) meetodit väljakutsudes praegune ettekirjutatud suurus asendada tähe enda omaga.

Edasi lisame programmile nupud.
Selleks tuleks uue muutujana kaasata mõni ristkülik.

Näiteks:
nupp1 = Rect(10, 560, 90, 30)

Joonistada see koos muude asjadega.
Viimaks tuleb lisada sündmuste haldusesse kontroll hiire kohta, näiteks umbes nii saaks jätkata olemasolevat if lauset:
elif event.type == MOUSEBUTTONUP:
if (nupp1.collidepoint(pygame.mouse.get_pos())) :

Teksti lisamine:
kiri = pygame.font.Font(None, 24)
tekst = kiri.render("niinii", 1, (110, 210, 10))
ekraan.blit(tekst, ristkylik)

Nuppude tegemise moodul:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# nupud.py

import pygame, sys
from pygame.locals import *

class Nupp():

    ristkylik = Rect(1, 1, 10, 10)
    tekst = u""
    varv = (0, 0, 0)

    def __init__(self, koordX, koordY, mootX, mootY, tekst, (r, g, b)) :
        self.ristkylik = Rect(koordX, koordY, mootX, mootY)
        self.tekst=tekst
        self.varv=(r, g, b)

    def pihtas(self):
        if self.ristkylik.collidepoint(pygame.mouse.get_pos()):
            return true
        else:
            return false

Faili koos seda kasutama muudetud programmiga saab siit.

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

Lisa kommentaar