home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 05 / mirror / mirrorpc.lst < prev    next >
Encoding:
File List  |  1991-04-03  |  14.4 KB  |  589 lines

  1. '   ========================================================================
  2. '   =                    MIRROR-PC für GFA-Basic 4.32                      =
  3. '   =          Nach einem Vorbild von Wolfgang Hübner (GFA-ST 2.0),        =
  4. '   =                         ATARImagazin 4'89                            =
  5. '   =                 (c) 1991 Gerald Arend & TOOLBOX                      =
  6. '   ========================================================================
  7. '
  8. DIM Shield$(3),Swupp$(20,8),X%(11,8),Y%(11,8),Sco%(2),Dead%(2),Shoot!(2,6)
  9. DIM Stone%(6,6),Gx%(2),Gy%(2)
  10. DIM SchussX%(72), SchussY%(72)
  11.  
  12. MakeShapes
  13. DEFMOUSE 3
  14. DO
  15.   StartGame
  16.   Main
  17. LOOP
  18.  
  19. PROCEDURE DrawSegment(x%, n%)
  20.   IF n% AND 1 THEN
  21.     COLOR on%
  22.   ELSE
  23.     COLOR off%
  24.   ENDIF
  25.   LINE x%+1, Zy1%, x%+Zx%-1, Zy1%
  26.   IF n% AND 2 THEN
  27.     COLOR on%
  28.   ELSE
  29.     COLOR off%
  30.   ENDIF
  31.   LINE x%, Zy1%+1, x%, Zy1%+Zy%-1
  32.   IF n% AND 4 THEN
  33.     COLOR on%
  34.   ELSE
  35.     COLOR off%
  36.   ENDIF
  37.   LINE x%+Zx%, Zy1%+1, x%+Zx%, Zy1%+Zy%-1
  38.   IF n% AND 8 THEN
  39.     COLOR on%
  40.   ELSE
  41.     COLOR off%
  42.   ENDIF
  43.   LINE x%+1, Zy1%+Zy%, x%+Zx%-1, Zy1%+Zy%
  44.   IF n% AND 16 THEN
  45.     COLOR on%
  46.   ELSE
  47.     COLOR off%
  48.   ENDIF
  49.   LINE x%, Zy1%+Zy%+1, x%, Zy1%+2*Zy%-1
  50.   IF n% AND 32 THEN
  51.     COLOR on%
  52.   ELSE
  53.     COLOR off%
  54.   ENDIF
  55.   LINE x%+Zx%, Zy1%+Zy%+1, x%+Zx%, Zy1%+2*Zy%-1
  56.   IF n% AND 64 THEN
  57.     COLOR on%
  58.   ELSE
  59.     COLOR off%
  60.   ENDIF
  61.   LINE x%+1, Zy1%+2*Zy%, x%+Zx%-1, Zy1%+2*Zy%
  62. RETURN
  63.  
  64. PROCEDURE DrawZiffer(x%, n%)
  65.   on% = 12   ' Farbe Segment an
  66.   off% = 8   ' Farbe Segment aus
  67.   Zx% = 10   ' Breite
  68.   Zy% = 10   ' Höhe der Segmente
  69.   Zy1% = 15  ' Y-Startposition der Ziffern
  70.   SELECT n%
  71.   CASE 0
  72.     DrawSegment(x%, 119)
  73.   CASE 1
  74.     DrawSegment(x%, 36)
  75.   CASE 2
  76.     DrawSegment(x%, 93)
  77.   CASE 3
  78.     DrawSegment(x%, 109)
  79.   CASE 4
  80.     DrawSegment(x%, 46)
  81.   CASE 5
  82.     DrawSegment(x%, 107)
  83.   CASE 6
  84.     DrawSegment(x%, 123)
  85.   CASE 7
  86.     DrawSegment(x%, 37)
  87.   CASE 8
  88.     DrawSegment(x%, 127)
  89.   CASE 9
  90.     DrawSegment(x%, 111)
  91.   ENDSELECT
  92. RETURN
  93.  
  94. PROCEDURE MakeShapes  ' Shapes zeichnen
  95.   Col1% = 15
  96.   SCREEN 17  ' VGA, 640 x 480, 16 Farben
  97.   FOR i%=0 TO 3
  98.     DEFFILL 8
  99.     IF i%<2
  100.       COLOR 12
  101.     ELSE
  102.       COLOR 10
  103.     ENDIF
  104.     PCIRCLE 25, 25, 15
  105.     IF i%<2
  106.       COLOR 4
  107.     ELSE
  108.       COLOR 2
  109.     ENDIF
  110.     DEFLINE 1,1
  111.     CIRCLE 25,25,15
  112.     COLOR 15
  113.     DEFLINE 1,3
  114.     IF i%=0
  115.       LINE 10,10,40,40
  116.     ENDIF
  117.     SELECT i%
  118.     CASE 1,3
  119.       LINE 10,40,40,10
  120.     CASE 0,2
  121.       LINE 10,10,40,40
  122.     ENDSELECT
  123.     GET 2,2,48,48,Shield$(i%)
  124.     CLS
  125.   NEXT i%
  126.   DIM Score$(8)
  127.   DEFLINE 1,1
  128.   COLOR 15
  129.   DEFFILL 0
  130.   GRAPHMODE 1
  131.   FOR J%=0 TO 8
  132.     DrawZiffer(13+J%*50, J%+1)
  133.     DrawZiffer(13+J%*50+Zx%+4, 0)
  134.     GET 8+J%*50,0,45+J%*50,50,Score$(J%)
  135.   NEXT J%
  136.   COLOR 13
  137.   FOR i%=0 TO 20
  138.     FOR J%=0 TO 8
  139.       BOX 5+i%+J%*50,5+i%,45-i%+J%*50,45-i%
  140.       GET 5+i%+J%*50,5+i%,45-i%+J%*50,45-i%,Swupp$(i%,J%)
  141.     NEXT J%
  142.   NEXT i%
  143.   ERASE Score$()
  144.   CLS
  145.   GET 2,2,48,48,Leer$
  146.   COLOR 7
  147.   DEFFILL 14
  148.   PBOX 0, 0, 639, 479
  149.   DEFFILL 0
  150.   PBOX 412,12,628,388
  151.   PBOX 10, 409, 629, 453
  152.   COLOR 6
  153.   BOX 415,15,625,385
  154.   BOX 416,16,624,384
  155.   COLOR 14
  156.   PRINT AT(54,3);"▓▓▓▓▓ ▓"
  157.   PRINT AT(54,4);"▓ ▓ ▓"
  158.   PRINT AT(54,5);"▓ ▓ ▓ ▓ ▓▓▓ ▓▓▓ ▓▓▓▓ ▓▓▓"
  159.   PRINT AT(54,6);"▓   ▓ ▓ ▓   ▓   ▓  ▓ ▓"
  160.   PRINT AT(54,7);"▓   ▓ ▓ ▓   ▓   ▓▓▓▓ ▓"
  161.   COLOR 12
  162.   BOX 12, 412, 627, 451
  163.   PRINT AT(3,27);" Maustasten: <links> Spiegel drehen/schießen  <rechts> Spiegel verschieben "
  164.   PRINT AT(3,28);" Spiegel zuerst verschieben, dann drehen!     <Q> Spiel beenden oder neu   "
  165.   COLOR 2
  166.   PRINT AT(54,24);"    (c) 1991 toolbox"
  167. RETURN  ' MakeShapes
  168.  
  169. PROCEDURE DrawMirror(x%, y%, Nr%)    ' einen Spiegelstein zeichnen
  170.   PUT x%*50+2,y%*50+2,Shield$(Nr%)
  171. RETURN
  172.  
  173. PROCEDURE StartGame  ' Neuanfang
  174.   ALERT 2, "Schwierigkeit", 1, "1|2", Bad%
  175.   DEC Bad%
  176.   ALERT 2, "Soundeffekte", 1, "An|Aus", Sound%
  177.   SoundOn! = (Sound%=1)
  178.   t% = POPUP("Anzahl Spiegel|16 Spiegel|20 Spiegel|24 Spiegel|28 Spiegel|32 Spiegel|36 Spiegel", 320, 250, 1)
  179.   Anzahl% = 12+t%*4
  180.   Again!=FALSE
  181.   GRAPHMODE 1
  182.   COLOR 7, 0
  183.   DEFFILL 14
  184.   PBOX 0,0,400,398
  185.   CLR E%, Anz%
  186.   Tell%=((Tell%-1) XOR 1)+1
  187.   ARRAYFILL Sco%(),0
  188.   ARRAYFILL X%(),0
  189.   ARRAYFILL Y%(),0
  190.   ARRAYFILL Shoot!(),0
  191.   ARRAYFILL Dead%(),0
  192.   GRAPHMODE 1
  193.   COLOR 14,1
  194.   DEFFILL 0
  195.   FOR H%=0 TO 1
  196.     FOR n%=0 TO 5
  197.       E1%=RANDOM(9)
  198.       X%(E%,E1%)=25+H%*350
  199.       Y%(E%,E1%)=75+n%*50
  200.       PUT X%(E%,E1%)-20,Y%(E%,E1%)-20,Swupp$(0,E1%)
  201.       PBOX 55+n%*50,5+H%*350,95+n%*50,45+H%*350
  202.       BOX 55+n%*50,5+H%*350,95+n%*50,45+H%*350
  203.       TEXT 71+n%*50,33+H%*350,2-H%
  204.       INC E%
  205.     NEXT n%
  206.   NEXT H%
  207.   ' Spiegelfeld zeichnen
  208.   COLOR 15,0
  209.   DEFFILL 0
  210.   PBOX 49,49,351,351
  211.   DEFLINE 1
  212.   FOR x%=0 TO 6
  213.     LINE 50+x%*50,50,50+x%*50,350
  214.     LINE 50,x%*50+50,350,x%*50+50
  215.   NEXT x%
  216.   ' Spiegel setzen
  217.   Anz%=Anzahl%
  218.   ARRAYFILL Stone%(),-1
  219.   WHILE Anz%>0                          ' Spiegelsteine setzen
  220.     Stx%=RANDOM(6)+1
  221.     Sty%=RANDOM(6)+1
  222.     IF Stone%(Stx%, Sty%)=-1 THEN
  223.       Nr%=RANDOM(2+Bad%*2)
  224.       DrawMirror(Stx%, Sty%, Nr%)
  225.       Stone%(Stx%, Sty%)=Nr%
  226.       DEC Anz%
  227.     ENDIF
  228.   WEND
  229.   COLOR 15
  230.   DEFFILL 8
  231.   GRAPHMODE 3
  232.   PBOX 55,5,95,45
  233.   PBOX 55,355,95,395
  234.   GRAPHMODE 1
  235.   Gx%(1)=1
  236.   Gy%(1)=7
  237.   Gx%(2)=1
  238.   Gy%(2)=0
  239.   COLOR Col1%
  240.   DEFFILL 2
  241.   Tell%=2
  242. RETURN  ' StartGame
  243.  
  244. PROCEDURE TurnMirror(x%, y%)
  245.   IF NOT Turned! THEN
  246.     SELECT Stone%(x%, y%)
  247.     CASE 0
  248.       Stone%(x%, y%) = 1
  249.     CASE 1
  250.       Stone%(x%, y%) = 0
  251.     CASE 2
  252.       Stone%(x%, y%) = 3
  253.     CASE 3
  254.       Stone%(x%, y%) = 2
  255.     ENDSELECT
  256.     DrawMirror(x%, y%, Stone%(x%, y%))
  257.     Turned!=TRUE
  258.   ENDIF
  259. RETURN ' TurnMirror
  260. '
  261. PROCEDURE MoveMirror(x%, y%)
  262.   IF (NOT Moved!) AND (NOT Turned!)  THEN
  263.     SUB Sco%(Tell%),50            ' Punkte abziehen
  264.     Tell                          ' Info
  265.     NrAlt% = Stone%(Stx%, Sty%)
  266.     Stone%(Stx%,Sty%) = -1
  267.     PUT Xx%+1,Yy%+1,Leer$  ' Altes Feld löschen
  268.     GRAPHMODE 3
  269.     Ok!=FALSE
  270.     REPEAT
  271.       MOUSE Xx%,Yy%,K%
  272.       Xx%=INT(Xx%/50)*50
  273.       Yy%=INT(Yy%/50)*50
  274.       Stx%=Xx%/50
  275.       Sty%=Yy%/50
  276.       IF Xx%=>50 AND Xx%<=300 AND Yy%>=50 AND Yy%<=300
  277.         IF Stone%(Stx%,Sty%)=-1
  278.           DrawMirror(Stx%, Sty%, NrAlt%)
  279.           Ok!=TRUE
  280.         ELSE
  281.           Ok!=FALSE
  282.         ENDIF
  283.       ELSE
  284.         Ok!=FALSE
  285.       ENDIF
  286.       IF Ok!=TRUE THEN
  287.         PUT Stx%*50+2,Sty%*50+2,Leer$
  288.       ENDIF
  289.     UNTIL K%=0 AND Ok!=TRUE
  290.     DrawMirror(Stx%, Sty%, NrAlt%)
  291.     Stone%(Xx%/50,Yy%/50)=NrAlt%      ' Wert zurückschreiben
  292.     Moved!=TRUE       ' Zug beendet
  293.   ENDIF
  294. RETURN ' MoveMirror
  295.  
  296. PROCEDURE Main   ' Haupt-Spielroutine
  297.   DO
  298.     Tell%=((Tell%-1) XOR 1)+1    ' Nr des Spielers
  299.     Tell                        ' Info anzeigen
  300.     IF Again! THEN
  301.       GOTO raus
  302.     ENDIF
  303.     CLR R%,Merki%,Merkh%,Key%,Moved!,Turned!,Mex%  ' Variablen löschen
  304.     GRAPHMODE 3
  305.     WHILE MOUSEK
  306.     WEND
  307.     REPEAT
  308.       MOUSE Xx%,Yy%,K%
  309.       Xx%=INT(Xx%/50)*50
  310.       Yy%=INT(Yy%/50)*50
  311.       Key$=UPPER$(INKEY$)
  312.       WHILE INKEY$<>""
  313.       WEND
  314.       IF Key$="Q"               ' Spiel abbrechen
  315.         ALERT 1,"Wollen Sie das|Spiel beenden?",1,"Weiter|Neu|Quit",a
  316.         SELECT a
  317.         CASE 2
  318.           GOTO raus
  319.         CASE 3
  320.           SCREEN 2    ' Ende im Gelände
  321.           END
  322.         ENDSELECT
  323.       ENDIF
  324.       ' Spiegel drehen oder verschieben
  325.       IF Xx%=>50 AND Xx%<=300 AND Yy%>=50 AND Yy%<=300 THEN   ' AND Out!=FALSE
  326.         Stx%=Xx%/50        ' Screen- in Feldkoordinaten umrechnen
  327.         Sty%=Yy%/50
  328.         Xx%=INT(Xx%/50)*50  ' Feldkoordinaten runden
  329.         Yy%=INT(Yy%/50)*50
  330.         IF K% AND Stone%(Stx%,Sty%) > -1 THEN
  331.           SELECT K%
  332.           CASE 1
  333.             TurnMirror(Stx%,Sty%)   ' Spiegel drehen -> Taste 1
  334.           CASE 2
  335.             IF Sco%(Tell%)=>50     ' verschieben -> Taste 2
  336.               MoveMirror(Stx%,Sty%)  ' min. 50 Punkte nötig!
  337.             ENDIF
  338.           ENDSELECT
  339.         ENDIF
  340.       ENDIF
  341.       ' Schwarzes Feld bewegt sich
  342.       IF Xx%/50<>Mex% AND Xx%=>50 AND Xx%<=300
  343.         Mex%=Xx%/50
  344.         COLOR 15,0
  345.         DEFFILL 8
  346.         PBOX Gx%(Tell%)*50+5,Gy%(Tell%)*50+5,Gx%(Tell%)*50+45,Gy%(Tell%)*50+45
  347.         Gx%(Tell%)=Xx%/50
  348.         Gy%(Tell%)=((Tell%-1) XOR 1)*7
  349.         PBOX Gx%(Tell%)*50+5,Gy%(Tell%)*50+5,Gx%(Tell%)*50+45,Gy%(Tell%)*50+45
  350.         COLOR 15
  351.         DEFFILL 2
  352.       ENDIF
  353.       '
  354.     UNTIL K% AND ((Xx%=>50 AND Xx%<=300 AND Yy%=350 AND Tell%=1) OR (Xx%=>50 AND Xx%<=300 AND Yy%=0 AND Tell%=2))
  355.     ' SCHUSS!
  356.     IF Gy%(Tell%)=0 THEN     ' Startkoordinaten für Strahl ermitteln
  357.       Wx%=0
  358.       Wy%=1
  359.       x%=Gx%(Tell%)*50+25
  360.       y%=25
  361.     ENDIF
  362.     IF Gy%(Tell%)=7 THEN
  363.       Wx%=0
  364.       Wy%=-1
  365.       x%=Gx%(Tell%)*50+25
  366.       y%=375
  367.     ENDIF
  368.     ' Screen-sichern nach der im Artikel beschriebenen Methode wurde
  369.     ' ausdokumentiert. Grund: Speicherplatzprobleme.
  370.     '      FOR n%=0 TO 360 STEP 40
  371.     '      GET 0, n%, 399, n%+39, Monitor$(n% DIV 40 + 1)
  372.     '   NEXT n%
  373.     GRAPHMODE 3   ' andere Methode: Linien mit XOR-Modus zeichnen
  374.     COLOR 14
  375.     Step%=1
  376.     SchussX1% = x%
  377.     SchussY1% = y%
  378.     REPEAT
  379.       FOR t%=1 TO 50         ' Linie von einem Feld zum nächsten ziehen
  380.         IF t% MOD 20 = 0 THEN
  381.           PAUSE 1
  382.         ENDIF
  383.         ADD x%,Wx%
  384.         ADD y%,Wy%
  385.         PLOT x%,y%   ' einzelne Punkte!
  386.       NEXT t%
  387.       xf%=(x%-25) DIV 50    ' Feldkoordinate x
  388.       yf%=(y%-25) DIV 50    ' Feldkoordinate y
  389.       SchussX%(Step%) = Wx%   ' Richtungen sichern
  390.       SchussY%(Step%) = Wy%
  391.       INC Step%
  392.       IF xf%>0 AND xf%<7 AND yf%>0 AND yf%<7 THEN
  393.         SELECT Stone%(xf%, yf%)   ' Spiegeltyp checken
  394.         CASE -1
  395.           Reflektion% = 0
  396.         CASE 1, 2
  397.           Reflektion% = 1
  398.           IF SoundOn! THEN
  399.             SOUND 800, 0    ' ist in der neusten GFA-Version jetzt implementiert!
  400.             SOUND 400, 0
  401.           ENDIF
  402.         CASE 0, 3
  403.           Reflektion% = 2
  404.           IF SoundOn!
  405.             SOUND 800, 0
  406.             SOUND 400, 0
  407.           ENDIF
  408.         ENDSELECT
  409.         SELECT Reflektion%
  410.         CASE 2
  411.           IF Wx%<>0 THEN
  412.             Wy%=Wx%
  413.             Wx%=0
  414.           ELSE
  415.             Wx%=Wy%
  416.             Wy%=0
  417.           ENDIF
  418.         CASE 1
  419.           IF Wx%<>0 THEN
  420.             Wy%=-Wx%
  421.             Wx%=0
  422.           ELSE
  423.             Wx%=-Wy%
  424.             Wy%=0
  425.           ENDIF
  426.         ENDSELECT
  427.       ENDIF
  428.     UNTIL x%=25 OR x%=375 OR y%=25 OR y%=375
  429.     ' Screen-restaurieren nach der im Artikel beschriebenen Methode wurde
  430.     ' ausdokumentiert. Grund: Speicherplatzprobleme.
  431.     '      FOR n%=0 TO 360 STEP 40    ' Screen restaurieren
  432.     '      PUT 0, n%, Monitor$(n% DIV 40 + 1)
  433.     '    NEXT n%
  434.     '     PLOT SchussX1%, SchussX2%
  435.     FOR Step%=1 TO Step%-1
  436.       FOR t%=1 TO 50         ' Linie von einem Feld zum nächsten ziehen
  437.         ADD SchussX1%, SchussX%(Step%)
  438.         ADD SchussY1%, SchussY%(Step%)
  439.         PLOT SchussX1%,SchussY1%
  440.       NEXT t%
  441.     NEXT Step%
  442.  
  443.     IF y%=25 OR y%=375   ' Grundstein getroffen
  444.       Shoot
  445.     ELSE ' Scorefeld getroffen
  446.       CLR U%
  447.       FOR H%=0 TO 8
  448.         FOR i%=0 TO 11
  449.           IF x%=X%(i%,H%) AND y%=Y%(i%,H%)
  450.             U%=H%
  451.             Merki%=i%
  452.             Merkh%=H%
  453.             ADD Sco%(Tell%),(H%+1)*10
  454.           ENDIF
  455.         NEXT i%
  456.       NEXT H%
  457.       Uu%=RANDOM(9)
  458.       X%(Merki%,Merkh%)=0
  459.       Y%(Merki%,Merkh%)=0
  460.       X%(Merki%,Uu%)=x%
  461.       Y%(Merki%,Uu%)=y%
  462.       FOR i%=0 TO 40   ' Scorestein animieren
  463.         IF i%<20
  464.           PUT x%-20+R%,y%-20+R%,Swupp$(R%,U%)
  465.           IF (i% MOD 3 = 0) AND SoundOn! THEN
  466.             SOUND 400+i%*10, 0
  467.           ENDIF
  468.         ELSE
  469.           PUT x%-20+R%,y%-20+R%,Swupp$(R%,Uu%)
  470.           IF (i% MOD 3 = 0) AND SoundOn! THEN
  471.             SOUND 800-i%*10, 0
  472.           ENDIF
  473.         ENDIF
  474.         IF i%<20
  475.           INC R%
  476.         ELSE
  477.           DEC R%
  478.         ENDIF
  479.         FOR H%=1 TO 50
  480.         NEXT H%
  481.       NEXT i%
  482.     ENDIF
  483.   LOOP
  484.   raus:
  485. RETURN ' Main
  486.  
  487. PROCEDURE Tell  ' Infobox aktualisieren
  488.   GRAPHMODE 1
  489.   COLOR 15, 0
  490.   PRINT AT(59,10);"  Spieler ";Tell%;": "
  491.   COLOR 12
  492.   PRINT AT(57,12);"Drehe die Spiegel!"
  493.   IF Sco%(Tell%)=>50
  494.     PRINT AT(57,13);"Bewege die Spiegel!"
  495.   ELSE
  496.     PRINT AT(57,13);"                   "
  497.   ENDIF
  498.   IF Sco%(Tell%)=>200
  499.     PRINT AT(55,14);"Schieß auf den Gegner!"
  500.   ELSE
  501.     PRINT AT(55,14);"                       "
  502.   ENDIF
  503.   COLOR 15
  504.   PRINT AT(55,16);"Punkte Spieler 1: ";USING "-####",Sco%(1)
  505.   PRINT AT(55,17);"Punkte Spieler 2: ";USING "-####",Sco%(2)
  506.   IF Sco%(((Tell%-1) XOR 1)+1) < 0
  507.     Dead(((Tell%-1) XOR 1)+1)
  508.   ENDIF
  509.   IF Sco%(Tell%)<0
  510.     Dead(Tell%)
  511.   ENDIF
  512. RETURN
  513.  
  514. PROCEDURE Shoot  ' Zahlenfeld getroffen
  515.   GRAPHMODE 1
  516.   COLOR 14, 1
  517.   SUB Sco%(Tell%),200
  518.   IF y%=25
  519.     G%=2
  520.   ENDIF
  521.   IF y%=375
  522.     G%=1
  523.   ENDIF
  524.   IF (y%=25 AND Tell%=1) OR (y%=375 AND Tell%=2)
  525.     IF x%<>Gx%(((Tell%-1) XOR 1)+1)*50+25
  526.       IF Shoot!(G%,(x%-25)/50)=FALSE
  527.         IF Sco%(Tell%)=>0
  528.           COLOR 0
  529.           DEFFILL 8
  530.           PBOX x%-20,y%-20,x%+20,y%+20
  531.           COLOR 13
  532.           IF SoundOn! THEN
  533.             FOR t%=1000 TO 100 STEP -100
  534.               SOUND t%, 1
  535.             NEXT t%
  536.           ENDIF
  537.           Shoot!(G%,(x%-25)/50)=TRUE
  538.           SUB Sco%(((Tell%-1) XOR 1)+1),100
  539.           INC Dead%(G%)
  540.           IF Dead%(G%)=5
  541.             Dead(G%)
  542.           ENDIF
  543.         ELSE
  544.           Shit!=TRUE
  545.           PRINT AT(59,20);"Punkte im Soll!"
  546.         ENDIF
  547.       ELSE
  548.         Shit!=TRUE
  549.         PRINT AT(57,20);"Da ist nix mehr!"
  550.       ENDIF
  551.     ELSE
  552.       Shit!=TRUE
  553.       PRINT AT(57,20);"Markierter Stein!"
  554.     ENDIF
  555.   ELSE
  556.     Shit!=TRUE
  557.     PRINT AT(59,21);"Falsche Seite!"
  558.   ENDIF
  559.   IF Shit!=TRUE
  560.     Shit!=FALSE
  561.     ADD Sco%(((Tell%-1) XOR 1)+1),100
  562.     IF SoundOn! THEN
  563.       FOR t%=450 TO 400 STEP -2
  564.         SOUND t%, 0
  565.         SOUND 1000-t%, 0
  566.       NEXT t%
  567.     ELSE
  568.       DELAY 3
  569.     ENDIF
  570.     COLOR 15, 0
  571.     PRINT AT(57,20);"                    "
  572.     PRINT AT(57,21);"                    "
  573.   ENDIF
  574. RETURN
  575.  
  576. PROCEDURE Dead(Tell%)   ' The Winner!
  577.   IF Tell%=1 THEN
  578.     ALERT 1,"   Spieler 2:|Du hast gewonnen!|  Noch einmal?",1,"Jawoll!|Nee...",a
  579.   ELSE
  580.     ALERT 1,"   Spieler 1:|Du hast gewonnen!|  Noch einmal?",1,"Jawoll!|Nee...",a
  581.   ENDIF
  582.   IF a=1
  583.     Again!=TRUE
  584.   ELSE    ' Programmende
  585.     SCREEN 2    ' Textmodus
  586.     END         ' und tschüß...!
  587.   ENDIF
  588. RETURN
  589.