Tajemnice ATARI

Samotnik

    Przedstawiony poniżej program pt. "SAMOTNIK" jest komputerową wersją popularnej francuskiej gry planszowej pod tym samym tytułem. Celem gry jest pozostawienie na planszy jednego pionka, bądź osiągnięcie z góry ustalonego ich układu. Pionek można przesunąć na inne miejsce wyłącznie "zbijając" inny, a ruch możliwy jest tylko w pionie lub poziomie.

    Po uruchomieniu programu ukazuje się czołówka, a następnie właściwa plansza gry. Na ekranie widoczne są trzy okienka: Największe - to plansza o rozmiarach 7x7 pól, średnie zawiera menu programu, a najmniejsze - liczbę ustawionych plonów. W menu po prawej stronie widoczny jest "ptaszek" który wskazuje wybieraną opcję. Można go przesuwać przy pomocy joysticka. Wyboru dokonujemy przy pomocy przycisku fire.

    Opcja "Plansza" uruchamia edytor planszy. Mamy dzięki temu możliwość stworzenia dowolnego układu początkowego w grze. Joystick przesuwa kwadratowy kursor po całym polu gry. Naciskając fire można na danym polu ustawić pionek (kółko), opróżnić je (krzyżyk), bądź w ogóle wyłączyć je z gry (puste miejsce). Naciśnięcie START pozwala wrócić do menu - tylko wtedy jednak, gdy na planszy możliwe jest wykonanie posunięcia. Plansze można zachować i odczytać przy pomocy funkcji LOAD/SAVE z menu.

    Grę rozpoczynamy po wybraniu opcji "Gra". Podobnie jak w edytorze planszy - pojawia się kwadratowy kursor, który można poruszać joystickiem po całym polu. Naciskając fire wybieramy plon, którym będziemy wykonywać ruch - ramka ekranu zmieni jasność. Następne naciśnięcie fire powoduje przestawienie plonu. Jeśli ruch jest nieprawidłowy - komputer sygnalizuje to sygnałem dźwiękowym. Gra toczy się do momentu, w którym gracz nie ma już możliwości wykonania ruchu. Przez cały czas komputer podaje liczbę plonów na planszy. Zmagania można przerwać w dowolnym momencie naciśnięciem klawisza Start.

    W menu dostępne są jeszcze dwie opcje: Restart i Koniec - pierwsza powtórnie uruchamia program, druga kończy z nim pracę i przekazuje sterowanie do interpretera Basicu.

    Życzę wszystkim powodzenia i cierpliwości - bo gra jest naprawdę trudna. A wszystkim niecierpliwym polecam "Przewodnik gier" Lecha Pijanowskiego.

    Program napisany jest w Turbo-Basicu.

10 --
20 REM Samotnik - gra dla 1 osoby
30 REM Program : Maciej Czarnota
40 REM Data : 1992-01-26
50 --
60 GRAPHICS 0:POKE 710,0:POKE 752,1:PO
SITION 14,6:? "SAMOTNIK":POSITION 4,10
:? "Gra logiczna dla jednej osoby"
70 POSITION 7,13:? "Autor : Maciej Cza
rnota":POSITION 6,15:? "(c) 1992  Taje
mnice Atari"
80 POSITION 2,20:? "Naszykuj joystick 
i stuknij START":REPEAT :UNTIL PEEK(53
279)=6
90 GOSUB 1310:GRAPHICS 0:CLR :END 
100 REM Rysuj plansze
110 PROC PLANSZA
120 POKE 559,0:RESTORE 1590
130 DO 
140 READ X,Y:IF X*Y<0 THEN EXIT 
150 COLOR 1:PLOT X,Y
160 DO :READ X,Y:IF X*Y<0:EXIT :ENDIF 
:DRAWTO X,Y:LOOP 
170 LOOP 
180 RESTORE 1660:FOR I=1 TO 8:READ X,Y
,T$:TEXT X,Y,T$:NEXT I
190 POKE 559,34
200 ENDPROC 
210 REM Ustaw piony na planszy
220 PROC SETPION
230 FOR X=1 TO 7:FOR Y=1 TO 7:EXEC GET
CH:EXEC USTAW:NEXT Y:NEXT X:EXEC COUNT
:EXEC PIPR
240 ENDPROC 
250 PROC USTAW
260 PX=20+X*20:PY=Y*20:TEXT PX-4,PY-4,
"  ":TEXT PX-3,PY-3,"  ":COLOR 1
270 ON RO-48 EXEC XPOL,PION
280 ENDPROC 
290 REM Pole pust - X
300 PROC XPOL
310 PLOT PX-3,PY-3:DRAWTO PX+3,PY+3:PL
OT PX+3,PY-3:DRAWTO PX-3,PY+3
320 ENDPROC 
330 REM Pion
340 PROC PION
350 CIRCLE PX,PY,4
360 ENDPROC 
370 REM Podprogram obslugi joysticka
380 PROC MOVEJOY
390 DO 
400 COLOR 1:PX=20+X*20:PY=Y*20:EXEC SE
TRAM
410 REPEAT :A=STICK(0):B=STRIG(0):C=PE
EK(53279):UNTIL A<>15 OR B<>1 OR C<>7
420 COLOR 0:EXEC SETRAM
430 IF B=0 OR C<>7 THEN EXIT 
440 IF A=14 THEN Y=Y-1:IF Y<1 THEN Y=7
450 IF A=13 THEN Y=Y+1:IF Y>7 THEN Y=1
460 IF A=7 THEN X=X+1:IF X>7 THEN X=1
470 IF A=11 THEN X=X-1:IF X<1 THEN X=7
480 FOR I=0 TO 3:SOUND 0,8*A,8,10:NEXT
 I:SOUND 
490 LOOP 
500 SO=255:EXEC BELL
510 ENDPROC 
520 REM Czy jest mozliwy ruch?
530 PROC POSSIB
540 NO=0:FOR I=1 TO 7:PT$=PL$(I*7-6,I*
7):EXEC CHECK:IF A<>0 OR B<>0:GOTO 560
:ENDIF :NEXT I
550 FOR I=1 TO 7:FOR J=0 TO 6:PT$(J+1,
J+1)=PL$(I+J*7,I+J*7):NEXT J:EXEC CHEC
K:IF A<>0 OR B<>0:GOTO 560:ENDIF :NEXT
 I:NO=1
560 ENDPROC 
570 PROC CHECK:A=INSTR(PT$,"122"):B=IN
STR(PT$,"221"):ENDPROC 
580 REM Kasuj ruch
590 PROC ZERO:SETCOLOR 4,0,0:ZX=0:ZY=0
:ENDPROC 
600 REM Wez znak spod kursora
610 PROC GETCH:ZN=X+Y*7-7:RO=ASC(PL$(Z
N,ZN)):ENDPROC 
620 REM Nowy znak pod kursorem
630 PROC ZNAK:ZN=X+Y*7-7:PL$(ZN,ZN)=CH
R$(RO):ENDPROC 
640 REM Policz wszystkie piony
650 PROC COUNT:PI=0:FOR I=1 TO 49:IF P
L$(I,I)="2":PI=PI+1:ENDIF :NEXT I:ENDP
ROC 
660 REM Wydrukuj liczbe pionow
670 PROC PIPR:TEXT 280,140,"   ":COLOR
 1:TEXT 280,140,PI:ENDPROC 
680 REM Ptaszek do menu - rysuj
690 PROC PLMEN:PLOT 295,Y:DRAWTO 298,Y
+3:DRAWTO 303,Y-2:ENDPROC 
700 REM Rysuj kuror
710 PROC SETRAM:PLOT PX-7,PY-7:DRAWTO 
PX+7,PY-7:DRAWTO PX+7,PY+7:DRAWTO PX-7
,PY+7:DRAWTO PX-7,PY-7:ENDPROC 
720 REM Daj glos
730 PROC BELL:FOR I=15 TO 0 STEP -0.5:
SOUND 0,SO,14,I:NEXT I:SOUND :ENDPROC 
740 REM Czekaj na fire
750 PROC FIRE
760 ? :? "           Nacisnij  FIRE":R
EPEAT :UNTIL STRIG(0)<>1:CLS 
770 ENDPROC 
780 REM Tu jest podprogram gry
790 PROC PLAY
800 RE$=PL$:X=1:Y=1:ZX=0:ZY=0
810 DO 
820 EXEC POSSIB:IF NO THEN EXIT 
830 EXEC MOVEJOY:IF C<>7 THEN EXIT 
840 EXEC GETCH
850 ON RO-48 EXEC MOVEPIO,POLPIO
860 LOOP 
870 REM Game over
880 ? "             Koniec gry":FOR J=
1 TO 5:SO=80:EXEC BELL:NEXT J
890 IF PI=1 THEN ? "      GRATULACJE !
 Wygrales !!!":FOR J=0 TO 5:SO=40+J*20
:EXEC BELL:NEXT J
900 EXEC FIRE:PL$=RE$:EXEC SETPION:CLS 
910 ENDPROC 
920 REM Poruszanie pionami
930 PROC MOVEPIO
940 IF ZX=0 OR ZY=0 THEN 1010
950 MX=X-ZX:MY=Y-ZY:IF ABS(MX-MY)<>2 O
R MX*MY<>0 THEN SO=121:EXEC BELL:GOTO 
1000
960 TX=X:TY=Y:X=ZX+(MX/2):Y=ZY+(MY/2):
EXEC GETCH:IF RO<>50 THEN SO=121:EXEC 
BELL:GOTO 1000
970 RO=49:EXEC USTAW:EXEC ZNAK:X=ZX:Y=
ZY:EXEC USTAW:EXEC ZNAK
980 RO=50:X=TX:Y=TY:EXEC USTAW:EXEC ZN
AK
990 PI=PI-1:EXEC PIPR
1000 EXEC ZERO
1010 ENDPROC 
1020 PROC POLPIO
1030 IF ZX<>0 OR ZY<>0 THEN SO=255:EXE
C BELL:EXEC ZERO:GOTO 1050
1040 ZX=X:ZY=Y:SETCOLOR 4,0,4
1050 ENDPROC 
1060 REM Podprogram ustawiania planszy
1070 PROC SETBOARD
1080 X=1:Y=1
1090 EXEC MOVEJOY:IF C<>7 THEN GOTO 11
20
1100 EXEC GETCH:RO=RO+1:IF RO>50 THEN 
RO=48
1110 PL$(ZN,ZN)=CHR$(RO):EXEC USTAW:GO
TO 1090
1120 NO=0:EXEC POSSIB:IF NO THEN FOR J
=0 TO 4:SO=30+J*50:EXEC BELL:NEXT J:GO
TO 1090
1130 EXEC COUNT:EXEC PIPR
1140 ENDPROC 
1150 REM Load
1160 PROC LOAD
1170 TRAP 1250:EXEC GETFIL:IF T$<>"" T
HEN OPEN #1,8,0,T$:? #1;PL$:CLOSE #1
1180 ENDPROC 
1190 REM Save
1200 PROC SAVE
1210 TRAP 1250:EXEC GETFIL:IF T$<>"" T
HEN OPEN #1,4,0,T$:INPUT #1,PL$:CLOSE 
#1:EXEC SETPION
1220 EXEC COUNT:EXEC PIPR
1230 ENDPROC 
1240 REM Obsluga bledow we/wy
1250 CLOSE #1:? CHR$(253);"ERROR-   ";
ERR:EXEC FIRE:PAUSE 20:ENDPROC 
1260 REM Wez nazwe pliku
1270 PROC GETFIL:POKE 752,0:INPUT "Pod
aj nazwe pliku >",T$:POKE 752,1:CLS :E
NDPROC 
1280 REM Restart
1290 PROC REST:RUN :ENDPROC 
1300 REM Czolowka
1310 DIM PL$(49),RE$(49),PT$(7),N$(20)
,T$(20):HSC=0:MEN=1
1320 RESTORE 1510:FOR I=1 TO 7:READ PT
$:PL$(I*7-6,I*7)=PT$:NEXT I
1330 GRAPHICS 8:POKE 752,1:POKE 710,0:
EXEC PLANSZA:EXEC SETPION
1340 REM Obsluga menu
1350 DO 
1360 DO 
1370 Y=34+MEN*10:COLOR 1:EXEC PLMEN
1380 REPEAT :A=STICK(0):B=STRIG(0):UNT
IL A<>15 OR B<>1:COLOR 0:EXEC PLMEN
1390 SO=A*50:EXEC BELL
1400 IF A=14 THEN MEN=MEN-1:IF MEN<1 T
HEN MEN=6
1410 IF A=13 THEN MEN=MEN+1:IF MEN>6 T
HEN MEN=1
1420 IF B=0 THEN EXIT 
1430 LOOP 
1440 ON MEN EXEC PLAY,SETBOARD,LOAD,SA
VE,REST:IF MEN=6 THEN EXIT 
1450 LOOP 
1460 RETURN 
1470 REM Plansza - dane :
1480 REM 0 - pole niedostepne
1490 REM 1 - pole puste
1500 REM 2 - pion na polu
1510 DATA 0012200
1520 DATA 0222220
1530 DATA 2222222
1540 DATA 2222222
1550 DATA 2222222
1560 DATA 0222220
1570 DATA 0022200
1580 REM Dane dla rysunku na ekranie
1590 DATA 20,10,180,10,180,150,20,150,
20,10,1,-1,15,5,185,5,185,155,15,155,1
5,5,-1,1
1600 DATA 20,10,15,5,-1,1,180,10,185,5
,-1,1,180,150,185,155,-1,1,20,150,15,1
55,-1,1
1610 DATA 210,18,310,18,310,105,210,10
5,210,18,-1,1,205,13,315,13,315,110,20
5,110,205,13,-1,1
1620 DATA 210,18,205,13,-1,1,310,18,31
5,13,-1,1,310,105,315,110,-1,1,210,105
,205,110,-1,1
1630 DATA 200,135,314,135,314,152,200,
152,200,135,-1,1,195,130,319,130,319,1
57,195,157,195,130,-1,1
1640 DATA 200,135,195,130,-1,1,314,135
,319,130,-1,1,314,152,319,157,-1,1,200
,152,195,157,-1,1
1650 DATA 247,138,245,140,-1,1,-1,1
1660 DATA 245,25,Menu,220,40,Gra,220,5
0,Plansza,220,60,Save,220,70,Load,220,
80,Restart,220,90,Koniec
1670 DATA 210,140,Pionow :



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2002