' Mhle DECLARE SUB ZeichneFeld (r%, q%, blk%) DECLARE SUB WaehlePosition (typ%, r%, q%) DECLARE SUB HLinie (x1%, x2%, y%) DECLARE SUB VLinie (x%, y1%, y2%) SCREEN 0 WIDTH 40, 25 CLS DIM SHARED feld%(7, 2), Eckz$(-1 TO 1, -1 TO 1) FOR i% = -1 TO 1 READ t$ FOR j% = -1 TO 1 Eckz$(j%, i%) = MID$(t$, 2 + j%, 1) NEXT j% NEXT i% DATA "¿" DATA "Ŵ" DATA "" ' Quadrate FOR i% = 0 TO 2 ' obere Seite HLinie 3 + 2 * i%, 15 - 2 * i%, 3 + 2 * i% ' rechte Seite VLinie 15 - 2 * i%, 3 + 2 * i%, 15 - 2 * i% ' untere Seite HLinie 3 + 2 * i%, 15 - 2 * i%, 15 - 2 * i% ' linke Seite VLinie 3 + 2 * i%, 3 + 2 * i%, 15 - 2 * i% NEXT i% 'Strahlen VLinie 9, 3, 7 HLinie 11, 15, 9 VLinie 9, 11, 15 HLinie 3, 7, 9 ' Spielfeld zurcksetzen und gleichzeitig fertig zeichnen FOR i% = 0 TO 2 FOR j% = 0 TO 7 feld%(j%, i%) = 0 ZeichneFeld j%, i%, 0 NEXT j% NEXT i% ' Spielbeginn: Alle 9 Steine der beiden Spieler setzen r% = 1 q% = 1 FOR i% = 1 TO 9 FOR s% = 1 TO 2 LOCATE 1, 1: COLOR 14 - 5 * s% PRINT "Spieler"; s%; "bitte den"; STR$(i%); ". Stein setzen" WaehlePosition 0, r%, q% feld%(r%, q%) = s% ZeichneFeld r%, q%, 0 NEXT s% NEXT i% SUB HLinie (x1%, x2%, y%) LOCATE y%, x1% PRINT STRING$(x2% - x1% + 1, 196); END SUB SUB VLinie (x%, y1%, y2%) FOR i% = y1% TO y2% LOCATE i%, x% PRINT ""; NEXT i% END SUB SUB WaehlePosition (typ%, r%, q%) ' Eingangsparameter: ' typ%=Feldtyp, z.B. leer ' Ausgangsparameter: ' r%, q% = Richtung und Quadrat (Position) DO IF r% >= 2 AND r% <= 4 THEN rx% = 1 ELSEIF r% = 0 OR r% >= 6 THEN rx% = -1 ELSE rx% = 0 END IF IF r% <= 2 THEN ry% = -1 ELSEIF r% >= 4 AND r% <= 6 THEN ry% = 1 ELSE ry% = 0 END IF LOCATE 9 + ry% * (6 - 2 * q%), 9 + rx% * (6 - 2 * q%), 1 DO t$ = INKEY$ LOOP WHILE t$ = "" LOCATE , , 0 rAbs% = -1 SELECT CASE t$ CASE CHR$(0) + "H" rAbs% = 0 CASE CHR$(0) + "M" rAbs% = 1 CASE CHR$(0) + "P" rAbs% = 2 CASE CHR$(0) + "K" rAbs% = 3 CASE CHR$(13) IF feld%(r%, q%) <> typ% THEN SOUND 880, 4 t$ = "" END IF CASE ELSE SOUND 880, 2 END SELECT IF rAbs% <> -1 THEN rRel% = (4 + rAbs% - r% \ 2) MOD 4 SELECT CASE rRel% CASE 0 IF q% > 0 THEN q% = q% - 1 ELSE SOUND 880, 1 END IF CASE 1 r% = (r% + 1) MOD 8 CASE 2 IF r% MOD 2 = 1 THEN ' Mittelfeld IF q% < 2 THEN q% = q% + 1 ELSE r% = (r% + 4) MOD 8 END IF ELSE ' Eckfeld r% = (r% + 7) MOD 8 END IF CASE ELSE IF r% MOD 2 = 1 THEN ' Mittelfeld r% = (r% + 7) MOD 8 ELSE ' Eckfeld IF q% > 0 THEN q% = q% - 1 ELSE SOUND 880, 1 END IF END IF END SELECT END IF LOOP UNTIL t$ = CHR$(13) END SUB SUB ZeichneFeld (r%, q%, blk%) IF r% >= 2 AND r% <= 4 THEN rx% = 1 ELSEIF r% = 0 OR r% >= 6 THEN rx% = -1 ELSE rx% = 0 END IF IF r% <= 2 THEN ry% = -1 ELSEIF r% >= 4 AND r% <= 6 THEN ry% = 1 ELSE ry% = 0 END IF LOCATE 9 + ry% * (6 - 2 * q%), 9 + rx% * (6 - 2 * q%) IF feld%(r%, q%) = 0 THEN IF r% MOD 2 = 0 OR q% = 0 THEN PRINT Eckz$(rx%, ry%); ELSEIF q% = 1 THEN PRINT Eckz$(0, 0); ELSE PRINT Eckz$(-rx%, -ry%); END IF ELSE COLOR 14 - 5 * feld%(r%, q%) + 16 * blk% PRINT ""; END IF END SUB