Kurs:FreeBASIC/Projekte/FBT3/0009
Aus Wikiversity
< Kurs:FreeBASIC | Projekte | FBT3
Version 0009 ist zugleich die finale Version (1.0). --Michael Reschke 18:16, 20. Jul. 2008 (CEST)
Inhaltsverzeichnis |
[Bearbeiten] Quellcode
Der Quellcode lautet:
/' Ein kleines Spiel ohne Animation und ohne PC-Spieler Autor: Michael Reschke Kontakt: Reschke.Michael@gmail.com Sprache: Deutsch Datum: 2008-07-20 Version: 1.0 (intern = 0009) Lizenz: CC-BY-SA 2.5 http://creativecommons.org/licenses/by-sa/2.5/deed.de Der Quellcode ist ferner in der Wikiversity zu finden: http://de.wikiversity.org/wiki/Kurs:FreeBASIC/Projekte/Tic_Tac_Toe/0009 Dort können auch Fehler gemeldet und Verbesserungen des Programms vorgeschlagen werden. Feedback ist herzlich willkommen! - - - - - - - - - - Hilfen, eine Befehlsreferenz und viele weitere Programme und Code-Schnipsel bietet das FreeBasic-Portal. Schau mal vorbei: http://www.freebasic-portal.de/ '/ ' - - - - Wir leeren den Bildschirm - - - - - - - - - - - - - - CLS ' - - - - Meine Variablen und meine Unterprogramme - - - - - - DIM AS Integer Eingabe 'Nimmt die Koordinaten auf DIM AS Integer x 'Für die Zählschleife DIM AS Integer Fehler 'Fehler (Feld besetzt) DIM AS String Spieler = "X" 'Spieler hat den Inhalt "X" oder "O" DIM AS String Spiel = "j" 'Spiel fortsetzen j = ja, n = nein DIM AS Integer Gewinner = 0 '1 = Spieler 1 hat gewonnen, 2 analog ' Spieler 1 ist das X, Spieler 2 ist das O ' - - - - Ich definiere 9 Felder - - - - - - - - - - - - - - - /' Was möchte ich tun? Das Programm soll 2 Dinge tun: 1.) Erkennen, ob ein Feld bereits belegt ist... 2.) Erkennen, ob 3 Steine in einer Linie liegen... Wir lösen es einfach: 1.) Wenn ein Feld <> 0, dann belegt 2.) Man kann es so machen: X = 1 und O = 4 Wenn Feld1 + Feld 2 + Feld3 = 3 dann Spieler 1 = Winner Wenn Feld1 + Feld 2 + Feld3 = 12 dann Spieler 2 = Winner Wenn Summe aller Felder = 21 dann Spiel ist zu Ende. '/ DIM F(1 TO 9) AS Integer 'F für Feld '============================================================== ' - - - - Hauptschleife - - - - - - - - - - - - - - - - - - - - '============================================================== Do '============================================================== Locate 1,1 ' - - - - Zeichne das Spielfeld - - - - - - - - - - - - - - - - PRINT "Ein Spiel" PRINT "fuer 2 Spieler" PRINT PRINT " 1 2 3" PRINT PRINT "1 . | . | ." PRINT " - + - + -" PRINT "2 . | . | ." PRINT " - + - + -" PRINT "3 . | . | ." ' - - - - Die Programmschleife - - - - - - - - - - - - - - - - Do Locate 12,68 PRINT " " Locate 14,1 Print "44 eingeben zum Beenden der Schleife " Locate 12,1 Print "Bitte geben Sie abwechselnd eine Koordinate (z. B. 11 oder 31) ein. " Locate 13,45 : Print " " Locate 13,1 If Spieler = "X" then INPUT "Spieler 1 (X) geben Sie Ihre Koordinate ein: ", Eingabe Else INPUT "Spieler 2 (O) geben Sie Ihre Koordinate ein: ", Eingabe End If SELECT CASE Eingabe CASE 11 If F(1) = 0 Then Locate 6,5 Print Spieler If Spieler = "X" Then F(1) = 1 ELSE F(1) = 4 END IF Else Fehler = 1 End If CASE 12 If F(2) = 0 Then Locate 8,5 Print Spieler If Spieler = "X" Then F(2) = 1 ELSE F(2) = 4 END IF Else Fehler = 1 End If CASE 13 If F(3) = 0 Then Locate 10,5 Print Spieler If Spieler = "X" Then F(3) = 1 ELSE F(3) = 4 END IF Else Fehler = 1 End If CASE 21 If F(4) = 0 Then Locate 6,9 Print Spieler If Spieler = "X" Then F(4) = 1 ELSE F(4) = 4 END IF Else Fehler = 1 End If CASE 22 If F(5) = 0 Then Locate 8,9 Print Spieler If Spieler = "X" Then F(5) = 1 ELSE F(5) = 4 END IF Else Fehler = 1 End If CASE 23 If F(6) = 0 Then Locate 10,9 Print Spieler If Spieler = "X" Then F(6) = 1 ELSE F(6) = 4 END IF Else Fehler = 1 End If CASE 31 If F(7) = 0 Then Locate 6,13 Print Spieler If Spieler = "X" Then F(7) = 1 ELSE F(7) = 4 END IF Else Fehler = 1 End If CASE 32 If F(8) = 0 Then Locate 8,13 Print Spieler If Spieler = "X" Then F(8) = 1 ELSE F(8) = 4 END IF Else Fehler = 1 End If CASE 33 If F(9) = 0 Then Locate 10,13 Print Spieler If Spieler = "X" Then F(9) = 1 ELSE F(9) = 4 END IF Else Fehler = 1 End If CASE ELSE Locate 12,1 If Eingabe <> 44 Then PRINT "Die Eingabe war ungueltig. Bitte geben Sie erneut eine Koordinate ein. " Sleep End If END SELECT 'Fragt ab, ob ein Spieler ein Feld doppelt belegen wollte If Eingabe <> 44 Then If Fehler = 0 Then 'Verwaltet die Spieler If Spieler = "X" Then Spieler = "O" Else Spieler = "X" End If Else Locate 12,1 Print "Das Kaestchen ist bereits belegt. Bitte erneut eine Koordinate eingeben." Fehler = 0 SLEEP End If Else Exit Do End If ' - - - - Wir klären, ob schon wer gewonnen hat - - - - - - - - 'Spieler 1 If F(7) + F(8) + F(9) = 3 Then Gewinner = 1 End If If F(4) + F(5) + F(6) = 3 Then Gewinner = 1 End If If F(1) + F(2) + F(3) = 3 Then Gewinner = 1 End If If F(7) + F(5) + F(3) = 3 Then Gewinner = 1 End If If F(1) + F(5) + F(9) = 3 Then Gewinner = 1 End If If F(7) + F(4) + F(1) = 3 Then Gewinner = 1 End If If F(8) + F(5) + F(2) = 3 Then Gewinner = 1 End If If F(9) + F(6) + F(3) = 3 Then Gewinner = 1 End If 'Spieler 2 If F(7) + F(8) + F(9) = 12 Then Gewinner = 2 End If If F(4) + F(5) + F(6) = 12 Then Gewinner = 2 End If If F(1) + F(2) + F(3) = 12 Then Gewinner = 2 End If If F(7) + F(5) + F(3) = 12 Then Gewinner = 2 End If If F(1) + F(5) + F(9) = 12 Then Gewinner = 2 End If If F(7) + F(4) + F(1) = 12 Then Gewinner = 2 End If If F(8) + F(5) + F(2) = 12 Then Gewinner = 2 End If If F(9) + F(6) + F(3) = 12 Then Gewinner = 2 End If 'Wir prüfen, ob noch Felder frei sind If F(1)+F(2)+F(3)+F(4)+F(5)+F(6)+F(7)+F(8)+F(9) = 21 Then Exit Do End If LOOP While Gewinner = 0 'Inkey <> CHR(27) 'Wenn Win = E, dann Ende ;-) ' - - - - Das Ergebnis - - - - - - - - - - - - - - - - - - - - For x = 1 to 70 Locate 12,X : Print " " Locate 13,X : Print " " Locate 14,X : Print " " Next x Locate 12,1 If Gewinner = 1 Then Print "Spieler 1 (X) hat gewonnen. Herzlichen Glueckwunsch." ELSEIF Gewinner = 2 Then Print "Spieler 2 (O) hat gewonnen. Herzlichen Glueckwunsch." Else Print "Leider hat kein Spieler gewonnen!" End If 'Print F(1)+F(2)+F(3)+F(4)+F(5)+F(6)+F(7)+F(8)+F(9) 'Wenn Summe = 21, dann ist kein Feld mehr frei! Locate 16,1 Input "Neues Spiel starten? (j/n) ", Spiel If Spiel = "j" Then For x = 1 to 70 Locate 16,X : Print " " Next x For x = 1 to 9 F(x) = 0 Next x Gewinner = 0 Spieler = "X" End If '============================================================== ' - - - - Hauptschleife - - - - - - - - - - - - - - - - - - - - '============================================================== Loop While Spiel = "j" '============================================================== ' - - - - Programmende - - - - - - - - - - - - - - - - - - - - Locate 16,1 Print "Zum Beenden des Programms eine Taste druecken. " Sleep
[Bearbeiten] Bugs
Bug notieren und bitte einen Eintrag mit --~~~~ abschließen (signieren).
- Keine Bugs bekannt.
[Bearbeiten] Nächste Version (vorgesehene Features)
- Eine Version 2.0 könnte einen PC-Spieler enthalten.
[Bearbeiten] Feedback
Bitte hierfür die Diskussionsseite nutzen. Vielen Dank!
[Bearbeiten] Kommentar(e)
- Die Version 0009 ist lauffähig und enthält alle vorgesehenen Features. Es handelt sich um eine finale Version.

