Pasjansik by Kaz 2010-01-27 10:07:25

Czasami poranek zaczyna się od miłej niespodzianki. A to ktoś odnajdzie zaginiony przed laty program, a to ktoś podzieli się napisaną przez siebie muzyką, a to dostaję wiadomość - jak dzisiaj - że powstała nowa gra, rozpoczęta przed laty, a obecnie dokończona.

Autorem gry Pasjans jest Paweł "QTZ", który tak wytłumaczył przyczynę niepohamowanego impulsu, który skłonił go do stworzenia tej karcianej gry: "Do napisania (...) skłoniła mnie grafika kart na (...) stronie i jeden z komentarzy: "Karty są po prostu prześliczne. Ach móc tak pograć w solitare na małym ATARI - bezcenne."



O powstaniu gry

"Dawno temu zajmowałem się Atari BASIC'iem głównie przepisywałem programy z Bajtka i kilku innych pisemek, modyfikowałem je, ale również pisałem swoje. Niestety, większość pozostała niedokończona. Od czasów Atari zajmuje się trochę programowaniem głównie w VB :). Mój obecny sprzęt to Atari 65XE + joystick + XC12 + TURBO K.S.O. 2000 + SIO2PC.

W 1997 roku napisałem "Pasjansa" na małe Atari. Działa on w trybie tekstowym w BASIC'u, ale w oparciu o assembler’owe programy "Okna" Witolda Kolasy i "Copy 256". "Okna" znakomicie nadają się do imitacji okienek Windows'a - podmieniają zawartość ekranu na fragment pamięci zawierający okno do wyświetlenia, co również świetnie nadaje się do wyświetlania kart w pasjansie. Karta przykrywa poprzednią kartę i zdejmowana jest w tej samej kolejności, co układana - stąd efekt zbierania kart przy przenoszeniu większej ilości kart i po ukończeniu gry - aby wizerunki kart zostały przywrócone do pierwotnego stanu.

W załączniku dwie wersje programu "Okna" (przepisane z prasy). Aby zobaczyć efekt działania pierwszej wersji trzeba wczytać "OKNA1.BAS" uruchomić, następnie, wczytać "OKNA1DMO.BAS" i uruchomić. Drugi program "Okna" działa samodzielnie - plik "OKNA2.BAS" (zawiera również instrukcję) i jego właśnie użyłem - zmieniłem tylko formę z DATA na A$, a do umieszczenia go we właściwym miejscu pamięci, jak również nowego zestawu znaków użyłem "Copy 256". Okna pracują w trybach graficznych i tekstowych, więc łatwo można było zrobić karty w postaci grafiki - lub zdefiniować je na foncie. A ponieważ od początku planowałem dodać do programu grafikę, wziąłem się ponownie do pracy...

Pokazane na stronie karty wymagały przekonwertowania do odpowiedniego formatu - u mnie są mniejsze i ze względu na użycie trybu tekstowego pełna trzynastka kart w najwyższej kolumnie (jak na załączonym obrazku z poprzedniej wersji "Pasjansa") nie zmieściłyby się na ekranie:



Zmniejszyłem je na do rozmiarów 3x4 znaki. Walety (były inaczej oznaczone) oczyściłem z oznaczeń w MS Paint, a ponieważ w mojej grze karty nie są podkolorowane, wycieniowałem kolor czerwony, dokonałem też drobnych poprawek:



Rozmieściłem oznaczenia tak, aby były optymalne przy konwersji na font i były bardziej przejrzyste. Dodałem także jokery, które nie są używane w "Pasjansie" - gra zawiera te karty, gdyż przewiduję zrobienie innej karcianki, wykorzystującej wszystkie dostępne karty.


O narzędziach

I tu zaczęły się schody... Planowałem użyć programu "G2F", ale okazało się, że brakuje tam niezbędnej opcji w edytorze czcionki - edytor nie pozwala zmienić pozycji znaku, a program nie pozwala wczytać zmienionych plików FNT/SCR, a w spreparowanym pliku G2F uparcie przypisuje kolejne znaki (autooptymalizacja po wczytaniu), zamiast użyć znaków w takiej kolejności, w jakiej są zapisane (przykładowy plik dołączony).

Więc napisałem własny program Atari Font Mover, który uzupełnia brakującą funkcjonalność "G2F" - umożliwia przesuwanie znaków nie zmieniając kolejności pozostałych, co jest bardzo pomocne, jeżeli chcemy taką grafikę użyć w grze wraz z literami, czy znakami, które powinny być przyporządkowane do konkretnych CHR$.



W programie "G2F" skonwertowałem plik G2F i zoptymalizowałem. Moim programem zmieniłem położenie poszczególnych znaków, jak również niektóre znaki, które oryginalnie były w inverse, plus takie jak cudzysłów i znak, który zawierał bajt niemożliwy do zapisania w linii (F$=), zamieniłem go na inverse. Po poprawkach w "Atari Font Maker" (nie mylić z moim "Atari Font Mover" :)) zapisałem go, a do "Pasjansa" dołączyłem ”linie binarne" wygenerowane moim programem. Po niewielkich przeróbkach "Pasjans" zyskał nową szatę graficzną... Oczywiście zarówno "Atari Font Mover" jak i "Pasjans" są programami freeware.

Ponieważ chciałem zmieścić wszystkie karty w jednym zestawie czcionek, wraz z niezbędnymi literami (które zostawiłem w oryginale) wszystkie figury niezależnie od koloru wyglądają tak samo, ale i tak tylko dama miała swoją alternatywę...


Jak grać?

Kilka słów o samej grze - po uruchomieniu gry wybieramy klawiaturę lub joystick - naciskając klawisz lub fire (przy wybraniu joystick'a dla wygody dowolny klawisz odsłania następną kartę - lub fire + kierunek). Następnie trzeba chwilkę poczekać - tworzone są karty... (mogłyby być zapisane w zmiennej tekstowej od początku, ale tak zajmują ciut mniej miejsca, a ich wygląd jest łatwiejszy w edycji. Można by oczywiście program tworzący karty zapisać jako oddzielny, który tworzyłby linie z danymi dla gry, ale póki co program generujący karty jest wbudowany.



Karty układamy wybierając kartę, którą chcemy przenieść i wskazujemy miejsce docelowe. W celu przeniesienia całego stosu - najszybciej nacisnąć "w dół", a potem "fire" lub "Return" (w zależności od wybranego sterowania). Można przenosić część kolumny. W grze brakuje punktacji, zakończenie gry następuje po ułożeniu wszystkich kart na stosy od asów do króli - gra nie zauważa, że wszystkie karty są odsłonięte - trzeba je ułożyć ręcznie. Gra zawierała bug'a - czasami kursor się rozdwajał (nie miało to wpływu na przebieg gry), ale po latach nie pamiętam już czy go usunąłem...


Pograć w "Pasjansa" możemy po ściągnięciu tego pliku z obrazem dyskietki. Żródełka i wymienione w artykule pliki są dostępne tutaj. A program "Atari Font Mover" powędrował do katalogu użytków.
Kaz 2010-01-27 11:21:11

Fajne, juz dawno nikt nie pisal w Polsce gier karcianych na Atari, moze sie skusisz na gre w tysiaca?
W ewentualnej wersji 1.1 pasjansa proponuje zmienic kolory na bardziej kontrastowe, na przyklad bardzo jasne tlo, a ciemny kolor kart.

m 2010-01-27 11:32:20

no proszę, mija dopiero styczeń, a to już następna premiera ;-) co to będzie do końca roku...

Ramos 2010-01-27 11:55:35

gratuluje fajnej gry. Z miłą chęcią zagram w nią.

alex 2010-01-27 11:59:44

No to teraz pora na wersję graficzną ze spokojnymi music trackami w tle...

xeen 2010-01-27 14:14:25

fajne, ale trzeba się przyzwyczaić do sterowania.
dlaczego czasem "kursor" staje i nie można się ruszyć?

xxl 2010-01-27 20:45:36

sterowanie jest ok. gra jest bardzo dobra - przeszkadza brak kolorkow niestety :/ jednak potrzebne sa kolorki czerwony i czarny, moze jakos pmg podkolorowac?

Kaczor 2010-01-27 23:37:34

Wszystko fajnie i pięknie ale nigdy nie miałem okazji się nauczyć grać w to to. Albo nikt nigdy mi tego nie wyjaśnił, tylko zawsze słyszałem "co ty nie wiesz jak się gra w pasjansa!? Przecież to banalnie proste!" i tak to było. I chol.ra, dalej nie mam pojęcia!

PG 2010-01-28 10:46:51

A nice attempt to use my graphics (not making use of all the potential but that would be difficult in Basic), even though the controls are a bit clumsy.

Jacques 2010-01-28 11:20:26

Dałoby się dodać obsługę myszy z ST lub Amigi?

T 2010-01-28 15:57:15

Gratulacje fajny pasjans. Szkoda, że brak kolorów.