SamotnikPo 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 : |