PROGRAM SIEBZEHNUNDVIER(INPUT,OUTPUT); TYPE STAPEL=ARRAY[1..32]OF INTEGER; PLAYERS=ARRAY[1..5]OF INTEGER; VAR KARTE:STAPEL; SPIELER:PLAYERS; ANTWORT:CHAR; I,BEST,ANZAHLSPIELER,KARTENANZAHL:INTEGER; PROCEDURE TAUSCHE (VAR X,Y:INTEGER); VAR Z:INTEGER; BEGIN Z:=X;X:=Y;Y:=Z END; PROCEDURE AUSGANGSBELEGUNG (VAR KARTE:STAPEL); VAR I:INTEGER; BEGIN FOR I:=1 TO 4 DO BEGIN KARTE[I]:=2;KARTE[I+4]:=3; KARTE[I+8]:=4;KARTE[I+12]:=7; KARTE[I+16]:=8;KARTE[I+20]:=9; KARTE[I+24]:=10;KARTE[I+28]:=11 END END; PROCEDURE MISCHEN (VAR KARTE:STAPEL); VAR I:INTEGER; BEGIN WRITELN("MOMENT,ICH MUSS JETZT DIE KARTEN MISCHEN!"); FOR I:=1 TO 100 DO TAUSCHE(KARTE[32],KARTE[TRUNC(32*RANDOM)+1]) END; PROCEDURE KARTEAUSTEILEN (KARTE :STAPEL;VAR KARTENANZAHL,SPIELER:INTEGER); BEGIN SPIELER :=SPIELER +KARTE[KARTENANZAHL]; WRITELN("DU ERHAELST EINE KARTE MIT DEM WERT:",KARTE[KARTENANZAHL]:4); KARTENANZAHL:=KARTENANZAHL-1 END; PROCEDURE BESTESAUSSUCHEN(SPIELER:PLAYERS;ANZAHLSPIELER:INTEGER;VAR BEST:INTEGER); VAR I:INTEGER; BEGIN FOR I:=1 TO ANZAHLSPIELER DO IF (SPIELER[I]>BEST) AND (SPIELER[I]<=21) THEN BEST:=SPIELER[I] END; PROCEDURE COMPUTERSPIELT (BEST:INTEGER;KARTE:STAPEL;VAR KARTENANZAHL,COMPUTER:INTEGER); BEGIN COMPUTER:=0; REPEAT COMPUTER:=COMPUTER +KARTE[KARTENANZAHL]; WRITELN("MEINE KARTE HAT DEN WERT:",KARTE[KARTENANZAHL]:4); KARTENANZAHL:=KARTENANZAHL-1 UNTIL (COMPUTER >=BEST)OR(COMPUTER>21); WRITELN;WRITELN("MEIN PUNKTEKONTO BETRAEGT",COMPUTER:4," PUNKTE.") END; PROCEDURE AUSWERTUNG (VAR SPIELER:PLAYERS;ANZAHLSPIELER:INTEGER); VAR I,BEST:INTEGER; BEGIN FOR I:=1 TO ANZAHLSPIELER DO IF(SPIELER[I]>21)OR(SPIELER[I]<17) THEN BEGIN IF I=ANZAHLSPIELER THEN WRITELN("ICH KOMME NICHT IN DIE WERTUNG,DA ICH",SPIELER[I]:4," PUNKTE HABE") ELSE WRITELN("SPIELER",I:3,"KOMMT NICHT IN DIE WERTUNG,DA ER",SPIELER[I]:4,"PUNKTE HAT"); SPIELER[I]:=0 END; BEST:=0; BESTESAUSSUCHEN(SPIELER,ANZAHLSPIELER,BEST); IF BEST=0 THEN WRITELN("....ALSO HAT KEINER GEWONNEN") ELSE BEGIN IF SPIELER[ANZAHLSPIELER]=BEST THEN WRITELN("ICH HABE GEWONNEN") ELSE FOR I:=1 TO ANZAHLSPIELER-1 DO IF SPIELER[I]=BEST THEN WRITELN("GEWONNEN HAT SPIELER",I) END END;(*PROCEDURE*) BEGIN(*MAIN*) AUSGANGSBELEGUNG(KARTE); REPEAT MISCHEN(KARTE);KARTENANZAHL:=32; WRITE("WIEVIEL SPIELER MOECHTEN MITSPIELEN(MAX 4)"); REPEAT READLN;READ(ANZAHLSPIELER); IF ANZAHLSPIELER<1 THEN WRITELN("ALLEINE KANN ICH NICHT SPIELEN!!"); IF ANZAHLSPIELER>4 THEN WRITELN("MEHR ALS 4 SPIELER KOENNEN LEIDER NICHT MITMACHEN!!") UNTIL(ANZAHLSPIELER>=1)AND(ANZAHLSPIELER<=4); FOR I:=1 TO ANZAHLSPIELER DO BEGIN WRITELN("SPIELER",I:3);WRITELN("----------"); SPIELER[I]:=0; KARTEAUSTEILEN(KARTE,KARTENANZAHL,SPIELER[I]); REPEAT KARTEAUSTEILEN(KARTE,KARTENANZAHL,SPIELER[I]); IF SPIELER[I]<21 THEN BEGIN WRITE("DEIN PUNKTEKONTO BETRAEGT JETZT",SPIELER[I]:4," PUNKTE."); WRITE("MOECHTEST DU NOCH EINE KARTE(J ODER N)"); REPEAT READLN;READ(ANTWORT); IF(ANTWORT<>"J")AND(ANTWORT<>"N")THEN WRITE("ENTSCHEIDE DICH!!") UNTIL(ANTWORT="J")OR(ANTWORT="N"); END UNTIL(ANTWORT="N")OR(SPIELER[I]>21);WRITELN END; WRITELN("JETZT SPIELE ICH!");WRITELN;BEST:=17; BESTESAUSSUCHEN(SPIELER,ANZAHLSPIELER,BEST); ANZAHLSPIELER:=ANZAHLSPIELER+1; COMPUTERSPIELT(BEST,KARTE,KARTENANZAHL,SPIELER[ANZAHLSPIELER]); WRITELN; AUSWERTUNG(SPIELER,ANZAHLSPIELER);WRITELN; IF ANZAHLSPIELER=2 THEN WRITE("WILLST DU") ELSE WRITE("WOLLT IHR"); WRITE(" NOCH EINMAL SPIELEN"); REPEAT READLN;READ(ANTWORT); IF (ANTWORT<>"J")AND(ANTWORT<>"N") THEN WRITE("WAS WILLST DU DENN JETZT") UNTIL(ANTWORT="J")OR(ANTWORT="N") UNTIL ANTWORT="N" END.