ZaczΩ│y siΩ wakacje... nareszcie woooolne ! Plan m≤j by│ kr≤tki - gram do upad│ego :) Of coz, │adna pogoda nieco go zweryfikowa│a, a pr≤ba odpalenia pierwszej lepszej gry... "program wykona│ nieprawid│ow▒ operacjΩ i nast▒pi jego zako±czenie". No tak, sezon powinienem rozpocz▒µ od reinstalki windy. GodzinΩ p≤╝niej mia│em windΩ w cudownym 640x480x16... Luuuudzie nie mog│oby byµ standardowo 13h ? Tam mamy przynajmniej 256 kolor≤w, a ┐e rozdzia│ka 320x200... jest x-mode i mamy 320x240, a jakby siΩ pokusiµ o obs│ugΩ VESY to mamy 640x480x256 - a kto ma w domu winde i kartΩ niezgodn▒ z VESA 1.2 ??? NIKT ! Of coz na to winda jest za g│upia, a ┐e sterowniki do VGA muszΩ instalowaµ jako ostatnie ! bo inaczej "program wykona nieprawid│ow▒ operacjΩ". MΩka nieziemska instalowaµ skaner w 16 kolorach :) ale po jakiej╢ godzinie (mo┐e nieco wiΩcej) uda│o mi siΩ odpaliµ winde w jakiej╢ ludzkiej palecie. Dobra, instalka pierwszej lepszej gierki, odpalamy i wisi... OK, reset, "wyst▒pi│ b│▒d rejestru, winda przywr≤ci rejestr z kopii zapasowej". A przywracaj sobie pomy╢la│em, kolejny reset i winda siΩ odpali│a - w 16 kolorach... Na drugi dzie± kolejna reinstalka i naprawdΩ niechΩµ do wind... a jak siΩ mieszka na 9 piΩtrze... sami rozumiecie... no wiΩc kolejne !!! Reinstalki i zawsze jakie╢ problemy z rejestrem. Dosz│o do tego, ┐e nawet drivery wywo│ywa│y b│Ωdy. Ob│Ωd totalny. Na wszystko s▒ sposoby i skasowanie wszystkiego wg maski *scan*.* pozwoli│o mi olaµ problemy z rejestrem, inna sprawa, ┐e gierki nadal siΩ sypi▒. 

Jako, ┐e od czasu do czasu pisa│em sobie jakie╢ u┐ytki w Pascalu, ostatnio nawet w C, pomy╢la│em, ┐e zrobiΩ grΩ. Mia│em nadziejΩ, ┐e sam spos≤b kodowania nie bΩdzie siΩ specjalnie r≤┐ni│ od u┐ytk≤w... wcale a wcale :) Zdecydowa│em siΩ na pisanie w C++. Gdzie╢ wyczyta│em, ┐e pierwsz▒ gr▒ powinien byµ Tetris bo... ale ja mam do╢µ tetris≤w, wiΩc pomy╢la│em o Sokobanie. W zasadzie dosyµ szybko wymy╢li│em sobie zasadΩ dzia│ania mechanizmu gry. Tryb graficzny... uzna│em za idealny 13h - │atwo╢µ programowania tego trybu i rozs▒dna prΩdko╢µ (ale za to fajnie wygl▒da wy╢wietlanie pikseli za pomoc▒ przerwa±... widaµ jak siΩ piksele pojawiaj▒) przy pisaniu do pamiΩci karty. Poza tym nie chcia│em sobie komplikowaµ ┐ycia, jako ┐e to moja pierwsza gra, wiΩc i tak nale┐a│o "lekko" zmieniµ podej╢cie... nagle z 80x25 robi│o siΩ 320x200. Napisa│em procedurki ustawiaj▒ce tryb graficzny i stawiaj▒ce piksel. Na razie nie widzia│em potrzeby buforowania ekranu i ca│o╢µ operowa│a bezpo╢rednio na pamiΩci graficznej. W ko±cu mia│ byµ Sokoban, nie Quake. Dobra, grafika ustawiona, piksel zapalony, mo┐na zacz▒µ bawiµ siΩ w pisanie gry. Ekran podzieli│em na kwadraty 10x10 pikseli, tak wiΩc mog│em ekran przechowywaµ w tablicy [32][20]. Ka┐dy element tablicy by│ z kolei tablic▒ 10x10 reprezentuj▒c▒ poszczeg≤lne pola ekranu - za╢ warto╢ci w tablicy by│y kolorami punkt≤w. Warto╢ci w du┐ej tablicy okre╢la│y ma│e pole. 

Moim zdaniem by│o to dobre rozwi▒zanie do Sokobana - gdy┐ mia│em zamiar wszystkie obliczenia i zdarzenia wykonywaµ w│a╢nie na tej (du┐ej) tablicy, by j▒ na koniec wy╢wietliµ. Tak wiΩc ca│y "engine" bazuje na tablicy, w kt≤rej sprawdza siΩ tylko poszczeg≤lne pola. Pozwoli│o mi to na │atw▒ konstrukcjΩ poziom≤w, kt≤re s▒ jako osobne pliki zajmuj▒ce 641 bajt≤w. Po kilku dniach (ponad tydzie±) uda│o mi siΩ napisaµ program zdolny do gry. Paczki mo┐na by│o przesuwaµ, ╢ciany odgradza│y, by│y pola docelowe i po spe│nieniu odpowiednich warunk≤w wygrywa│o siΩ plansze. Jedynym felerem pozosta│a grafika, jako ┐e do niej nie mam uzdolnie±, roboczo ╢ciana by│a literk▒ S, paczka P, ludzik L itd... Ca│y dzie± mΩczy│em siΩ ┐eby jako╢ to wygl▒da│o, teraz nawet ╢ciana jest podobna do ╢ciany ! Ludzik pozosta│ kulk▒ :) co pozwoli│o mi unikn▒µ dodatkowych problem≤w (m.in. jak bym go zaanimowa│... nie wiem). Po tym wszystkim uzna│em, ┐e swoj▒ pierwsz▒ grΩ napisa│em ! Bo najwa┐niejsze - kod - by│. Uwa┐am, ┐e "engine" napisa│em, bo na ka┐dej planszy o wymiarach do 32x20 gra dzia│a poprawnie. Of coz nie mog│em tak zako±czyµ. Doda│em menu, statystyki - ruchy, przesuniΩcia. W planie mam edytor poziom≤w (dla siebie - niewygodnie siΩ robi poziomy HexEditorem), opcje - typu bipanie przy niedozwolonym ruchu (ju┐ jest, ale dodam mo┐liwo╢µ wy│▒czenia), no i of coz wiΩcej poziom≤w. Strasznie nie podoba mi siΩ te┐ systemowa czcionka w 13h, wiΩc robiΩ swoj▒ obs│ugΩ tekst≤w i ju┐ przyzwoicie dzia│a dla du┐ych liter. Jak widaµ ca│y czas mΩczΩ siΩ nad moj▒ gierk▒, a ju┐ mam w planie nastΩpn▒ - na razie zarys, ale powoli sobie wszystko obmy╢lam. Przy czym bΩdzie to co╢ nowego, a nie powielanie staroci. Aktualnie spieram siΩ z problemem typu: braku pamiΩci do kompilacji - ca│kowity odlot - kompilator zaleca mi uproszczenie kodu, je┐eli mam ju┐ 640 kilo pamiΩci... jak ja go mam upro╢ciµ ??? Ja siΩ czasem sam dziwiΩ ┐e to dzia│a... Jak tylko dokonam ostatecznych szlif≤w, wrzucΩ grΩ na swoj▒ stronΩ, jako freeware naturalnie, choµ my╢lΩ, ┐e m≤g│bym odnie╢µ komercyjny sukces robi▒c SokoPikaczu :) Z najnowszych wie╢ci - pod plansz▒ wy╢wietla siΩ ju┐ ciekawe t│o (uda│o mi siΩ wreszcie zrobiµ obs│ugΩ bitmap, tylko czemu w│a╢ciwe dane s▒ zapisywane od ko±ca?), a ca│a paleta barw zosta│a ulepszona.

Jak zwykle optymistycznym akcentem 
/ W Polsacie znowu leci Mac Gyver - jakie szczΩ╢cie mia│ ten facet, ┐e nie krΩcili go za panowania wINDOWSA 95... /
Pozdrawia

PaBre
pabre@wp.pl