Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Setzspiel II

Uploader:AdministratorSebastian
Datum/Zeit:02.08.2008 22:37:30

FUNCTION SpielerSymbol (ByVal Spieler As Byte) AS STRING
    IF Spieler = 1 THEN
        RETURN "X"
    ELSE
        RETURN "O"
    END IF
END FUNCTION


Dim As Byte Spieler, Feld(1 to 3, 1 to 3), k, x, y, i, j, frei, gewonnen
Dim As String JaNein

DO
    For i = 1 TO 3
        For j = 1 TO 3
            Feld(i,j)=0
        Next j
    Next i
    CLS
    PRINT "Setzspiel"
    PRINT "fuer 2 Spieler"
    PRINT
    PRINT "    1   2   3"
    PRINT
    PRINT "1   . | . | ."
    PRINT "    - + - + -"
    PRINT "2   . | . | ."
    PRINT "    - + - + -"
    PRINT "3   . | . | ."
    PRINT
    Spieler=1
    DO
        FOR i = 12 TO 14
            LOCATE i,1: PRINT STRING(79,32)
        NEXT i
        LOCATE 12,1: PRINT "Am Zug: Spieler " & Spieler & " (" & SpielerSymbol(Spieler) & ")"
        LOCATE 13,1: INPUT "An welche Koordinate (XY, z.B. 12 / 0 = Ende) setzen? ", k
        IF k = 0 THEN
            END
        ELSEIF (k < 0) OR ((k > 0 ) AND (k < 11)) OR (k > 33) THEN
            BEEP
        ELSE
            x = VAL(LEFT(STR(k),1))
            y = VAL(RIGHT(STR(k),1))
            IF feld(x,y) > 0 THEN
                LOCATE 14,1: PRINT "Feld ist schon besetzt. Beliebige Taste druecken, um noch mal zu setzen."
                SLEEP
            ELSE
                feld(x,y) = Spieler
                LOCATE 6+((y-1)*2),5+((x-1)*4): PRINT SpielerSymbol(Spieler)
                gewonnen = 0
                FOR i = 1 to 3
                    IF Feld(i,1) > 0 THEN
                        IF Feld(i,1)=Feld(i,2) AND Feld(i,2)=Feld(i,3) THEN gewonnen = (Feld(i,1))
                    END IF
                NEXT i
                FOR i = 1 to 3
                    IF Feld(1,i) > 0 THEN
                        IF Feld(1,i) = Feld(2,i) AND Feld(2,i) = Feld(3,i) THEN gewonnen = (Feld(1,i))
                    END IF
                NEXT i
                IF (Feld(1,1)=Feld(2,2) AND Feld(2,2)=Feld(3,3)) AND (Feld(1,1)>0) THEN gewonnen = Feld(1,1)
                IF (Feld(3,1)=Feld(2,2) AND Feld(2,2)=Feld(1,3)) AND (Feld(3,1)>0) THEN gewonnen = Feld(3,1)
                If gewonnen > 0 THEN
                    LOCATE 14,1: PRINT "Spieler " & Spieler & " hat gewonnen."
                    BEEP: SLEEP
                    EXIT DO
                END IF
                Spieler = 3-Spieler
            END IF
            frei = 0
            For i = 1 to 3
                For j = 1 to 3
                    If Feld(i,j) = 0 Then
                        frei = 1
                        Exit For
                    End If
                Next j
                If frei = 1 Then Exit For
            Next i
            If frei = 0 Then
                LOCATE 14,1: PRINT "Alle Felder sind besetzt, aber niemandem ist es gelungen, drei Steine in eine"
                LOCATE 15,1: PRINT "Reihe zu setzen. Die Partie ging unentschieden aus."
                BEEP: SLEEP
                EXIT DO
            End if
        END IF
    LOOP
    CLS
    WHILE INKEY <> "": SLEEP 1: WEND
    INPUT "Noch eine Runde spielen? (j/n) ", JaNein
    IF INSTR(UCASE(JaNein),"J") < 1 THEN EXIT DO
LOOP
END