• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kleiner Pascal script

Status
Für weitere Antworten geschlossen.
E

EDonky

Guest
Ich habe ma was kleines geschrieben:

Code:
(*$B-*)
PROGRAM TicTacToe;
(* Auf Eingabe einer Spielsituation von Kringel-und-Kreuze     *)
(* (Tic Tac Toe) wird fuer die freien Felder brechnet,         *)
(* ob sie zu einem Gewinn, Unentschieden oder Verlust fuehren. *)

CONST schwarz    = -1;
      weiss    =  1;
      frei    =  0;
TYPE Status    = -1..1;
     Spielbrett    = ARRAY[1..9] OF Status;
     Wert    = -1..1;

VAR B  : Spielbrett;
    w  : Wert;
    i  : INTEGER;

FUNCTION Muehle(B: Spielbrett): BOOLEAN;
(* Ist genau dann TRUE, wenn das Spielbrett eine Muehle enthaelt. *)
   VAR i: INTEGER;
   BEGIN
      Muehle := FALSE;
      FOR i := 1 TO 3 DO
      BEGIN
          IF abs(B[i] + B[i+3] + B[i+6]) = 3 THEN Muehle := TRUE;
         IF abs(B[3*i-2] + B[3*i-1] + B[3*i]) = 3 THEN Muehle := TRUE;
      END;
       IF abs(B[1] + B[5] + B[9]) = 3 THEN Muehle := TRUE;
      IF abs(B[3] + B[5] + B[7]) = 3 THEN Muehle := TRUE;
   END; (* Muehle *)

FUNCTION Voll(B: Spielbrett): BOOLEAN;
(* Liefert genau dann TRUE, wenn alle Felder belegt sind. *)
   VAR i : INTEGER;
   BEGIN
      Voll := TRUE;
      FOR i := 1 TO 9 DO
     IF B[i] = frei THEN Voll := FALSE
   END; (* Voll *)

FUNCTION Auswertung(B: Spielbrett; s: Status): Wert;
(* Ist Spieler s am Zug, so wird fuer jedes freie Feld von B berechnet ob, *)
(*  wenn s es ankreuzt, schwarz gewinnt (-1), weiss gewinnt (1)            *)
(*  oder es ein Unentschieden gibt (0).                                    *)

   VAR w, max: Wert;
       i     : INTEGER;
   BEGIN
      IF Muehle(B) OR Voll(B) THEN
     IF Muehle(B) THEN Auswertung := -s
     ELSE Auswertung := 0
      ELSE
      BEGIN
     max := -1;
     FOR i := 1 TO 9 DO                  (* Schaue alle Felder von B an. *)
     BEGIN
        IF B[i] = frei THEN              (* Falls Feld noch frei,        *)
        BEGIN
           B[i] := s;                    (* kreuze Feld an.              *)
           w := Auswertung(B,-s);        (* Berechne, wer dann gewinnt.  *)
           B[i] := frei;                 (* Gebe Feld wieder frei.       *)
           IF max < s*w THEN max := s*w  (* Bilde Maximum (falls s=1),   *)
        END; (* IF *)                    (* bzw. Minimum (falls s=-1)    *)
        Auswertung := s*max              (* ueber die Werte aller Felder.*)
     END (* FOR *)
      END (* IF *)
   END; (* Auswertung *)

PROCEDURE Ausgabe(i: INTEGER; w: Wert);
   BEGIN
      Write(i,': ');
      CASE w OF
        -1: WriteLn('Verlustzug');
         0: WriteLn('Unentschieden');
         1: WriteLn('Gewinnzug')
      END
   END; (* Ausgabe *)

BEGIN (* Hauptprogramm *)
   Write('Gebe zeilenweise die Belegung des Spielbretts ein, ');
   WriteLn('so dass Weiss am Zug ist.');
   WriteLn('Dabei ist 0 = Leer, 1 = Weiss, -1 = Schwarz: ');
   For i := 1 TO 3 DO
   BEGIN
      Write('Felder ',3*i-2,', ',3*i-1,' und ',3*i,':  ');
      ReadLn(B[3*i-2],B[3*i-1],B[3*i]);
      WriteLn
   END;

   IF Muehle(B) OR Voll(B) THEN WriteLn('Spiel bereits zu Ende')
   ELSE
   BEGIN
      FOR i := 1 TO 9 DO                 (* Schaue alle Felder an.     *)
      BEGIN
     IF B[i] = frei THEN             (* Falls Feld noch frei,      *)
     BEGIN
        B[i] := weiss;               (* wird es von Weiss markiert.*)
        w := Auswertung(B,schwarz);  (* Berechne wer dann gewinnt. *)
        B[i] := frei;                (* Gebe Feld wieder frei.     *)
        Ausgabe(i,w)
     END (* IF *)
      END (* FOR *)
   END (* IF *)
END.
Nur mit den Rote spalten stimmt was net
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
dazu will ich noch was beitragen:

fonderaltiedonky.bmp


damit wäre endlich bewiesen, wie beschränkt dämlich und dass du offenbar ein zwitter und somit dein eigener cousin bist.

Nils aka XraYSoLo
 
Er hat auch mal meinen ICQ-Acc fälschen wollen und Plankton mal wieder eines seiner illegalen vB präsentiert...
 
Werbung:
^^ ****....nee, ich meine natürlich *******.

ich werd' mal den gesamten chat-log hier präsentieren, damit man mal sieht, was die hauptschule so produziert ;-).

Nils aka XraYSoLo
 
Werbung:
Nur mal so am Rande das ist Spam, was ihr macht, genauso wie dieser Post ;)
Ist irgendwas vorgefallen, das ihr alle auf EDonky rumhackt? Das ist ja fast mobbing ;)

greez web_spider :D
 
Werbung:
EDonky versucht mit Softwarepraterie Erfolg zu machen, so wie ich das mitbekomme, also ich meine Erfogl auf den Websites. Wie Alti schon sagte, er hatte gefälschte/geklaute vBs auf seinem Server installiert. :evil: Ich hasse solche Räuber
 
Werbung:
Wisst ihr was...nö glaube nich.
Ehm also:
Wir wäre es wenn wir einfach inruhe zusammen sein könnten.
Müssen uns aber net vertragen *zg*.
Aber wir gehen uns aussem weg.

Danke an Web-Spider

Mod-Edit: Ja, wir lieben dich auch alle, würden es aber lieber sehen, wenns dich net gäbe... (XraYSoLo)
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben