Archiwum z Luty 2014

NOMAM Basic Ten-Liners 2014 – Wisielec

poniedziałek, 24 Luty 2014

Gra „Wisielec” powstała na potrzeby NOMAM Basic Ten-Liners 2014. Czas kodowania ok. 5-6 godzin ze względu na przypomnienie sobie filozofii TurboBasica XL.

Gra popularna na nudnych lekcjach, zwłaszcza języka polskiego…

Zasady:

Jedna osoba (komputer) wymyśla hasło do zgadnięcia; Druga osoba (Ty) zgaduje litery w odgadywanym wyrazie; odgadnięta litera (litery) pojawia się w wyrazie; jeśli nie występuje w wyrazie, pojawia się kolejny element (najpierw) szubienicy, a potem samego wiszącego.

Wyrazy (w ilości 53) zaciągnięte z serwisu http://listofrandomwords.com/

Omówienie kodu:Hanged

0

Pierwsza linijka wykona się tylko raz, stąd ma deklaracje zmiennych tekstowych; ponadto przestawia generator znaków o pół wyżej; następnie dane szubienicy.

1

To jest początek pętli gry. pierwszy poke powoduje pozbawienie nas jednego z kolorów (pomarańczowego), ale za to mamy spację :D; następnie losowanie wyrazu oraz dekodowanie.

2

Wypisanie tytułu, reset bufora wyrazu oraz wczytanie ew. przypadkowego klawisza.

3

Rysujemy kolejny element szubienicy… oraz zapamiętujemy bieżący częściowo odgadnięty wyraz.

4

Jeśli doszliśmy do całej szubienicy (dwie kropki w linijce 0) to przegrana.

5

w pętli czekamy na klawisz.;  następnie nanosimy literkę na wyraz.

6

Jeśli odgadliśmy wyraz (nie ma kółeczek) to wygrana. Jeśli wyraz się nie zmienił, to skok do linii dorysowującej szubienicę, w p. p. linijka dalej.

7

To jest procedura rysowania kolejnego elementu szubienicy.

8

To jest procedura wypisania wyrazu. Jeśli w=0 to nie czekaj, w p. p. czekaj 3 sek.

9

To jest procedura wypisania wyrazu na koniec gry; pokazuje cały wyraz niezależnie, czy odgadnięty czy nie.

Ciekawostki:

  • Nie przerabiałem oryginalnego generatora znaków – spację uzyskałem przez wyzerowanie pomarańczowego koloru :)
  • Pisałem jednocześnie pod Atari800MacX korzystając z urządzenia H6: edytowałem plik głównie w vimie. Dlatego linie są takie długie, można wówczas podać ponoć do 256 – taki jest bufor.
  • Orginalnie gra miała 14 linijek. Podejrzewam, że trudno byłoby ją zbić do mniej niż 8. Już 9 jest wyzwaniem, mimo jednej linijki jednokomendowej; jeśli by się ją złączyło z następną, wymagany byłby „if”. A tak, wypełniłem lukę liniami „data”.
  • Kodowanie wyrazów to prosty „tr” pod uniksem, dekodowanie równie proste. Gdyby wyrazy były niezakodowane, byłoby mniej zabawy.
  • Wyrazy, jak napisałem, pochodzą z http://listofrandomwords.com, wyrzuciłem wszystkie, których nie znałem, więc do gry zakwalifikowały się sensowne (ale trudne) wyrazy.

ATR z grą do pobrania:

Do not let me hang on!