Durch Angabe von Zeile und Spalte wird jeweils ein Feld der
4x4-Matrix ausgewählt.
Danach werden die Inhalte der Nachbarfelder in Nord-, Süd-,
Ost-,u. West-Richtung invertiert
--> ZIEL:
mit möglichst wenigen Versuchen die Endstellung zu erreichen.
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)
10 WINDOW:CLS
20 PRINT:PRINT:PRINT:PRINT "";
30 PRINT ""
40 PRINT " Spielprogramm"
50 PRINT ""
60 PRINT " INVERSO"
70 PRINT ""
80 PRINT AT(4,31);"":PRINT AT(5,31);"":PRINT AT(6,31);""
90 PRINT AT(7,31);"":PRINT AT(8,31);""
100 PRINT "";
110 PRINT "Autor: Wagenknecht, Christian"
120 PRINT:PRINT SPC(12);"- 1985 -":PRINT AT(14,0);" "
130 PRINT AT(21,22);"f.d.R.d.A."
140 PRINT AT(22,17);"Z1013/ Helm,H-J"
150 PRINT AT(24,13);"Ebw.,den 1.Mai 1988":PRINT AT(23,0);" "
160 PRINT AT(26,8);"bearbeitet: 16.5.88 *UG*":PRINT AT(30,24);">ENTER<"
170 IF INKEY$<>CHR$(13)THEN 170
180 WINDOW:CLS
190 REM INVERSO-SOLOSPIEL
200 REM SPIELBESCHREIBUNG LOG IN 4(1984)2
210 REM HAUPTPROGRAMM
220 DIM F(16): DIM S(16): DIM Z(16):DIM F$(16,4): FR=1:V=0
230 GOSUB 490
240 GOSUB 920:GOSUB 1050
250 FE=1:GOSUB 620
260 FOR I=1 TO 16
270 F(I)=Z(I)
280 NEXT I
290 GOSUB 1050
300 FE=2:GOSUB 810:FE=1
310 FOR I=1 TO 16
320 F(I)=S(I)
330 NEXT I
340 WINDOW 28,30,0,31:CLS
350 FOR I=1 TO 16
360 IF NOT(F(I)=Z(I))THEN 390
370 NEXT I
380 GOTO 420
390 IF NOT(0<FR)THEN 430
400 GOSUB 1190
410 GOTO 350
420 PRINT "DAS ZIEL IST ERREICHT!";:PAUSE 30:GOTO 480
430 CLS:PRINT "NOCH EINMAL-MIT START? (J/N)"
435 CALL*F6C5
440 T$=INKEY$:IF T$=""THEN 440
450 IF T$="N"THEN 480
460 IF T$="J"THEN 470 ELSE 440
470 FR=1:V=0:FOR I=1 TO 16:F(I)=S(I):NEXT I:GOSUB 1050:GOSUB 810:GOTO 340
480 WINDOW:CLS:PRINT AT(0,0);" ":PRINT AT(15,5);"ENDE VON INVERSO":PAUSE 50:CLS:END
490 REM UP SPIELREGEL
500 WINDOW
510 PRINT:PRINT:PRINT:PRINT:PRINT "Durch Angabe von Zeile u. Spalte"
520 PRINT "wird jeweils ein Feld der":PRINT
530 PRINT "4x4-Matrix ausgewaehlt.":PRINT:PRINT:PRINT:PRINT
540 PRINT "Danach werden die Inhalte der":PRINT
550 PRINT "Nachbarfelder in Nord-, Sued-,":PRINT
560 PRINT "Ost-,u. West-Richtung invertiert"
570 PRINT:PRINT:PRINT:PRINT "--> ZIEL:":PRINT
580 PRINT "mit moeglichst wenigen Versuchen"
590 PRINT "die Endstellung zu erreichen."
600 PRINT AT(31,24);">ENTER<":PRINT AT(27,0);" "
610 IF INKEY$<>CHR$(13)THEN 610 ELSE RETURN
620 REM UP SPIELFELD (FE...FELD;FE=1...START;FE=2...ZIEL)
630 CLS:PRINT
640 PRINT " ";
650 PRINT " ";
660 PRINT " ";
670 PRINT " ";
680 PRINT " "
690 PRINT "":PRINT:PRINT:PRINT
700 D1$=" "
710 D2$=" "
720 D3$=" "
730 D4$=" "
740 PRINT D1$
750 FOR D=1 TO 3
760 PRINT D2$:PRINT D2$
770 PRINT D3$
780 NEXT D
790 PRINT D2$:PRINT D2$
800 PRINT D4$:PRINT:PRINT AT(25,0);"S T A R T":PRINT AT(25,24);"Z I E L"
810 REM UP START/ZIEL
820 IF FE=1 THEN WINDOW 13,25,1,14
830 IF FE=2 THEN WINDOW 13,25,19,31
840 FOR LA=1 TO 13 STEP 4
850 FOR A2=LA TO LA+3
860 PRINT F$(A2,1);F$(A2,2);CHR$(9);
870 NEXT A2
880 PRINT
890 FOR A2=LA TO LA+3
900 PRINT F$(A2,3);F$(A2,4);CHR$(9);
910 NEXT A2:PRINT:PRINT:NEXT LA:RETURN
920 REM UP ANFANGSSTELLUNG
930 FOR I=1 TO 16
940 F(I)=INT(RND(I)*2)
950 NEXT I
960 REM UP STARTVEKTOR
970 FOR I=1 TO 16
980 S(I)=F(I)
990 NEXT I
1000 REM UP ZIELSTELLUNG
1010 FOR I=1 TO 16
1020 Z(I)=INT(RND(I)*2)
1030 NEXT I
1040 RETURN
1050 REM UP BERECHNUNG:F$(Z,S)
1060 FOR I=1 TO 16
1070 IF NOT(F(I)=1)THEN 1130
1080 F$(I,1)=""
1090 F$(I,2)=""
1100 F$(I,3)=""
1110 F$(I,4)=""
1120 GOTO 1170
1130 F$(I,1)=" "
1140 F$(I,2)=" "
1150 F$(I,3)=" "
1160 F$(I,4)=" "
1170 NEXT I
1180 RETURN
1190 REM UP AUSWAHL ELEMENT;BERECHNUNG F(I)
1200 V=V+1:PRINT AT(15,14);V
1205 CALL*F6B8
1210 WINDOW 28,31,0,31:CLS:PRINT "WAHL DES FELDES ENDE MIT:"
1211 PRINT:PRINT AT(29,20);"":PRINT AT(30,20);" <0>"
1212 INPUT "ZEILE ?:";Z:PRINT AT(31,20);" <0>"
1214 INPUT "SPALTE ?:";S
1220 IF(Z=0 AND S=0)THEN FR=-4:GOTO 1300
1230 IF(Z<1 OR Z>4 OR S<1 OR S>4)THEN 1210
1240 FR=(Z-1)*4+S
1250 IF FR+4<17 THEN NR=FR+4:GOSUB 1310
1260 IF(FR-4*INT(FR/4)<>0)THEN NR=FR+1:GOSUB 1310
1270 IF(FR-1-4*INT((FR-1)/4)<>0)THEN NR=FR-1:GOSUB 1310
1280 IF FR-4>0 THEN NR=FR-4:GOSUB 1310
1290 GOSUB 1050:GOSUB 810
1300 RETURN
1310 REM UP INVERSE ZU F(I) (NR...NUMMER)
1320 IF F(NR)=1 THEN F(NR)=0:ELSE F(NR)=1
1330 RETURN