Jason. Cała informatyka w jednym miejscu!

Gotowi na kolejną porcję wiedzy z zakresu biblioteki "pygame" :)? Wyświetlanie tekstu za pośrednictwem modułu "pygame.font", ale nie tylko. Programowanie tekstu do gry jest już prostsze niż to, co było z obrazkiem. Zobaczcie sami. Dobrze jest jeszcze przypomnieć sobie jak wygląda tworzenie pustego okna "pygame", aby mieć przygotowany szablon do pracy, bo tutaj koncentrować się będę wyłącznie na części tworzenia tekstu.

WYŚWIETLANIE TEKSTU ZA POMOCĄ "PYGAME.FONT"

Tak jak zdążyłem wspomnieć na samej górze, zdecydowana większość operacji odbędzie się poprzez moduł "pygame.font". Zakładam, że już wiecie czym jest moduł w Pythonie oraz jak go importować na dwa sposoby.

INICJALIZACJA

Zacznijmy od początku, czyli od zainicjowania sobie niezbędnych funkcjonalności zdolnych do wyświetlania tekstu w oknie gry. Nic skomplikowanego, "init" robi ukłon w Waszym kierunku:

pygame.font.init()

To jest metoda niezwracająca żadnej wartości, a zatem po prostu ją wywołujemy zaraz po utworzeniu sobie okienka, linijkę niżej. Nic innego w tym kroku nie trzeba robić.

IMPORT CZCIONKI

Teraz możemy zabrać się za pobranie jednej ze czcionek zainstalowanych w systemie. Mamy taką metodę jak "SysFont" również pochodzącą z modułu "pygame.font". Wywołujemy ją podstawiając zwracaną wartość do nowej zmiennej:

font = pygame.font.SysFont([nazwa rodziny czcionek jako łańcuch znaków], [rozmiar jako liczba całkowita])

Widzimy, że przyjmuje ona dwa parametry. Pierwszym jest łańcuch znaków jako nazwa "rodziny" czcionek jaką się utożsamia wybrana przez nas czcionka zainstalowana w systemie operacyjnym. Nazwałem to "rodziną", gdyż są takie narzędzia, w których koniecznym staje się dopisanie słówka w przypadku zażyczenia sobie używania czcionki pogrubionej czy też w postaci kursywy. Wówczas dopisuje się zwykle "bold" (w przypadku pogrubienia) lub "italic" (w przypadku kursywy). W "pygame" nie trzeba tak robić. Wyświetlanie tekstu wymaga tylko nazwy czcionki "w wersji podstawowej". Drugi parametr to rozmiar wybranej czcionki w postaci dodatniej liczby całkowitej, jeśli chodzi o typ danych.

TWORZENIE ZMIENNEJ DLA TEKSTU

Punkt #3, to zdefiniowanie nowej zmiennej metody "render" pochodzącej ze zmiennej przechowującej naszą czcionkę, czyli dla której wykorzystaliśmy "SysFont". Wygląda to w taki sposób:

text = [czcionka].render([tekst jako łańcuch znaków], [antialiasing jako wartość logiczna], [r, g, b])

Teraz parametry. Pierwszym jest łańcuch znaków jako tekst jaki ma być wyświetlony, drugim jest zdecydowanie czy wygładzanie krawędzi (ang. antialiasing) ma być nałożone na wyświetlanie tekstu (wartość boolowska), a trzeci to znowu lista trzech wartości dla palety barw RGB. Ponieważ jest to tworzenie obiektu od nowa, nie polecam umieszczania tej samej instrukcji w środek pętli "while".

NANOSZENIE TEKSTU

Pamiętacie metodę "blit" z poprzedniej części? Robimy tak samo:

[okno].blit([tekst], [x, y])

Dla "pygame" nie robi różnicy czy do tej samej metody wstawimy obraz, czy tekst.

ODŚWIEŻANIE EKRANU

Zaraz po tej metodzie (oraz po ewentualnym wstawieniu innych obiektów na okno gry), nakazujemy metodą "flip" lub "update" odświeżenie ekranu i wyświetlanie tekstu jest w pełni zakończone!

pygame.display.flip()

PRZYKŁADOWY KOD ŹRÓDŁOWY

Zostawiam na koniec przykładowy kod źródłowy, aby nikomu się nic nie poplątało:

import pygame

window = pygame.display.set_mode([256, 256])
is_running = True

pygame.font.init()

font = pygame.font.SysFont("Comic Sans MS", 24)
text = font.render("Tekst w \"pygame\"", False, [128, 64, 255])

while is_running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            is_running = False

    window.blit(text, [0, 0])
    pygame.display.flip()

pygame.quit()

Wykonanie powyższego kodu przyniesie nam taki efekt:

Wyświetlanie tekstów w "pygame" w Pythonie

Aby zaprogramować wyświetlanie tekstu, należy zainicjować czcionki, utworzyć zmienną dla czcionki pobranej z pliku, utworzyć obiekt tekstu przy użyciu tej samej zmiennej, nanieść tekst na płótno i odświeżyć ekran.

Jak widzicie, przebieg postępowania jest podobny :).


Wszystko w tym temacie. Nie gniewajcie się, że nie ma takich informacji jak wyśrodkowywanie, nakładanie pogrubienia czy zmiana tekstu na inny w trakcie działania. W przyszłości ten artykuł zostanie rozbudowany o takie szczegóły.

PODOBNE ARTYKUŁY