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.

:)