Podstawy rysowania w Python - Pygame
Tym razem wprowadzenie do rysowania tworzenia programów w oparciu o bibliotekę pygame w python'ie.
zaczynamy od zaimportowania i zainicjowania biblioteki pygame.
import pygame
pygame.init()
Następnie definiujemy okno w którym będziemy wyswietlać grafikę. Określamy szerokość i wysokość okna, nazwę umieszczoną w pasku na góry okna, oraz dla potrzeb pisani tekstu, rodzaj czcionki.
szerokosc = 1080
wysokosc=800
ekran = pygame.display.set_mode((szerokosc, wysokosc))
pygame.display.set_caption("Algorytm komiwojazera")
czcionka = pygame.font.SysFont("monospace", 30)
Kolejy krok to definiowanie kolorów w oparciu o paletę RGB.
black=[0,0,0]
white=[255,255,255]
green=[0,255,24]
CZERWONY = (255, 0, 0)
ZIELONY = (0, 255, 0)
ZOLTY = (255, 255, 0)
FIOLETOWY = (128, 0, 128)
JASNY_NIEBIESKI = (0, 255, 255)
POMARANCZOWY = (255, 165, 0)
NIEBIESKI = (0, 0, 255)
SZARY = (128, 128, 128)
Dla potrzeb funkcjonalności programu wprowadzamy możliwość wyłączania programu poprzez kliknięcie krzyżyka w prawym, górnym rogu.
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
Teraz przechodzimy do rysowania.
Linii - w argumentach podajemy:
- zmienną pod którą jest zdefiniowane okno
- definiujemy kolor
- określamy współrzędne początku i końca
- określamy grubość linii
pygame.draw.line(ekran, SZARY, (210, 275), (210, 375), 5)
Prostokąta - w argumentach podajemy:
- zmienną pod którą jest zdefiniowane okno
- definiujemy kolor
- określamy współrzędne skranych rogów
pygame.draw.rect(ekran, POMARANCZOWY, (400,400,50,100))
Koła - w argumentach podajemy:
- zmienną pod którą jest zdefiniowane okno
- definiujemy kolor
- określamy współrzędne środka
-średnicę
-grubość linii
pygame.draw.circle(ekran, (128, 0, 128), (60, 200), 50, 0)
Tekst - w argumentach podajemy:
- tekst
- gładkie lub ostre krawędzie
- kolor
label = czcionka.render('tekst na ekranie ', 3, (255, 0, 255))
ekran.blit(label,(200, 200))
I w ten oto sposób uzyskujemy program w którym wykonaliśmy podstawowe obiekty graficzne.
# importujemy biblioteki
import pygame
import time
# inicjujemy bibliotekę pygame
pygame.init()
szerokosc = 1080
wysokosc=800
# deiniujemy okno do zmiennej "ekran"
ekran = pygame.display.set_mode((szerokosc, wysokosc))
# określamy nazwę na pasku
pygame.display.set_caption("Algorytm komiwojazera")
#definiujemy czcionkę jaką będzie wykorzystywał program
czcionka = pygame.font.SysFont("monospace", 30)
#definiujemy kolory z palety RGB
black=[0,0,0]
white=[255,255,255]
green=[0,255,24]
CZERWONY = (255, 0, 0)
ZIELONY = (0, 255, 0)
ZOLTY = (255, 255, 0)
FIOLETOWY = (128, 0, 128)
JASNY_NIEBIESKI = (0, 255, 255)
POMARANCZOWY = (255, 165, 0)
NIEBIESKI = (0, 0, 255)
SZARY = (128, 128, 128)
while True:
for event in pygame.event.get():
# uruchamiamy możliwość wyłączania okna przez kliknięcie krzyżyka
if event.type == pygame.QUIT:
run = False
pygame.quit()
# rysujemy linię
pygame.draw.line(ekran, SZARY, (210, 275), (210, 375), 5)
pygame.display.update()
time.sleep(.5)
pygame.draw.line(ekran, NIEBIESKI, (10, 325), (110, 325), 15)
pygame.display.update()
time.sleep(.5)
# rysujemy prostokąt
pygame.draw.rect(ekran, POMARANCZOWY, (400,400,50,100))
pygame.display.update()
time.sleep(.5)
# rysujemy koło
pygame.draw.circle(ekran, (128, 0, 128), (60, 200), 50, 0)
pygame.display.update()
time.sleep(.5)
# piszemy tekst na ekranie
label = czcionka.render('tekst na ekranie ', 3, (255, 0, 255))
ekran.blit(label,(200, 200))
# odświeżamy ekran
pygame.display.update()
Na poniszym zdjęciu można zaobserwowaćefekt pracy programu.
Istenieje również mozliwość wgrywania istniejących plików graficznych.
#dodanie postaci
postac = pygame.image.load('Rakieta.png')
# dodanie tła
tlo = pygame.image.load('Tło.jpg')
ekran.blit(tlo,(0, 0 )) # wgranie pliku graficznego tła, ze wskazanem współrzędnych górnego lewego roku grafiki w pozycji (0,0)
ekran.blit(postac, (x,y)) # wgranie postaci i wskazanie jej umiejcowienia na ekranie we współrzędnych (x,y)
I w ten oto sposób uzyskujemy program w którym wykonaliśmy podstawowe obiekty graficzne.
A teraz dodajmy reakcje na klawisze.
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_1:
print("1")
if event.key == pygame.K_a:
print("a")
Istnieje możliwość wykrywania dwóch działań, naciśnięcie klawisza - KEYDOWN, lub puszczenie klawisza - KEYUP.
Każdy klawisz ma prypisaną swoją definicję, np. klawisz z liczbą 1 to K_1, a klawisz z literką a to K_a.
Dzięki powyższemu możemy wykrywać działania na klawiature i przypisywć im różne działania, np. przemieszczanie się grafiki.
