Kurs QBasic - Dodatek B
Zaawansowana grafika, czyli jak używać programu QPaint
Oczywiście z tym słowem "zaawansowana" trochę przesadziłem. Jednak mimo wszystko program mojego autorstwa może znacząco ułatwić tworzenie rysunków w basicu. Zanim pokażę jak z niego korzystać chce wspomnieć o kilku sprawach. Obecnie program QPaint jest w bardzo wczesnej fazie rozwoju, jednak pomimo tego faktu nie planuję dalej nad nim pracować. Nie należy jednak aż tak bardzo się tym zamartwiać, bowiem dobrą wiadomością jest fakt, że program jest opensource. Co za tym idzie każdy może ściągnąć sobie kod źródłowy programu i dowolnie go zmodyfikować. Kto wie, może to TY popracujesz nad moim programem i stworzysz coś całkiem strawnego. Jeżeli Ci się to uda, koniecznie mnie o tym poinformuj ! Jak już wspomniałem, program jest we wczesnej wersji tworzenia i tym samym oferuje jedynie ołówek i... toporne sterowanie. Jedyną zaletą programu jest możliwość wykorzystania stworzonych w programie rysunków do swoich własnych gier i programów. I wbrew pozorom nie jest to takie trudne, jak może się wydawać. Poniższy "program-wzór" pozwoli wyświetlić dowolną grafikę stworzoną w QPaincie. Wystarczy jedynie wkleić poniższy kod programu do swojego projektu i odrazu można się cieszyć gotowym rysunkiem. Oczywiście nic nie stoi na przeszkodzie, aby kod programu zmodyfikować. Wszystko zależy tylko od Ciebie. Zatem zaczynamy...
Na początku powinieneś ściągnąć program QPaint z mojej strony internetowej, rozpakować go i uruchomić. W następnej kolejności wybierz opcję stworzenia nowego rysunku. Na następnym ekranie pojawią się pytania odnośnie rozmiaru rysunku. Po dokonaniu odpowiednich wyborów twoim oczom ukaże się ekran z nowym projektem. W tym miejscu tworzysz rysunek. Gdy go ukończysz, zapisz go na dysk twardy. Na dysku w katalogu QPaint powinien pojawić się plik rysunku. Teraz powinieneś skopiować ten plik do folderu z programem, w którym chcesz użyć rysunku i w odpowiednim miejscu swojego programu wpisać poniższy kod:
10 REM PrgB1 Wyswietlanie rysunku utworzonego w QPaint 15 REM Ponizej przygotowuje program do wyswietlenia grafiki 20 CLS 30 DIM rys%(241, 131) 40 SCREEN 13 43 REM Tutaj zaczyna sie wlasciwy program odpowiedzialny 47 REM za wyswietlenie grafiki 50 OPEN "nazwa_rysunku.rys" FOR INPUT AS #1 60 INPUT #1, wymiarx, wymiary 70 FOR y = 1 TO wymiary 80 FOR x = 1 TO wymiarx 90 INPUT #1, rys%(x, y) 100 PSET (x + x0, y + y0), rys%(x, y) 110 NEXT x: NEXT y 120 CLOSE 1
W linii 30 tworzymy macierz, do której wczytamy wszystkie piksele rysunku. Tworzenie macierzy nie jest konieczne, chyba że chcesz wykonywać operacje na rysunku. W linii 40 uruchamiamy tryb graficzny (QPaint pracuje jedynie w trybie SCREEN 13). W linii 50 otwieramy kanał dla pliku rysunku. W tym miejscu zamiast "nazwa_rysunku" należy wpisać poprawną nazwę rysunku. Jeżeli chcesz umieścić plik rysunku w podfolderze, musisz dopisać odpowiednią ścieżkę dostępu do pliku (np: grafika\nazwa_rysunku). W linii 60 program odczytuje rozmiary rysunku, a w liniach 70 - 110 tworzy pętle, których długość zależy od rozmiaru rysunku. W linii 90 następuje odczytanie wszystkich pikseli rysunku i zapisanie ich do macierzy rys%. W linii 100 program wyświetla piksel odczytany w linii 90. Całość kończy się w linii 120 zamknięciem kanału. Jak już wspomniałem, tworzenie macierzy nie jest obowiązkowe. Skrócona wersja programu może wyglądać następująco:
10 REM PrgB2 Wyswietlanie rysunku utworzonego w QPaint (2) 20 CLS 40 SCREEN 13 43 REM Tutaj zaczyna sie wlasciwy program odpowiedzialny 47 REM za wyswietlenie grafiki 50 OPEN "nazwa_rysunku.rys" FOR INPUT AS #1 60 INPUT #1, wymiarx, wymiary 70 FOR y = 1 TO wymiary 80 FOR x = 1 TO wymiarx 90 INPUT #1, piksel 100 PSET (x + x0, y + y0), piksel 110 NEXT x: NEXT y 120 CLOSE 1
W tym miejscu całą zawartość macierzy zastąpiliśmy jedną zmienną - "piksel". Taki zabieg znacząco pozwolił oszczędzić pamięć RAM komputera. Osoby, które mają pewne pojęcie o programowaniu z pewnością zauważyły, że wyświetlanie rysunku za pomocą polecenia PSET do najszybszych nie należy. Niestety sam osobiście nie znam innej metody na wyświetlanie rysunków i tym samym mogę cię nauczyć jedynie takiej metody.