REM ************************************************
REM *                                              *
REM *                  TRON                        *
REM *                  ----                        *
REM *          Program und Design von              *
REM *               Frank Kever                    *
REM *           (C) 1987 KICKSTART                 *
REM *             improved by AK                   *
REM ************************************************

SCREEN 2,320,190,5,1
WINDOW 3,"",(0,70)-(311,175),16,2
WINDOW 4,"",(0,0)-(311,50),16,2
PALETTE 0,0,0,0
PALETTE 1,1,1,1
PALETTE 2,.16,.16,.16
WINDOW OUTPUT 4
INPUT"         1 oder 2 Spieler: ",spieler
GOSUB initpar

WHILE -1       ' ***** Hauptschleife *****                                
  IF STICK(3)<>0 THEN sy1=STICK(3): sx1=0
  IF STICK(2)<>0 THEN sx1=STICK(2): sy1=0 
  y=y+2*sy1: x=x+2*sx1
  GOSUB playerline 
  IF spieler=1 THEN GOSUB computermove
  punkte=punkte+1
  WINDOW OUTPUT 4
  WINDOW OUTPUT 3
  IF spieler=2 THEN
    b$=INKEY$
    IF (b$=CHR$(28)) OR (b$=CHR$(29)) THEN 
      y11=2+4*(b$=CHR$(28))
      x11=0
    END IF
    IF (b$=CHR$(31)) OR (b$=CHR$(30)) THEN
      x11=2+4*(b$=CHR$(31))
      y11=0
    END IF
    y1=y1+y11: x1=x1+x11  
    GOSUB playerline1
  END IF  
WEND

initpar:
  sy1=-1: sx1=0: x=206: y=100: d=120: e=100
  y11=-2: x11=0: x1=112: y1=100                  
RETURN

computermove:
  v1=POINT(d-2,e)
  v2=POINT(d,e-2)
  v3=POINT(d+2,e)
  v4=POINT(d,e+2)
  IF v1=0 THEN 
    d=d-2
  ELSEIF v2=0 THEN 
    e=e-2
  ELSEIF v3=0 THEN 
    d=d+2
  ELSEIF v4=0 THEN 
    e=e+2
  END IF
  SOUND 700,(.7),100,2
  COLOR 4,0
  LINE (d,e)-(d,e)
 
  IF v1<>0 AND v2<>0 AND v3<>0 AND v4<>0 THEN  
    comp=2
    x=d
    y=e
    farbe=4
    GOSUB Explosion
    pa=2
    GOSUB ende
  END IF  
RETURN     
      
playerline: 
  SOUND 100,(.7),120,0                       
  COLOR 9,0
  IF POINT(x,y)<> 0 THEN GOSUB compwin
  LINE (x,y)-(x,y)
RETURN
 
playerline1: 
  SOUND 700,(.7),120,3                       
  COLOR 4,0
  IF POINT(x1,y1)<> 0 THEN GOSUB compwin1
  LINE (x1,y1)-(x1,y1)
RETURN

compwin1:  
  leben=0
  spieler1=spieler1+1
  FOR v=0 TO 8 STEP 2
     FOR w=1 TO 250: NEXT w
     LINE (x1-v,y1-v)-(x1+v,y1+v),4,b
  NEXT v
  GOSUB game.loose  
RETURN

compwin:
  pa=1:leben=leben-1  
  IF spieler=2 THEN leben=leben-2
  Spieler2=Spieler2+1
  farbe=9
  IF POINT(x,y)<>0 THEN GOSUB Explosion
  IF leben <=0 THEN GOSUB game.loose  
  IF leben>0 THEN 
    WINDOW OUTPUT 4
    LOCATE 4,28: PRINT"Leben:";leben
    WINDOW OUTPUT 3
    GOSUB ende
  END IF   
RETURN
 
Explosion: 
  FOR v=0 TO 8 STEP 2
    FOR w=1 TO 200: NEXT w
    LINE (x-v,y-v)-(x+v,y+v),farbe,b
  NEXT v
RETURN

game.loose:
  IF leben=0 THEN GOSUB musik:
  WINDOW OUTPUT 3
  LOCATE 5,12: PRINT"Weiter mit SPACE"
  WHILE INKEY$<> " "
  WEND
  WINDOW OUTPUT 3
  CLS: COLOR 1,0
  IF punkte>high THEN high=punkte
  IF high<1 THEN spieler1=0 
  IF high<1 THEN Spieler2=0
  GOSUB initgame: GOSUB initpar
RETURN  

ende:
  GOSUB musik       
  FOR a=1! TO 0 STEP -.1
    PALETTE pa,a,a,a  
    FOR b=1 TO 10:NEXT b
  NEXT a  
  IF pa=1 THEN PALETTE 1,1,1,1
  IF pa=2 THEN PALETTE 2,.16,.16,.16
  CLS
  GOSUB initpar
RETURN

musik:
  FOR n= 60 TO 1 STEP -1
    fr=n*10
    ze=8/n
    SOUND fr,ze,255,0
  NEXT n
RETURN
 
initgame:
  punkte=0
  WINDOW OUTPUT 4
  CLS
  COLOR 2,0
  PALETTE 2,0,0,0
  PALETTE 3,0,0,0
  LOCATE 3,17:PRINT "TRON": GOSUB flash
  COLOR 3,0
  LOCATE 3,17:PRINT "TRON"
  leben=3
  PALETTE 2,0,0,0
  COLOR 2,0
  LOCATE 3,2
  PRINT "Geschrieben von F.Kever fr KICKSTART": GOSUB flash
  COLOR 3,0: LOCATE 3,13: PRINT "*** TRON ***"
  FOR c=1 TO 100:NEXT c
  PALETTE 3,1,1,1
  PALETTE 2,.16,.16,.16
  LOCATE 4,1:  PRINT "Punkte:";punkte
  LOCATE 4,17: PRINT "Top:";high 
  LOCATE 4,28: PRINT"Leben: ";leben
  LOCATE 5,7
  IF spieler<>1 THEN PRINT "Roter Spieler  : ";spieler1
  LOCATE 6,7
  IF spieler<>1 THEN PRINT "Blauer Spieler : ";Spieler2
  WINDOW OUTPUT 3
  CLS
RETURN

flash:
  FOR a=0 TO 1 STEP .1
    PALETTE 2,a,a,a
    FOR b=1 TO 200 : NEXT b
  NEXT a
  FOR c=1 TO 1:NEXT c
  FOR a=1 TO -.1 STEP -.1
    PALETTE 2,a,a,a
    FOR b=1 TO 2:NEXT b
  NEXT a  
  PALETTE 2,.16,.16,.16
  PALETTE 1,1,1,1
RETURN 




