geister_sss.tap
geister_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

   10 REM * GEISTER
   20 REM
   30 DIM GX(2),GY(2),OX(2),OY(2)
   40 CLEAR 80
   50 RE=500
   60 WINDOW:CLS
   70 PRINT STRING$(39,"")
   80 PRINT ""+STRING$(37," ")+"" 
   90 PRINT "                                  "  
  100 PRINT "                                " 
  110 PRINT "             ***************  " 
  120 PRINT "             *             *  " 
  130 PRINT "             *             *  " 
  140 PRINT "             *  Die  MAUS  *  " 
  150 PRINT "           *             *  " 
  160 PRINT "         *             *  " 
  170 PRINT "          *     im      *  " 
  180 PRINT "          *             *  " 
  190 PRINT "  ,         *             *  " 
  200 PRINT "           *   GEISTER-  *  " 
  210 PRINT " o o        *             *  "  
  220 PRINT "          *             *  " 
  230 PRINT " *@       *   SCHLOSS   *  " 
  240 PRINT "         *             *  " 
  250 PRINT "           *             *  " 
  260 PRINT "            ***************  " 
  270 PRINT "                         " 
  280 PRINT "                          <ENTER>  " 
  290 PRINT ""+STRING$(37," ")+"" 
  300 PRINT STRING$(38,"");
  310 SW=1
  320 REM
  330 PRINT AT(11,4);""
  340 PRINT AT(14,3);"O O"
  350 PRINT AT(16,4);""
  360 PRINT AT(16,7);""
  370 REM
  380 PRINT AT(11,4);"  "
  390 PRINT AT(14,3);"o o"
  400 PRINT AT(16,4);" "
  410 PRINT AT(16,7);"@"
  420 IF INKEY$<>CHR$(13) THEN 320
  430 ON SW GOTO 440,630
  440 WINDOW 4,19,22,36
  450 PRINT AT(23,39);""
  460 PRINT AT(21,30);"       "
  470 CLS
  480 WINDOW 5,18,23,35
  490 PRINT "Steuern Sie"
  500 PRINT "die Maus ()"
  510 PRINT "mit den"
  520 PRINT "Kursortasten"
  530 PRINT "zum"
  540 PRINT "Ausgang (A)."
  550 PRINT
  560 PRINT "Aber Vorsicht";
  570 PRINT "vor den"
  580 PRINT "Geistern ()."
  590 PRINT AT(16,22);"  "
  600 PRINT AT(21,30);"<ENTER>"
  610 SW=2
  620 GOTO 320
  630 PRINT AT(21,30);"       "
  640 CLS
  650 PRINT "Schwierigkeit"
  660 PRINT "  (1...10)"
  670 PRINT
  680 DI=0
  690 INPUT "Stufe:";DI
  700 IF DI>=1 AND DI<=10 AND INT(DI)=DI THEN 740
  710 PRINT:PRINT "falsche"
  720 PRINT "Eingabe":PRINT
  730 GOTO 690
  740 TI=250+25*DI
  750 WINDOW:CLS
  760 PRINT AT(0,0);""+STRING$(37,"")+""
  770 PRINT AT(22,0);""+STRING$(37,"")+""
  780 PRINT AT(11,1);STRING$(37,"")
  790 FOR I=1 TO 21
  800 PRINT AT(I,0);"":PRINT AT(I,38);""
  810 NEXT I
  820 PRINT AT(11,37);" "
  830 PRINT AT(0,1);"E":PRINT AT(22,1);"A"
  840 PRINT AT(1,1);""
  850 Z=2
  860 GOSUB 910
  870 Z=13
  880 GOSUB 910
  890 PRINT AT(23,6);"verbleibende Zeit:",TI
  900 GOTO 970
  910 FOR I=Z TO Z+7
  920 IF I<Z+3 OR I>Z+4 THEN PRINT AT(I,2);STRING$(6," ")
  930 IF I=Z+3 THEN PRINT AT(I,2);STRING$(6,"  ")
  940 IF I=Z+4 THEN PRINT AT(I,2);STRING$(6,"  ")
  950 NEXT I
  960 RETURN
  970 MX=1:MY=1:OS=0:OZ=7:MI=1:MA=10:L=0
  980 Z=RND(PEEK(31))
  990 FOR I=0 TO 2
 1000 GX(I)=INT(RND(1)*2)*6+12*I+OZ
 1010 IF RND(1)>.5 THEN GY(I)=1+OS:OY(I)=-1:ELSE GY(I)=10+OS:OY(I)=1
 1020 PRINT AT(GY(I),GX(I));""
 1030 NEXT I
 1040 OX(0)=0:OX(1)=-1:OX(2)=-1:OY(1)=0:OY(2)=0
 1050 FOR J=OS+1 TO OS+10 STEP 9
 1060 BX=INT(RND(1)*6)*6+4
 1070 K=PEEK(-5120+40*J+BX)
 1080 IF K=32 AND RND(1)*10<DI THEN PRINT AT(J,BX);""
 1090 IF K=161 AND RND(1)*15>DI THEN PRINT AT(J,BX);" "
 1100 NEXT J
 1110 FOR I=0 TO 2
 1120 IF MX=1 AND MY=21 THEN 1770
 1130 IF MX=37 AND MY=11 THEN 1470
 1140 OX=0:OY=0
 1150 E$=INKEY$
 1160 IF LEN(E$)=0 THEN 1250:ELSE E=ASC(E$)
 1170 IF E=8 THEN OX=-1
 1180 IF E=9 THEN OX=1
 1190 IF E=11 THEN OY=-1
 1200 IF E=10 THEN OY=1
 1210 IF PEEK(-5120+40*(MY+OY)+MX+OX)<>32 THEN 1250
 1220 PRINT AT(MY,MX);" "
 1230 MY=MY+OY:MX=MX+OX
 1240 PRINT AT(MY,MX);""
 1250 IF MY<>MI AND MY<>MA THEN 1270
 1260 IF GY(I)=MY THEN OX(I)=SGN(MX-GX(I)):OY(I)=0
 1270 IF INT((GX(I)-1)/6)<>(GX(I)-1)/6 THEN 1290
 1280 IF GX(I)=MX OR L THEN OY(I)=SGN(MY-GY(I)):OX(I)=0:L=0
 1290 IF OY(I)<>0 THEN 1330
 1300 IF GX(I)=1 THEN OX(I)=1
 1310 IF GX(I)=37 THEN OX(I)=-1
 1320 GOTO 1350
 1330 IF GY(I)=MI THEN OY(I)=1
 1340 IF GY(I)=MA THEN OY(I)=-1
 1350 PRINT AT(GY(I),GX(I));" "
 1360 GY(I)=GY(I)+OY(I):GX(I)=GX(I)+OX(I)
 1370 K=PEEK(-5120+40*GY(I)+GX(I))
 1380 IF K=ASC("") THEN OX(I)=-OX(I):OY(I)=-OY(I):GOTO 1360
 1390 PRINT AT(GY(I),GX(I));""
 1400 IF GY(I)=MY AND GX(I)=MX THEN 1540
 1410 NEXT I
 1420 IF GY(0)=GY(1) AND GY(1)=GY(2) THEN L=1 :ELSE L=0
 1430 TI=TI-1
 1440 PRINT AT(23,24);TI,"   "
 1450 IF TI=0 THEN 1540
 1460 GOTO 1050
 1470 IF PEEK(-5120+40*10+37)=ASC("") THEN 1140
 1480 FOR I=0 TO 2
 1490 PRINT AT(GY(I),GX(I));" "
 1500 NEXT I
 1510 PRINT AT(10,37);""
 1520 OS=11:OZ=1:MI=12:MA=21
 1530 GOTO 990
 1540 FOR I=0 TO 7
 1550 PRINT AT(MY,MX);"":BEEP:PAUSE(1)
 1560 PRINT AT(MY,MX);"":BEEP:PAUSE(1)
 1570 PRINT AT(MY,MX);"":BEEP:PAUSE(1)
 1580 NEXT I
 1590 CLS
 1600 PRINT:PRINT:PRINT:PRINT
 1610 IF TI>0 THEN 1660
 1620 PRINT "Die Geisterstunde ist vobei.":PRINT
 1630 PRINT "Sie sind zusammen mit dem Geister-"
 1640 PRINT "schloss verschwunden.
 1650 GOTO 1670
 1660 PRINT "Da hat Sie ein Geist erwischt."
 1670 PRINT:PRINT:PRINT
 1680 IF MY>11 THEN PRINT "Aber beinahe haetten Sie es geschafft."
 1690 IF MY<12 THEN PRINT "Allzu weit sind Sie ja nicht gekommen."
 1700 PRINT AT(22,30);"<ENTER>"
 1710 PRINT:PRINT:PRINT
 1720 TI=1500
 1730 TI=TI-1
 1740 IF TI=0 THEN 60
 1750 IF INKEY$<>CHR$(13) THEN 1730
 1760 GOTO 60
 1770 PAUSE(2)
 1780 PRINT AT(21,1);" "
 1790 FOR I=0 TO 10
 1800 PRINT AT(22,1);"":BEEP:PAUSE(1)
 1810 PRINT AT(22,1);" ":BEEP:PAUSE(1)
 1820 NEXT I
 1830 CLS
 1840 PRINT:PRINT:PRINT
 1850 PRINT "Da haben Sie sich ja gerade"
 1860 PRINT "noch gerettet."
 1870 PRINT:PRINT
 1880 TI=TI*(5+DI)
 1890 IF TI<=RE THEN 1940
 1900 PRINT "Das bisher beste Ergebnis"
 1910 PRINT "waren";RE;"Punkte."
 1920 RE=TI
 1930 PRINT
 1940 PRINT "Sie haben";TI;"Punkte erreicht."
 1950 GOTO 1700