Start:
CLEAR
 
 
 
 CLS
 PRINT "*************"
 PRINT "* Superhirn *"
 PRINT "*************"
 PRINT
 PRINT "Ein Spiel von Freddy Weichert !!!"
 
REM          Falls Dir das Prg. gut gefaellt ueberweise 5,-DM an
REM          Friedhelm Weichert
REM          Kontonummer: 482125   Bankleitzahl: 31251350
REM                     Kreissparkasse Grevenbroich
PRINT
 PRINT " 1 = Nur verschiedene Farben"
 PRINT " 2 = Mit doppelten Farben"
 PRINT 
 INPUT "Welchen Schwierigkeitsgrad waehlen Sie ";schwierigkeit
 LOCATE 20,20
 PRINT "Zum Spielen druecken Sie bitte eine Taste."
 GOSUB WarteTaste
 
 
 BeginnSpiel:
 versuch=1
 
  SCREEN 1,320,200,5,1
 WINDOW 2,"Superhirn",,2,1
 
 REM //////////////////      Festlegen der Farben     ////////////////
 PRINT " 1=   2=   3=   4=   5=   6="
 FOR i=1 TO 9
 ON i GOSUB rot,blau,gruen,violett,grau,braun,schwarz,weiss,schwarz
 IF i<7 THEN
 LINE (i*10+(i*30-10),0)-(10+(i*10+(i*30-10)),10),i+3,bf
 END IF
 NEXT i

 REM /////////////////     Auswahl des Codes      ////////////////////

 Auswahlcode:
 
 RANDOMIZE TIMER
 
 FOR i=1 TO 4
 code(i)=INT(RND*6+1)
 IF schwierigkeit=1 THEN
    IF i>1 THEN
       FOR j=1 TO i-1
       IF code(i)=code(j) THEN Auswahlcode
       NEXT j
    END IF
 END IF      
REM ///////// PRINT code(i);
 NEXT i
 
 Auswahl:
 LOCATE 21,20
 PRINT versuch ".Auswahl";:INPUT Auswahl$
 FOR i=1 TO 4
 aus(i)=VAL(MID$(Auswahl$,i,1))
 IF aus(i)<1 OR aus(i)>6 THEN
    LOCATE 22,20
    PRINT "Falsche Eingabe!"
    GOSUB WarteTaste
    LOCATE 21,20
    PRINT "                  "
    LOCATE 22,20
    PRINT "                  "
    GOTO Auswahl
 END IF
 NEXT i
 
 
 REM //////////////////////////   Routine zur Feststellung ob doppelt //////
 doppelt=0
 doppelmerker=0
 q=0
 FOR i= 1 TO 4                           
 FOR j= 1 TO 4
 IF code(i)=code(j) THEN
    doppelt=doppelt+1
    doppelmerker=doppelmerker+1
 END IF   
 NEXT j
 IF doppelmerker > 1 THEN
     q=q+1
    doppelmerkercode(q)=code(i)
    doppelmerker=0
 END IF   

 NEXT i
 IF doppelt=4 THEN doppelt=1
 IF doppelt=6 THEN doppelt=2
 IF doppelt=10 THEN doppelt=3
 IF doppelt=16 THEN doppelt=4
 IF doppelt=8 THEN doppelt=5
 
 doppeltaus=0
 doppelmerkeraus=0
 r=0
 FOR i= 1 TO 4                           
 FOR j= 1 TO 4
 IF aus(i)=aus(j) THEN
    doppeltaus=doppeltaus+1
    doppelmerkeraus=doppelmerkeraus+1
 END IF   
 NEXT j
 IF doppelmerkeraus > 1 THEN
     r=r+1
    doppelmerkerzahl(r)=aus(i)
    doppelmerkeraus=0
 END IF   
 NEXT i
 IF doppeltaus=4 THEN doppeltaus=1
 IF doppeltaus=6 THEN doppeltaus=2
 IF doppeltaus=10 THEN doppeltaus=3
 IF doppeltaus=16 THEN doppeltaus=4
 IF doppeltaus=8 THEN doppeltaus=5
 
 
 
 REM ////////////////////////////    Darstellung der Farben   /////////////
 ver=versuch+1
 FOR i=1 TO 4
 
 
 LINE (i*10+(i*20-12),ver/1.58*10+(ver/2*20-12))-(10+(i*10+(i*20-12)),10+(ver/1.58*10+(ver/2*20-12))),aus(i)+3,bf
 NEXT i
 
 REM ///////////////////////////     Auswahl Schwarz/Weiss   //////////////
 
 weiss=0
 schwarz=0
 FOR i= 1 TO 4
 FOR j= 1 TO 4
     IF aus(j)=code(i) THEN
     weiss=weiss+1
     merker=merker+1
       IF i=j THEN
          weiss=weiss-1
          merker=merker-1
          schwarz=schwarz+1
          merker2=merker2+1
       END IF
     END IF
 NEXT j
 IF schwierigkeit=1 AND  merker > 1 THEN
    IF merker2=1 THEN weiss=weiss-merker   
 END IF

IF doppeltaus=4 THEN weiss=0
    
 merker=0
 merker2=0  
 NEXT i
       IF doppelt=2 THEN
          IF doppeltaus=1 THEN
             weiss=weiss-1
          END IF   
       END IF
       IF doppeltaus=2 THEN
         IF doppelt=2 THEN
            weiss=weiss-2
         END IF
         IF doppelt=3 THEN
            weiss=weiss-4
         END IF
         IF doppelt=4 THEN
            weiss=weiss-6
         END IF
       END IF  
       IF doppeltaus=3 THEN
          IF doppelt=2 THEN
             weiss=weiss-4
          END IF
          IF doppelt=3 THEN
             weiss=weiss-6
          END IF
          IF doppelt=4 THEN
             weiss=weiss-9
          END IF
       END IF
       IF doppeltaus=4 THEN
       weiss=0
       END IF
       IF doppeltaus=5 THEN
          IF doppelt=1 THEN
             weiss=weiss-2
          END IF
          IF doppelt=2 THEN
             weiss=weiss-3
             IF schwierigkeit=1 THEN weiss=weiss+1
          END IF   
       END IF   
             
 
 
 REM ////////////////////// Grafische Darstellung Schwarz/Weiss ///////
 
 FOR i=1 TO weiss
 CIRCLE (140+(i*10+(i*20-12)),ver/1.58*10+(ver/2*20-12)+5),5,1
 PAINT (140+(i*10+(i*20-12)),(ver/1.58*10+(ver/2*20-12)+5)),11,1
 NEXT i

 IF schwarz>0 THEN
    IF weiss=0 AND schwarz<5 THEN merkerwahl=1
    FOR j=weiss+merkerwahl TO schwarz+weiss   
    CIRCLE (140+(j*10+(j*20-12)),ver/1.58*10+(ver/2*20-12)+5),5,1
    NEXT j
 END IF
 merkerwahl=0
 REM //////////////////////    Auswertung     ///////////////////////

 
 IF schwarz=4 THEN Richtig         

 IF versuch=10 THEN Verloren
 versuch=versuch+1
 LOCATE 21,20
 PRINT "                  "
 LOCATE 22,20
 PRINT "                  "
 GOTO Auswahl
   
    
 
 
 

GOSUB WarteTaste

WINDOW CLOSE 2
SCREEN CLOSE 1

END


rot:
PALETTE 4,.93,.2,0
RETURN

himmelblau:
PALETTE 0,.47,.87,1
RETURN

blau:
PALETTE 5,.4,.6,1
RETURN

gruen:
PALETTE 6,.73,.87,0
RETURN

violett:
PALETTE 7,1,.13,.93
RETURN

grau:
PALETTE 8,.73,.73,.73
RETURN

braun:
PALETTE 9,.8,.6,.53
RETURN

schwarz:
PALETTE 10,0,0,0
RETURN

weiss:
PALETTE 11,1,1,1
RETURN

WarteTaste:
w$=INKEY$
IF w$="" THEN WarteTaste
RETURN

Richtig:
GOSUB WarteTaste
CLS
LOCATE 6,5
PRINT "Sie haben nach dem ";versuch;".Versuch"
LOCATE 7,10
PRINT "richtig getippt !!!"
GOTO NochmalSpielen

Verloren:
CLS
LOCATE 6,5
PRINT "Leider konnten Sie den Code auch"
LOCATE 7,5
PRINT "nach dem 10.Versuch nicht knacken."
GOTO NochmalSpielen


NochmalSpielen:
LOCATE 8,5
PRINT "Wollen Sie nochmal spielen (J/N)?"
WarteTaste1:
w$=INKEY$
IF w$="" THEN WarteTaste1
IF w$="J" OR w$="j" THEN 
WINDOW CLOSE 2
SCREEN CLOSE 1
GOTO Start
END IF
WINDOW CLOSE 2
SCREEN CLOSE 1
END


