REM ***********************************
REM * Das Boersenspiel von F.Weichert *  dieses Prg. ist Public-Domain
REM ***********************************
REM          Falls Dir das Prg. gut gefaellt ueberweise 5,-DM an
REM          Friedhelm Weichert
REM          Kontonummer: 482125   Bankleitzahl: 31251350
REM                     Kreissparkasse Grevenbroich

 Spielbeginn:
  CLS
  CLEAR
 
 DIM tendenz(10),wert(10),aktie$(10),besitz(4),besitzaktien(4,10)

 FOR i=1 TO 10
 READ aktie$(i)
 wert(i)=100
 NEXT i
 
 DATA Bayer,Daimler,VW,Siemens,Thyssen,Henkel,Hoechst,Kaufhof,Veba,BASF
 
 FOR i= 1 TO 4
 besitz(i)=50000&
 NEXT i
 
 PRINT "********************"
 PRINT "* Das Boersenspiel *"
 PRINT "********************"
 PRINT "        von"
 PRINT " Friedhelm Weichert"
 PRINT
 PRINT "Ziel des Spiel ist es sein Kapital zu verzehnfachen."
 PRINT
 INPUT "Wieviele Mitspieler (max.4)";ms
 PRINT
 
 FOR i= 1 TO ms
     PRINT "Name des ";i;". Spielers ";
     INPUT spieler$(i)
 NEXT i
 
 Naechstertag:
 schleifenmerker=1
 RANDOMIZE TIMER
 FOR j=1 TO 10
 tendenz(j)=INT(RND*40) 
 wert(j)=wert(j)+tendenz(j)-20
 IF wert(j) <= 9 THEN wert(j)=9
 NEXT j
 tag=tag+1
 CLS
 PRINT TAB(30);"********************"
 PRINT TAB(30);"* ";
 PRINT USING "###";tag;
 PRINT ". Boersentag  *"
 PRINT TAB(30);"********************"
 GOSUB WarteTaste
 
 
 
 Start:
 FOR i= schleifenmerker TO ms
 BeginnAuswahl:
     CLS
     
     PRINT 
     GOSUB Uebersicht
     PRINT
     PRINT "Was moechtest Du?                    1 = Kaufen"
     PRINT "                                     2 = Verkaufen"
     PRINT "                                     3 = Warten"
     PRINT "                                     4 = Bilanz"
     
     
     Warte:
     a$=INKEY$
     IF a$="" OR a$>"4" OR a$<"1" THEN Warte
     ON VAL(a$) GOSUB Kaufen,Verkaufen,Warten,Bilanz
     IF merker=1 THEN
     merker=0
     GOTO BeginnAuswahl
     END IF
     
     
     GOSUB Ereignis
     IF besitz(i) > 500000& THEN Sieg
     IF besitz(i) < 0 THEN 
       CLS
       PRINT "Du hast Schulden !!!"
       schuldmerker(i)=schuldmerker(i)+1
       IF schuldmerker(i)=4 THEN
          GOSUB Bankrott
          GOSUB WarteTaste
          schleifenmerker=i
          GOTO Start
       END IF   
       PRINT "Versuche Deine Schulden durch erfolgreichere Spekulationen zu"
       PRINT "egalisieren. Dafuer hast Du noch ";4-schuldmerker(i);
       IF schuldmerker(i) < 3 THEN
          PRINT " Tage Zeit."
          GOTO weiterschuld
       END IF
       PRINT " Tag Zeit."
       weiterschuld:
       GOSUB WarteTaste
     END IF
     IF besitz(i) >= 0 THEN schuldmerker(i)=0
     
 NEXT i
 GOTO Naechstertag
 
 Uebersicht:
 PRINT "Kapital von Spieler ";spieler$(i);":";besitz(i);" DM"
 PRINT
 PRINT "*******************************************************"
 PRINT "*                                                     *"
 FOR j = 1 TO 10
    IF j=10 THEN 
        PRINT "*    (";j;")    ";aktie$(j);
        GOTO sprungende
    END IF    
    PRINT "*    ( ";j;")    ";aktie$(j);
    
    sprungende:
    IF wert(j) < 100 THEN 
       PRINT TAB(31);
    END IF
    IF wert(j) < 10 THEN
       PRINT TAB(32);
    END IF
    IF wert(j) > 99 THEN
       PRINT TAB(30);
    END IF
    PRINT wert(j);" DM";TAB(55);"*"   
    
    NEXT j
 PRINT "*                                                     *"
 PRINT "*******************************************************"
 RETURN
 
 
 Kaufen:
 AnfangKaufen:
 CLS
 PRINT "Welche Aktie moechtest Du kaufen?(1-10) 0 = Keine Kaufen"
 PRINT
 
 GOSUB Uebersicht
 
 Eingabewelcheaktie:
 INPUT welcheaktie
 IF welcheaktie < 0 OR welcheaktie > 10 THEN GOTO Eingabewelcheaktie
 IF welcheaktie=0 THEN
   merker=1
   RETURN
 END IF
 
 PRINT "Wieviele Aktien moechtest Du von ";aktie$(welcheaktie);" erwerben";
 INPUT wievieleaktien
 
 IF wievieleaktien * wert(welcheaktie) > besitz(i) THEN
    PRINT "Tut mir leid, soviel Geld hast Du nicht mehr."
    GOSUB WarteTaste
    GOTO AnfangKaufen
 END IF
 
 PRINT "OK!"
 besitzaktie(i,welcheaktie)=besitzaktie(i,welcheaktie)+wievieleaktien
 besitz(i)=besitz(i)-wievieleaktien*wert(welcheaktie)
 PRINT "Dein Kapital betraegt nun nur noch ";besitz(i);"DM"
 PRINT 
 PRINT
 WarteTaste:
 PRINT
 PRINT TAB(20);"Druecke eine Taste zum weitermachen"
 Warte1:
 a$=INKEY$
 IF a$="" THEN Warte1
 
 RETURN
 
 Verkaufen:
 AnfangVerkaufen:
 CLS
 PRINT "Welche Aktie moechtest Du verkaufen? (1-10) 0 = Keine verkaufen"
 PRINT "                                           99 = Notverkauf"
 GOSUB Uebersicht
 INPUT welcheaktie
 IF welcheaktie = 99 THEN
    FOR j = 1 TO 10
    IF besitzaktie(i,j) > 0 THEN
       gesamtbesitz(i)=gesamtbesitz(i)+besitzaktie(i,j)*wert(j)
       besitzaktie(i,j)=0
    END IF
    NEXT j
    besitz(i)=besitz(i)+gesamtbesitz(i)
    gesamtbesitz(i)=0
    CLS
    PRINT "OK! Du hast alle deine Aktien verkauft."
    PRINT "Dein Barvermoegen betraegt nun ";besitz(i);" DM."
    PRINT
    GOSUB WarteTaste 
    RETURN
 END IF      
    
 IF welcheaktie = 0 THEN 
   merker=1
   RETURN
 END IF
 PRINT "Du besitzt von ";aktie$(welcheaktie);besitzaktie(i,welcheaktie);" Aktien."
 INPUT "Wieviele Aktien moechtest Du verkaufen";wievieleaktien
 
 IF wievieleaktien > besitzaktie(i,welcheaktie) THEN
    PRINT "Tut mir leid, soviele Aktien befinden sich nicht in Deinem Besitz"
    GOSUB WarteTaste
    GOTO AnfangVerkaufen
 END IF
 
 PRINT "OK!"
 besitz(i)=besitz(i)+wievieleaktien*wert(welcheaktie)
 besitzaktie(i,welcheaktie)=besitzaktie(i,welcheaktie)-wievieleaktien
 PRINT
 PRINT "Du hast jetzt noch ";besitz(i);" DM"
 GOSUB WarteTaste
 RETURN
 
 Warten:
 RETURN
 
 Bilanz:
 CLS
 merker=1
 PRINT
 PRINT
 PRINT "**********"
 PRINT "* Bilanz *"
 PRINT "**********"
 PRINT "fuer Spieler ";spieler$(i)
 PRINT
 FOR j = 1 TO 10
 IF besitzaktie(i,j) > 0 THEN
 PRINT TAB(10);aktie$(j);TAB(25);
 PRINT USING "#####";besitzaktie(i,j);
 PRINT TAB(31);"X";TAB(35);
 PRINT USING "###";wert(j);
 PRINT " DM";TAB(45);"=";TAB(50);
 PRINT USING "######";besitzaktie(i,j)*wert(j);
 PRINT " DM"
 gesamtbesitz(i)=gesamtbesitz(i)+besitzaktie(i,j)*wert(j)
 END IF
 NEXT j
 gesamtbesitz(i)=gesamtbesitz(i)+besitz(i)
 PRINT TAB(49);"-----------"
 PRINT TAB(20);"+";TAB(22);
 PRINT USING "######";besitz(i);
 PRINT " DM Bargeld";
 
 PRINT TAB(50);
 PRINT USING "######";gesamtbesitz(i);
 PRINT " DM     Gesamt"
 gesamtbesitz(i)=0
 PRINT
 PRINT 
 GOSUB WarteTaste
 RETURN
 
 Bankrott:
 schuldmerker(i)=0
 CLS
 PRINT "Du bist Bankrott!"
 PRINT "Du konntest Deine Schulden nicht innerhalb der gesetzten Frist"
 PRINT "tilgen. Damit ist das Spiel fuer Dich beendet."
 ms=ms-1
 IF ms=0 THEN Spielende
 FOR ii=i TO ms
 spieler$(ii)=spieler$(ii+1)
 besitz(ii)=besitz(ii+1)
 FOR j= 1 TO 10
 IF besitzaktie(ii+1,j) > 0 THEN
    besitzaktie(ii,j)=besitzaktie(ii+1,j)
 END IF
 NEXT j
 NEXT ii
 RETURN
 
 Sieg:
 CLS
 PRINT TAB(22);"*******************************"
 PRINT TAB(22);"* Herzlichen Glueckwunsch !!! *"
 PRINT TAB(22);"*******************************"
 PRINT
 PRINT "Du hast es geschafft dein Kapital zu verzehnfachen."
 PRINT "Spieler ";spieler$(i);" erreichte ";besitz(i);" DM."
 PRINT
 Nochmal:
 INPUT "Noch ein Spiel (J/N)";Nochmal$
 IF Nochmal$="j" OR Nochmal$="J" THEN Spielbeginn
 END
 
 Spielende:
 GOSUB WarteTaste
 CLS
 PRINT "Damit ist das Spiel beendet."
 GOTO Nochmal
 
 
    
 
 Ereignis:
 
 CLS
 RANDOMIZE TIMER
 x=INT(RND*(50+1))

    
 IF x=1 THEN
 PRINT "Du hast Steuern hinterzogen !!!"
 PRINT "Das Finanzamt ist Dir auf die Schliche gekommen..."
 Zufall1:
 RANDOMIZE TIMER
 x1=INT(RND*1000)
 x1=x1*10
 IF x1 > besitz(i) THEN Zufall1
 PRINT 
 PRINT "Dieses Unterfangen kostet ";x1;" DM an Nachzahlungen."
 besitz(i)=besitz(i)-x1
 PRINT "Jetzt besitzt Du nur noch ";besitz(i);" DM Bargeld."
 END IF
     
 IF x=2 THEN
 PRINT "Dividendenauszahlung !!!"
 PRINT "Du bekommst auf den Wert Deiner Aktien 7% ausgezahlt."
 FOR j = 1 TO 10
 IF besitzaktie(i,j) > 0 THEN
    merker1=1
    gesamtbesitz(i)=gesamtbesitz(i)+besitzaktie(i,j)*wert(j)
 END IF
 NEXT j
 IF merker1=0 THEN RETURN
 IF merker1=1 THEN merker1=0
 gesamtbesitz(i)=gesamtbesitz(i)+CINT(gesamtbesitz(i)*.07)
 PRINT "Das sind in Deinem Fall ";CINT(gesamtbesitz(i)*.07);" DM."
 besitz(i)=besitz(i)+gesamtbesitz(i)
 gesamtbesitz(i)=0
 PRINT "Bar auf die Kralle kannst Du jetzt ";besitz(i);" Dein Eigen nennen."
 END IF
    
 IF x=3 THEN
 PRINT "Du findest auf der Strasse eine Brieftasche mit 2000 DM."
 besitz(i)=besitz(i)+2000
 END IF
 
 IF x=4 THEN
 PRINT "Pech gehabt!!! Der Blitz schlug in Dein Haus ein."
 PRINT "Die Reperaturarbeiten belangen sich auf 5000 DM."
 besitz(i)=besitz(i)-5000
 END IF
 
 IF x=5 THEN
 PRINT "Lohnsteuerjahresausgleich."
 RANDOMIZE TIMER
 x1=INT(RND*(1000))
 x1=x1*10
 x1=x1-5000
 IF x1 < 0 THEN
    x1=-x1
    PRINT "Leider musst Du ";x1;" DM nachzahlen."
    besitz(i)= besitz(i)-x1
    x1=-x1
 END IF
 IF x1 > 0 THEN
    PRINT "Du bekommst ";x1;" DM Nachzahlung."
    besitz(i)=besitz(i)+x1
 END IF
 IF x1 = 0 THEN PRINT "Leider nichts bei rumgekommen..."
 END IF
  
 IF x=6 THEN
 PRINT "Herzliches Beileid!"
 PRINT "Deine Frau ist bei einem Verkehrunfall ums Leben gekommen."
 PRINT "Du kassierst die Lebensversicherung in Hoehe von 100.000 DM !"
 besitz(i)=besitz(i)+100000&
 END IF
 
 IF x=7 THEN
 PRINT "Deine Kinder zerstoeren beim Fussballspielen die Scheibe eines"
 PRINT "Moebelgeschaefts. Du bist nicht Haftpflichtversichert.
 PRINT "Der Schaden belaeuft sich auf 2500 DM."
 besitz(i)=besitz(i)-2500
 END IF
 
 IF x=8 THEN
 PRINT "Wieder mal Pech gehabt..."
 PRINT "Ein Firmenwagen geraet bei Glatteis ins Schleudern. Die ganze Ware"
 PRINT "ist beschaedigt worden. Kosten: 20.000 DM"
 besitz(i)=besitz(i)-20000
 END IF
 
 IF x = 9 THEN
    PRINT"Deine Firma kommt durch Exportschwierigkeiten in ein finanzielles"
    PRINT "Dilemma. Um das Finanzloch zu stopfen investierst Du aus Deinem"
    PRINT "Privatvermoegen 50.000 DM."
    besitz(i)=besitz(i)-50000&
 END IF
 
 IF x = 10 THEN
    PRINT " S C H W A R Z E R    F R E I T A G"
    PRINT 
    PRINT " Boersensturz!"
    PRINT " Alle Aktien verlieren die Haelfte ihres urspruenglichen Wertes."
    FOR j= 1 TO 10
    wert(j)=CINT(wert(j)/2)
    NEXT j
 END IF   
    
    
 
 GOSUB WarteTaste
 RETURN   
 
       
