Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Współpraca: mgr inż. Janusz Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

SPIS TREŚCI

Stare gry dla ZX81

Zanim rozpoczniesz czytanie tego rozdziału:

pobierz plik instalacyjny emulatora VB81
przeczytaj instrukcję instalacji i użytkowania emulatora VB81
BANDW.P, BOMBER.P, INVERS.P, MINEFIELD.P, SLIDER15.P, SNAKE.P, XO.P


In this section I have gathered old ZX81 programs, that were lucky to be recovered from my old notes. In my opinion some of them might be useful even today. Unfortunately many of the programs I wrote are lost forever. You can use each program presented here in any way you like - I give you my permission as the author of them. Have fun. W tym rozdziale zebrałem stare programy dla ZX81, które udało mi się odtworzyć ze starych notatek. Sądzę, że część z nich może być użyteczna nawet dzisiaj. Niestety, wiele z napisanych przeze mnie programów zaginęło na zawsze. Wszystkie prezentowane tutaj programy można dowolnie wykorzystywać, na co wyrażam zgodę jako ich autor. Życzę wiele zabawy.
Pobierz plik - INVERS.P
obrazek  obrazek  obrazek
INVERS is really not a game, but rather a board to play a logical game on it. You can enjoy it in many different ways. The aim is to restore the original board after mixing made by pressing key 1 or to get all characters inverted but one or to obtain some interesting pattern. If you press key A to Y, then the computer will invert that letter on the board together with the four adjacent letters: above, down, left & right. For instance, the letter M is pressed, then letters H, L, M, N & R get inverted. At the bottom of the screen there you can see a line with recent 31 moves.

Originally I wrote the program in pure ZX81 BASIC, but it was
terribly slow. Now I have recreated it from my old notes and compiled with MCODER 2. The final result is quite decent and the game has become dynamic and much more enjoyable.
Program INVERS właściwie nie jest grą, lecz planszą do gry logicznej. Można się nim bawić na różne sposoby. Celem jest albo przywrócenie pierwotnej postaci planszy po włączeniu mieszania klawiszem 1, albo odwrócenie wszystkich znaków na przeciwne za wyjątkiem jednego, albo otrzymywanie różnych ciekawych wzorków. Jeśli naciśniesz klawisz z literą od A do Y, to na planszy zostaną odwrócone na przeciwne literka naciśnięta oraz jej sąsiadki u góry, u dołu, z lewej i z prawej. Np. jeśli naciśniesz M na pustej planszy, to w negatywie znajdą się litery H, L, M, N i R.  Na dole ekranu widoczne jest ostatnie 31 ruchów.

Program pierwotnie napisałem w ZX81 BASIC, lecz był okropnie wolny. Teraz odtworzyłem go ze starych notatek i skompilowałem kompilatorem MCODER 2. Efekt jest bardzo przyzwoity i gra stała się dynamiczna i bardziej zabawna.
Pobierz plik - SLIDER15.P
obrazek  obrazek
I remember, that being inspired by the previous game - the INVERS - I decided to write a similar game - the SLIDER15, which was an implementation of once well known Fifteen Puzzle. The aim of the game is to slide the tiles until they all will return to their initial position after being shuffled. You can slide the tiles onto the free space only. When a tile is on its right place it becomes black, otherwise it is gray.

The primeval version was written in ZX81 BASIC and it wasn't too fast. Now I have
remastered it to fit for MCODER 2 compiler. After compilation the code is fast and dynamic as it should be years ago - I even had to slow it down with PAUSE for the tile sliding effect to be visible at all.
Pamiętam, że zainspirowany programem INVERS napisałem podobny program SLIDER15, który jest implementacją na komputer ZX81 popularnej kiedyś gry w piętnastkę. Gra polega na ułożeniu poprzesuwanych kafelek, aby utworzyły pozycję wyjściową Kafelki można przesuwać tylko na wolne miejsce. Kafelka znajdująca się na swoim właściwym miejscu jest czarna, inaczej robi się szara.

Pierwotna wersja była w ZX81 BASIC i nie należała do szybkich. Obecnie przerobiłem ją i skompilowałem kompilatorem MCODER 2, co nadało jej dynamiki - przesuwanie kafelek nawet musiałem zwalniać poleceniem PAUSE, aby był widoczny efekt ruchu.
Pobierz plik - MINEFIELD.P
obrazek  obrazek  obrazek
MINEFIELD is the ZX81 implementation of a popular game. Your task is simple. As a minesweeper you have to cross the minefield from bottom left hand corner to top right hand one. There are invisible mines all over the minefield. You are equipped with a mine detector which alerts you when a mine is in one of the adjacent positions - above, below, left or right. Then a warning will appear at the bottom of the screen. If you cross over a mine then your minesweeper career is over.

For the minesweeper movements
use the following keys:

Q - up, Z - down, I - left, P - right

The whole program is entirely written in
pure ZX81 BASIC and is sufficiently fast.
MINEFIELD jest adaptacją gry POLE MINOWE na ZX81. Zadanie jest proste. Jako saper musisz przejść przez pole minowe od lewego dolnego narożnika do górnego prawego. Na polu znajdują się niewidoczne miny. Jednakże posiadasz urządzenie do wykrywania min. Jeśli mina (lub miny) znajduje się w jednym z przylegających do ciebie pól od góry, dołu, z lewa lub z prawa, to na spodzie ekranu pojawi się ostrzeżenie. Jeśli wejdziesz na minę, to kończysz karierę sapera.

Ruchem sapera sterują przyciski:

Q - góra, Z - dół, I - lewo,  P - prawo

Program jest w całości napisany w czystym ZX81 BASIC, mimo to jest wystarczająco szybki.
Pobierz plik - SNAKE.P
obrazek  obrazek  obrazek
Every programmer should write a SNAKE game. It makes use of the queue structure which I have implemented with tables and indexes on ZX81. The rules of the game are very simple - there is a moving snake on the playfield which is controlled by you using the standard keys:

Q - up, Z - down, I - left, P - right

The snake eats digits appearing at random positions
within the playfield. After swallowing a digit the snake gets longer by as many segments as is the value of the digit it has just fed on. The game is over if the snake hits anything but the digit.

The program is compiled by
MCODER 2 compiler - the original game was quite slow. Now the game is quick and very dynamic - it requires quite a good reflex of the player. By constantly pressing a key you can accelerate the snake movement - that seems to be a side effect of PAUSE instruction.
Każdy programista powinien zaprogramować sobie grę typu WĄŻ, czyli SNAKE. Gra wykorzystuje strukturę kolejki, którą w ZX81 zrealizowałem na tablicach i indeksach. Zasady gry są bardzo proste - po planszy porusza się wąż, którym sterujesz standardowo:

Q - góra, Z - dół, I - lewo,  P - prawo

Wąż zjada cyferki, które pojawiają się w losowych miejscach planszy. Po zjedzeniu cyferki wąż rośnie o tyle segmentów, ile wynosiła zjedzona cyfra. Im dłuższy staje się wąż, tym trudniej nim kierować. Gra kończy się, jeśli wąż uderzy w cokolwiek innego od cyferki.

Program skompilowany kompilatorem MCODER 2 - oryginał był nieco wolny. Teraz gra jest  bardzo dynamiczna i wymaga niezłego refleksu od gracza. Przytrzymanie wciśniętego klawisza przyspiesza węża - chyba jest to efekt uboczny rozkazu PAUSE.
Pobierz plik - BANDW.P
obrazek  obrazek  obrazek
A the very beginning of 80-ties arcades appeared in my city, where you could find flippers and electronic video games. One of them was DOMINO from Atari. Na samym początku lat 80-tych w moim mieście pojawiły się salony gier, w których umieszczono flipery oraz gry telewizyjne. Jedną z takich gier było DOMINO firmy ATARI.
obrazek
The game was designed for one or two players. If only one player was in the game then the other one was always the computer. Using a very simple keyboard console the player controlled the direction in which domino tiles were laid on the screen. If the domino line hit anything in its way, then there was an exciting effect of falling tiles along the line.

Later on I decided to recreate this game on ZX81. Of course I had to forget about the tiles
, as they required hires graphics or user defined characters at least, and both these functions were lacking on a regular ZX81. That was why I changed the rules a bit - in my game B and W there was to be only one player - the white. The computer played as the black. The players were drawing their lines on the playfield - black and white. The head of the line was marked by an asterisk character. The movement control was standard:

Q - up, Z - down, I - left, P - right

If the line head hit anything in its way, then the round was over and the opponent got one point for his score. There was a possibility of head to head collision for
both the players - if such a thing happened then both of them got one point of score. The game was over when one of the players had scored 12 points.

This was my favorite game on ZX81. The original was written in pure
ZX81 BASIC and as such was slow of course, though I spent much time to improve its speed until it was playable. Now I have used the MCODER 2 compiler to get fast and dynamic game which at last resembles its predecessor - The DOMINO from ATARI.
W grze mogło uczestniczyć od jednego do dwóch graczy. W przypadku jednego gracza, drugim był komputer. Za pomocą prostej konsoli gracz układał na ekranie linie z kostek domina. Jeśli układane domina zderzyły się z czymkolwiek, to następował widowiskowy efekt przewracania się kostek.

Później postanowiłem odtworzyć tę grę na ZX81. Oczywiście kostki domina raczej odpadały, ponieważ do tego potrzebna była grafika o wysokiej rozdzielczości lub przynajmniej definiowany zestaw znaków, a zwykły ZX81 takich funkcji normalnie nie udostępniał. Dlatego zmieniłem nieco reguły - w mojej grze B and W uczestniczy tylko jeden gracz - biały. Czarnym graczem jest komputer. Gracze układają na ekranie swoje linie - białą i czarną. Początek linii zaznaczony jest gwiazdką.  Sterowanie jest standardowe:

Q - góra, Z - dół, I - lewo,  P - prawo

Jeśli początek linii gracza uderzy w cokolwiek, to runda się kończy i przeciwnik zdobywa punkt. Możliwe jest zderzenie czołowe obu graczy - wtedy obaj otrzymują równo po 1 punkcie. Gra kończy się, gdy jeden z graczy osiągnie wynik 12 punktów.

Była to moja ulubiona gra na ZX81. Jednakże pierwowzór w ZX81 BASIC nie należał do najszybszych, chociaż napisałem to, tak aby było grywalne. Teraz utworzyłem wersję skompilowaną za pomocą kompilatora MCODER 2 i wreszcie gra ta przypomina stare DOMINO na ATARI.
Pobierz plik - BOMBER.P
obrazek  obrazek  obrazek
Next arcade game - the BOMBER. Its rules are quite simple - you fly a bomber and fuel is out. You drop bombs gliding over a city. If you don't succeed to ruin all the buildings then you'll die. You drop a bomb by pressing any key. At the same time there can be only one bomb falling down, so be careful where to aim.

Originally the game was written in ZX81 BASIC. Now the old code gained some vigor after
having been compiled with MCODER 2 compiler. Another advantage of this game is that you can actually win.
Kolejna gra zręcznościowa - BOMBER. Zasady są bardzo proste. Lecisz bombowcem i skończyło ci się paliwo. Zrzucasz bomby szybując nad miastem. Jeśli nie uda ci się zburzyć wszystkich domów, zginiesz. Bombę zrzucasz naciskając dowolny klawisz. Naraz można zrzucić tylko jedną bombę, więc celuj dobrze.

Gra pierwotnie była napisana w języku ZX81 BASIC. Teraz stary kod zyskał wigoru po przekompilowaniu kompilatorem MCODER 2. Drugą zaletą tej gry jest to, iż można ją wygrać!
Pobierz plik - MASTER.P
obrazek  obrazek  obrazek
At the late 70-ties there was a very popular logic game called MASTER MIND. In my version of that game there is only one human player. The computer randomly picks up a secret code that consists of 4 characters chosen from a set A...F. The characters may repeat within the code. The human player is to guess that secret code. To achieve that he enters his codes and the computer compares them against the secret one. If there is a character match at a given position in both codes, then the player is given an asterisk. If player's code contains a character that also appears within the secret code but at different position, then the player gets a question mark. Each player's character is being classified only once.

The game
controls are:

A, B, C, D, E, F - enters code character
I - moves the cursor left
P - moves the cursor right
N/L - confirms the entered code

1 - new game

The game was written in ZX81 BASIC and worked quite fast. The presented version
is compiled with MCODER 2 compiler.
Pod koniec lat 70-tych ubiegłego wieku dużą popularność zdobyła gra logiczna MASTER MIND. W mojej wersji w grze uczestniczy jeden gracz - człowiek. Komputer losuje tajny kod zbudowany z 4 liter od A do F. Litery mogą się powtarzać w kodzie. Zadaniem gracza jest odgadnięcie kodu. W tym celu wprowadza on swoje kody, a komputer porównuje je z kodem tajnym. Jeśli na określonej pozycji w obu kodach jest ten sam znak, to gracz dostaje gwiazdkę. Jeśli dany znak występuje w kodzie tajnym, lecz na innej pozycji, to gracz dostaje pytajnik. Każdy znak jest klasyfikowany tylko jeden raz.

Sterowanie grą:

A, B, C, D, E, F - wprowadzenie literki kodu
I - przesuw kursora w lewo
P - przesuw kursora w prawo
N/L - zatwierdzenie wprowadzonego kodu
1 - nowa gra

Gra była napisana w języku ZX81 BASIC i działała w miarę szybko. Prezentowana tutaj wersja jest skompilowana kompilatorem MCODER 2.
Pobierz plik - XO.P
obrazek  obrazek  obrazek
The X and O is a widely known popular 2 players game of logic. The ZX81 version uses the following keys to put an O on the board:
Q W E
A S D
Z X C
The game makes use of the MINIMAX algorithm to find the best move. Because the algorithm requires recursive calls, it was very difficult to program with ZX81 BASIC, which lacks procedures with local variables and so isn't very much capable of recursion.

The presented version is
compiled with MCODER 2 compiler.
Gra w Kółko i Krzyżyk jest bardzo prostą grą logiczną dla dwóch graczy znaną praktycznie każdemu. Wersja na ZX81 do postawienia kółka używa klawiszy w następującym układzie:
Q W E
A S D
Z X C
Gra wykorzystuje algorytm MINIMAX do znajdowania optymalnych ruchów. Ponieważ jest to algorytm rekurencyjny, dużo wysiłku kosztowało mnie zaprogramowanie go w języku ZX81 BASIC, który nie posiada procedur ze zmiennymi lokalnymi i przez to niezbyt nadaje się do rekurencji.

Prezentowana tutaj wersja jest skompilowana kompilatorem MCODER 2.

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.