Witam,
bardzo dawno temu byłem posiadaczem Atari 800 XL(1986r.). Postanowiłem przypomnieć sobie te piękne czasy. Pamiętam, że przez pierwsze pół roku nie miałem magnetofonu, więc z chęci pogrania na wymarzonym kompie liznąłem trochę  Atari Basic. Chciałbym do tego wrócić z Waszą pomocą.

Pierwsze moje pytanie w jaki sposób napisać kod sterujący obiektem graficznym z klawiatury. Dla przykładu jak w grze pong, jak nacisnę przycisk strzałki w górę to obiekt porusza się do góry.

Drugie, jak stworzyć prostego duszka/sprite i sterować nim z klawiatury. Bardzo byłbym wdzięczny za okazaną pomoc.

2 Ostatnio edytowany przez Monsoft (2016-06-01 08:29:41)

Tutaj masz skany ksiazek http://tiny.pl/grp6p

3

Monsoft napisał/a:

Tutaj masz skany ksiazek http://tiny.pl/grp6p

Wczoraj na nie trafiłem i trochę ich przejrzałem, ale albo mam pecha, albo tak patrzyłem ale nigdzie nie znalazłem polecenia odczytującego kod klawisza a wiem, że od tego zaczynałem programowanie prostych gier w 1986r.

4

Bo o ile akurat w innych BASIC-ach jest zmienna INKEY$ zwracająca kod klawisza, o tyle w AtariBASIC-u zabrakło.
Można to zrobić na dwa sposoby:
1. Najpierw otworzyć sobie kanał klawiatury poleceniem OPEN #1,4,0,"K:", a potem czytać kolejne wciśnięcia klawiszy poleceniem GET #1,K - K zawiera kod ATASCII klawisza. Po zakończeniu programu kanał można zamknąć przez CLOSE #1. Kłopot polega na tym, że GET to wywołanie blokujące i zamrozi działanie programu aż do chwili kiedy faktycznie użytkownik wciśnie klawisz.
2. Komórka KBCODS (764) zawiera kod ostatnio wciśniętego klawisza (nie ATASCII, ale kod klawisza), trzeba więc sobie co jakiś czas sprawdzać PEEK(764) i reagować. To wywołanie nie jest blokujące, więc program w międzyczasie może robić swoje. Ponieważ ten kod pojawia się w chwili wciśnięcia i zostaje aż do wciśnięcia innego klawisza, należy po odczycie zapisać tam wartość neutralną - przyjęto, że 255 oznacza "brak wciśniętego klawisza" (więc C=PEEK(764): POKE 764,255). Zapisanie wartości neutralnej po odczycie pozwala oczywiście wykrywać też repetycję.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

5

Witaj chicago. Napisz jakiej konfiguracji używasz (emulator, Atari + stacja dysków…)
Aby uprościć: tutaj masz zestaw książek na start. Bez nich ani rusz :) . W De Re Atari masz m.in. opis dispaly list i grafiki player-missile.
Atari BASIC
De Re Atari
Mapa pamięci

Jeśli chodzi o programowanie w Atari BASIC-u to odradzam. Są znacznie lepsze odmiany BASIC-a.

6 Ostatnio edytowany przez qbahusak (2016-06-02 08:35:47)

mono napisał/a:

C=PEEK(764): POKE 764,255

A ja to nieblokujące robiłem tak:

if peek(764)<>255 then get #1,C

Czysto i pięknie.