Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Wyścigi Samochodowe
  • Język programu: Locomotive Basic
  • Platforma: Amstrad
  • Kod zamieszczono w Bajtek 7/1989
  • Autor listingu: Roman 'Romek' Poznański
  • Listing nadesłał: Faust

Stan listingu:

4
Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku

Cześć Maluchy!
Przyszedł do Was z wizytą kolega. Nie należy — jak Wy — do Komputerowych Przedszkolaków, a więc komputer jest dla niego urządzeniem egzotycznym i nieco tajemniczym. Po wypróbowaniu kilku gier kolega odkłada drążek sterowy i pyta: „Czy mógłbyś mi pokazać, na czym polega to programowanie?“


W tym momencie stajesz przed poważnym problemem. Jak w ciągu kilkunastu minut przedstawić zasadę programowania? Warto by było napisać także jakiś prosty program. Zwykle taki pokaz kończy się na stworzeniu czegoś podobnego do tego:

10 PRINT "Jurek-Ogorek, kiełbasa i sznurek"
20 PRINT
30 PRINT
40 GOTO 10
(Oczywiście jeśli nasz kolega ma na imię Jerzy.)

Trzeba przyznać — faktycznie — można nazwać to programem i to napisanym jedynie przy pomocy dwóch instrukcji. Kolega stwierdza, że programowanie jest zajęciem fascynującym, ale prawdę mówiąc minę ma nieco zawiedzioną. A może da się wymyślić coś ciekawszego i równie prostego? Właśnie coś takiego chciałem Wam zaproponować. Będą to wyścigi samochodowe napisane przy pomocy tylko jednej instrukcji (PRINT). Rozpoczniemy od zaprogramowania samochodu wyścigowego.

110 PRINT "                     _"
120 PRINT "                 ()-/ -()"
130 PRINT "                   / 1 "
140 PRINT "                   :/+:"
150 PRINT "                   :!o!:"
160 PRINT "                ()-< U >-()"
170 PRINT "                    ./"
RUN                              >ENTER/RETURN<
               _"
           ()-/ -()"
             / 1 "
             :/+:"
             :!o!:"
          ()-< U >-()"
              ./"
Ready

No dobrze, mamy samochód, ale on stoi w miejscu. Poruszymy go również przy pomocy instrukcji PRINT. Uzupełnimy nasz program o następujące linie:

101 PRINT: PRINT: PRINT: PRINT: PRINT:
102 PRINT: PRINT: PRINT: PRINT: PRINT:
103 PRINT: PRINT: PRINT: PRINT: PRINT:
104 PRINT: PRINT: PRINT: PRINT: PRINT:
105 PRINT: PRINT: PRINT: PRINT: PRINT:
171 PRINT: PRINT: PRINT: PRINT: PRINT:
172 PRINT: PRINT: PRINT: PRINT: PRINT:
173 PRINT: PRINT: PRINT: PRINT: PRINT:
174 PRINT: PRINT: PRINT: PRINT: PRINT:
175 PRINT: PRINT: PRINT: PRINT: PRINT:

Ruszył naprawdę. Najpierw wszystkie napisy uciekły do góry, a następnie zza dolnej krawędzi ekranu wyskoczył nasz samochód, przejechał przez cały ekran i zniknął za jego górną krawędzią. Wykorzystaliśmy tutaj zjawisko tak zwanego „przewijania“ ekranu, czyli przesuwania wszystkiego, co znajduje się na ekranie do góry w momencie, gdy kolejna linia nie mieści się na ekranie. W przypadku komputera ZX Spectrum i jego licznej rodzinki sprawa troszeczkę się komplikuje. Otóż Spectrum po zapełnieniu całego ekranu zatrzymuje program i czeka na naciśnięcie dowolnego klawisza. Można tego uniknąć wpisując po uruchomieniu komputera:
POKE 23692,255: REM *** Tylko Spectrum ***
Oczywiście należy to zrobić tak, aby nie widział tego nasz kolega, bo mu się znowu wszystko pomiesza w głowie.
Ale co to za wyścigi skoro mamy tylko jeden samochód? Czym prędzej musimy nadrobić to karygodne zaniedbanie. Oto program rysujący i uruchamiający kolejne samochody.

110 PRINT "               _"
120 PRINT "           ()-/ -()"
130 PRINT "             / 1 "
140 PRINT "             :/+:"
150 PRINT "             :!o!:"
160 PRINT "          ()-< U >-()"
170 PRINT "           ./"
171 PRINT: PRINT: PRINT: PRINT: PRINT:
172 PRINT: PRINT: PRINT: PRINT: PRINT:
210 PRINT "       x"
220 PRINT "   ()-/ -()"
230 PRINT "     o 2 o"
240 PRINT "     //-"
250 PRINT "   : !*! :"
260 PRINT "  ##-: U :-##"
270 PRINT "      ./"
271 PRINT: PRINT: PRINT: PRINT: PRINT:
272 PRINT: PRINT: PRINT: PRINT: PRINT:
310 PRINT "                       ."
320 PRINT "                   {}-/ -{}"
330 PRINT "                      ( 4 )"
340 PRINT "                      </->"
350 PRINT "                      (!*!)"
360 PRINT "                   []-: U :-[]"
370 PRINT "                      :---:"
371 PRINT: PRINT: PRINT: PRINT: PRINT:
410 PRINT "       _"
420 PRINT "   {}-/ -{}"
430 PRINT "     : 3 :"
440 PRINT "     :/-:"
450 PRINT "     :!*!:"
460 PRINT "  {}-: U :-{}"
470 PRINT "      ./"
471 PRINT: PRINT: PRINT: PRINT: PRINT:
472 PRINT: PRINT: PRINT: PRINT: PRINT:
473 PRINT: PRINT: PRINT: PRINT: PRINT:
474 PRINT: PRINT: PRINT: PRINT: PRINT:
475 PRINT: PRINT: PRINT: PRINT: PRINT:


Przy okazji usuńmy linie 173, 174 i 175. Wpisując numer linii i naciskając >ENTER/RETURN<. Zmniejszy to dystans pomiędzy pierwszym samochodem a następnymi.
Pisząc cały ten program skorzystaliśmy dotychczas tylko z jednej instrukcji — instrukcji PRINT. Musicie przyznać, że efekt jest interesujący. Niestety program wykonuje się bardzo szybko i trzeba go uruchamiać od nowa. Są na to dwie rady. Po pierwsze można dopisywać do programu kolejne samochody, a po drugie można wprowadzić nową instrukcję. Łatwiejsze będzie z pewnością to drugie rozwiązanie, tym bardziej, że ta „nowa instrukcja“ nie jest wcale dla nas (a nawet dla Waszego kolegi) nowa. Chodzi tu oczywiście o rozkaz RUN. Przyzwyczailiśmy się korzystać z niego wyłącznie do uruchamiania programu, a tymczasem może on być z powodzeniem wykorzystywany w treści programu.
Dopiszmy więc ostatnią linię.

500 RUN

Teraz nasz program będzie biegał w kółko, aż mu nie przerwiemy lub nie wyłączymy komputera. Szerokiej drogi i gumowych drzew życzy Wam