![]() |
Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)
Liste der Anhänge anzeigen (Anzahl: 1)
Und zwar hab ich soeben mein erstes Spiel programmiert: Das allseits aus der Schulzeit bekannte Tic, Tac, Toe!
Ich stell es einfach mal hier vor, weil ich die Fertigstellung ( und überhaupt die Erstellung) dieses Spiels nur der DP zu verdanken hab! Tic, Tac, Toe! ist das Spiel mit den 9 Feldern und einer hat Kreis, der andere Kreuz. Und jeder trägt abwechselnd sein Zeichen in eines der 9 Felder. Wer als erstes 3 seiner Zeichen in einer Reihe hat (Diagonal, Vertikal oder Horizontal), hat gewonnen. Es ist grafisch nicht anspruchsvoll(gut, Grafik hat das Spiel gar nicht :mrgreen: ), aber immerhin mein erstes Spiel, das ich programmiert hab... Mein besonderer Dank dabei gilt jfheins, Mirilin, xineohp und natürlich allen anderen, die mir dabei geholfen haben, bzw. es wenigstens versucht haben :) Naja, schaut es euch an. Bugs wird es (hoffentlich) nicht geben... bei so 'nem simplen Programm wäre es ja auch mehr als peinlich, wenn sich Bugs drin wiederfinden würden^^ Ansonsten natürlich Vorschläge und Anregungen an mich... Zuletzt noch: Bitte nicht lachen, wenn euch mein Spiel nicht gut genug ist, ich hab halt vor nichtmal einer Woche angefangen, programmieren zu lernen, man muss ja klein anfangen :mrgreen: Lange Rede, kurzer Sinn: Ladet euch das Spiel runter, spielt es, und habt (hoffentlich) jede Menge Spaß damit :) WICHTIG! Version 0.0.0.8 ist da :mrgreen: |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Hi,
wenn ein Spieler gewwonnen hat kann der andere immer noch gewinnen! Es erscheinen dann zwei Fenster. Gut wäre wenn einer gewoonnen hat, das Feld zurückgesetzt wird. Rattze |
Re: Mein erstes Spiel: Tic, Tac, Toe!
ja... hab ich vergessen zu erwähnen. Da wollte ich mich als nächstes drum kümmern... Ich glaub, ich disable dann alle Felder und setz einen extra-button dazu zum neu starten... naja, kommt mit Beta 0.0.0.3 :mrgreen:
|
Re: Mein erstes Spiel: Tic, Tac, Toe!
Hi malo,
für einen Anfänger (ich schätze mal das bist du ;)) ist es nicht schlecht. Hier aber noch ein paar Tipps: 1. Sobald ein Spieler gewonnen hat, musst du alle Buttons disablen. Dies kannst du ganz schnell mit ![]() 2. Ein Button "Neues Spiel" wäre nicht schlecht ;) 3. Ich kann die Größe des Forms ändern, das ist überhaupt nicht nützlich. Suchbegriffe: [oh]BorderStyle, BorderIcons[/oh] Vorerst sollte das noch genug Arbeit für dich sein, viel Spaß :zwinker: Greetz alcaeus [edit]Warum muss ich auch immer so viel schreiben :roll:[/edit] |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Naja, zu den ersten beiden Punkten hab ich ja schon was geschrieben. Und was die Formgröße angeht: ich hab mir - ehrlich gesagt - noch nicht die Mühe gemacht, die zu ändern :roll:
Naja, ich ändere eben die Formgröße und setz es neu auf, dann kommen die anderen Features in 0.0.0.4 :zwinker: edit: Neue Version verfügbar! |
Re: Mein erstes Spiel: Tic, Tac, Toe!
villeicht wäre für neues spiel oder so
die komponente TMainmenu ganz gut für dich ;) |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Ich habe ein Problem beim zweiten Spiel festgestellt. Spieler 2 kann noch garnicht gewonnen haben(siehe Bild).
-NIP- ![]() |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Hm? Warum denn das? *Quelltext durchforst* ich kümmere mich mal drum...
*selbst ausprobier* Also bei mir läufts ganz normal Oo Im Quelltext kann ich das auch nicht entdecken :gruebel: Kann doch eigendlich gar nicht sein. Ich hab jedem Button das gleiche zugeordnet:
Delphi-Quellcode:
da steht ganz klar AND [2,3], das ist also eigendlich total unmöglich, dass da spieler zwei gewonnen hat :gruebel:
if
(TicTacToe[2,1] = 2) and (TicTacToe[2,2] = 2) and (TicTacToe[2,3] = 2) then ShowMessage ('Spieler 2 (O) hat gewonnen!'); |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Hm... ich hatte grad selbst sowas. Hab ein neues Spiel angefangen und beim ersten Klick direkt gewonnen :roll:
Ich werd mir wohl was überlegen müssen... Da wird wohl irgendwo was nicht auf Ausgangswerte zurückgesetzt. Im Zweifelsfalle also einfach das Programm neu starten, dann funktionniert es einwandfrei ;) edit: Bug gefixt, Schlampigkeitsfehler ;) Dürfte jetzt alles laufen :) |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Liste der Anhänge anzeigen (Anzahl: 1)
Ja wie? Ohne KI? 8)
(Scherz - ist nicht sooo einfach) An sich ganz schick, nur irritieren die Zahlen irgendwie auf den Buttons, und durch das disablen erkennt man die Zeichen auf den schon gewählten Knöpfen recht schlecht. Anbei mal mein TicTacToe, das ich eigentlich nur als Studie für eine Hausaufgabe die in Java zu verfassen war ist. Ist daher nicht nach allen Regeln der Kunst, und halt Quick'n'Dirty - aber dafür mit einer KI. Leider lässt sich die KI auf 'schwer' immer noch mit einer bestimmten Zugfolge überlisten... das hat mich dann auch beim Präsentieren der Aufgabe einen von fünf Punkten gekostet :?. (Mal abgesehen von den 2 weiteren Minuspunkten dafür, dass dieses ******* Java bei nem Neustart mal abgestürzt ist, und mal nicht, und eine Nacht langes Debugging NICHTS ergeben hat, so dass es nur noch an Java liegen konnte! Nicht mal dieser arrogante Prof-Futzi konnte das erklären, aber NEIIIN: 2 Punkte Abzug: Läuft ja nicht richtig :kotz:. Seit dem kann ich TicTacToe, und besonders Java nicht mehr sehen :freak:.) Bei leichter KI kann man übrigends nicht verlieren :lol:. Der PC spielt quasi mit einem ^^ |
Re: Mein erstes Spiel: Tic, Tac, Toe!
öhm zu den Problemen die auftreten, das wer gewonnen hat obwohl es nicht geht, habt ihr da zufällig ein neues Spiel angefangen und in dem ist das dann passiert?
Wenn ja könnte es sein, dass die Variablen net gelöscht werden wenn man ein neues Spiel anfängt, bzw. sie net alle auf 0 gesetzt werden nach dem initalisieren... :wink: vielleicht hilft das ja ^^ MFG Keda Edit hatte net gesehen das es schon behoben worden ist 8) |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Liste der Anhänge anzeigen (Anzahl: 2)
@malo,
also das Spiel an sich sollte eigentlich keine Probleme machen -.- Die "KI" ist das schwierigere. Ach ja, wenn du schon so nette Zahlen auf den Tasten hast, dann könntes du es doch auch so einrichten, dass man dein programm auch per Tastatur steueren kann. Tipp: onKeyPress und KeyPreview (vom Form) (aber vorher noch die Zahlen etwas tauschen >> von der Telefontastatur zum Computer-Nummernblock hin) @dizzy, na ja, geht so. Also wenn du für die Spieler (und das leere Fehld) durchweg die selbe Nummer verwendest und über was anderes, dann ürde es übersichtlicher sein und du könntest sogar massig vereinfachen. Und deine "KI" ... also nach ein paar Runden hab ich nurnoch gewonnen, oder zumindestens unentschieden ... die ist ja sowas von vorhersehbar -.- Und so wie's aussieht versucht sie in den 2 niedrigeren Stufen auf jedenfall zu verlieren? Bei leicht geht die einem immer aus dem Weg ... ih wah immer mit genaz 3 Zügen gewonnen - konnte also immer ohne behinderung gerade durchziehen (egal in welche Richtung) Bei Mittel stellte sie sich zwar öfters in den weg, aber versuche immer noch alles um keinen 3er zu bekommen, selbst wenn sie die Chance zum Gewinnen hätte - man muß die ja schon fast dazu zwingen mal zu gewinnen. Schwer ist zwar schwerer, aber wenn man halt mal 'ne Zugfolge zum Gewinnen raus hat, dann kann man nicht mehr verlieren, das die "KI" ja immer das selbe macht. So, und hier mal 'ne geänderte Unit: Spiele und so überall vereinheitlicht (Spieler=-1, leer=0, KI=1) und so einiges vereinfacht :) [edit] so, da ich ein bissl lange Weile hatte, hier nochmal mit Tastatursteuerung. (123456789 0 /*-) und/oder (123456789 0n qwe) - was was ist, findet ihr schon noch raus :roll: |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Zitat:
Zitat:
Zitat:
Prinzip meiner KI ist ein Spielbaum nach MiniMax-Prinzip. Nur hab ich 2 Varianten im Netz gefunden: 1) Die Bewertung eines Knotens ist der Durchschnitt der Bewertung seiner Kind-Knoten 2) Die Bewertung eines Knotens ist die beste Bewertung die einer seiner Kind-Knoten hat Als Freund der Arithmetik hab ich mich für 1) entschieden :), und auch der Prof meinte, dass das nicht sooo prall sei, und das "echte" MiniMax auf 2) beruht. Wie dem auch sei -> Die Klausur für die ich die Zusatzpunkte brauchte hab ich am Montag geschrieben ^^. Und es ist halt nur ein (kaum optimierter) Prototyp um eine grobe Vorstellung davon zu bekommen wie man daran gehen könnte. Das eigentliche Game ist in Java, und längst von meiner Platte verschwunden ^^. Aber grundsätzlich ist MiniMax wohl das Mittel der Wahl bei derartigen Games. nachti, Fabian |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Zitat:
mal ist Spieler=-1, KI=1 und leer=2 (z.B. rateField) dann ist plötzlich Spieler=0 und KI=1 (z.B. player in buildTree) und auf einmal ist leer=-1, Spieler=0 und KI=1 (z.B. in getValue, getSymbol & btn11Click) ... Und nachdem das einheitlich war, ließen sich viele Abfragen uns Zuweisungen, welche meherere Felder betrafen über ganz kurze Schleifen ausführen. PS: da es ja mehrere gute Lösungen gibt, würde sich ein bissl Zufall ganz gut machen und die "KI" wäre nicht mehr so vorhersehbar. |
Re: Mein erstes Spiel: Tic, Tac, Toe!
So, mal zu den Fragen an mich:
KI kann man jetzt erstmal nicht von mir verlangen, ich bin schon froh, wenn das Spiel überhaupt läuft :roll: Wenn jemand ein gutes Tutorial kennt, wo man KIs lernen kann, kann er es mir gerne zeigen. Vielleicht wird es dann irgendwann mein Tic, Tac, Toe auch mit KI geben :mrgreen: Wegen dem disablen muss ich mir noch was überlegen... vielleicht irgendwie in ein If-Paketchen packen und das disablen rausnehmen... naja, mal schaun. Wegen dem "schnell gewinnen"-bug hab ich ja was zu geschrieben... ich hab es mir nämlich beim onclick auf dem Neustarten-Button einfach gemacht und einen Befehl, den ich 9 mal in verschiedenen Variationen brauchte, einfach 9 mal kopiert und die gewünschten Parameter geändert... dabei hab ich 2 Zahlen vergessen zu ändern :roll: naja, ist ja jetzt behoben. @himitsu: Man darf niemals vergessen, dass ich noch totaler Anfänger bin und erstmal klein anfangen muss... ich weiß, dass die KI das schwierigste ist, aber ich hatte schon genug Probleme mit dem Spiel selbst... wenn ich mich gut genug auskenne, mach ich bei Gelegenheit mal 'ne KI dazu ;) Ich werd dann auch mal gucken, dass ich die Zahlen ändere und eine Steuerung per Tastatur erlaube, nur fürchte ich, wird es dann etwas unübersichtlich, weil ich ja die Buttons in der Reihenfolge angelegt hab... Naja, auch darum kümmere ich mich. Vielleicht unter OnCreate die Captions ändern, dann hab ich in meinem normalen Form immer noch die normalen Zahlen ;P So, ich hoffe, ich hab alle Fragen beantwortet... heute hab ich nicht so viel Zeit, aber ich kümmere mich spätestens morgen drum ;) |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Zitat:
Aber so hatte ich im Vorfeld in einer schönen Sprache herausfinden können wo ich nochmal ans Konzept ran musste, bevor ich mich zusätzlich noch mit diesem Java rumärgern musste :D. Sollte ja auch nur eine kleine Anregung sein - eigentlich steht mein Prog hier ja garnicht zur Debatte :mrgreen: (Aber trotzdem ganz ganz herzlichen Dank für deine Korrekturen/Verschönerungen! Gute Beispiele zu haben ist immer wertvoll.) schönen Gruss, Fabian |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Soeben habe ich die version 0.0.0.5 vollendet...
Zu den Neuerungen: Ein Info- sowie ein Anleitungs-Button sind nun verfügbar. Buttons sind nach der Nutzung unsichtbar, stattdessen nimmt ein Label ihren Platz ein. Dadurch wird die Lesbarkeit gefördert. Die Zahlenfolge auf den Buttons hat sich nun zur Telefon-Wahlscheibe-Reihenfolge geändert. Ein "Beenden"-Button ist nun verfügbar. Noch nicht erschienen: KI und Tastatursteuerung. Viel Spaß dabei ;) |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Liste der Anhänge anzeigen (Anzahl: 1)
Hm es fängt schon an:
|
Re: Mein erstes Spiel: Tic, Tac, Toe!
Die Zahlenreihenfolge hätte ich nicht geändert... schau dir mal den Nummernblock deiner Tastatur genau an :zwinker:
|
Re: Mein erstes Spiel: Tic, Tac, Toe!
Zum Bug: Bitte sagen, ob der vor, oder nach einem Neustart des Spiels kam!
@dizzy: Die erste Zahlenfolge hatte jedoch eine ganz andere Reihenfolge... meinetwegen kann ichs aber gerne zur Ziffernblock-Folge ändern, obwohl ich die nicht so gerne mag... :roll: |
Re: Mein erstes Spiel: Tic, Tac, Toe!
Zitat:
|
Re: Mein erstes Spiel: Tic, Tac, Toe!
Zitat:
0.0.0.6 komm vorraussichtlich morgen online, ich versuche noch Tastatursteuerung einzubauen... |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.6)
Version 0.0.0.6 ist soeben online gegangen!
Zu den Neuerungen: Bei Start des Spiels erscheint ein Informationsfenster. Nun komplett mit Tastatur zu bedienen! Zahlenfolge dem Tastatur-Nummernblock angepasst! Erneuter Neustart-Bug gefixt! Alle Fenster mit ESC schließbar! Ich denke, das war es fürs erste. Ich hoffe, ihr seid jetzt zufrieden :) |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.6)
Tja, leider umß ich dich noch ein bissl ärgern :roll:
Wenn einer gewonnen hat, kann man ja immernoch weiterspielen. Am Beseten deaktivierst du einfach die Tasten des Spielfelds, sobald ein Spieler gewonnen hat. Und dann noch was "witziges" - klicke mal alf die Felder in den folgenden Reinfolgen: 1 6 2 9 3 und schau mal genau auf das Feld 6 und hier 7 1 6 2 9 3 sind die Felder 3 und 6 interessant |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.6)
Das mit den deaktivieren ist nicht so einfach... denn wenn ich die Buttons disable, kann man sie immernoch per Tastatur steuern :gruebel:
und bei der zweiten Sache bin ich sprachlos :wall: ich werd mir nochmal den geänderten Quelltext durchlesen, bestimmt wieder so ein schlampigkeitsfehler :roll: :wall: |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.6)
Tipp zum Disablen:
Im onKeyPress (also dort wo du die Tasten abfragst), brauchst du ja nur enable abfragen.
Delphi-Quellcode:
case key of
'1': if button1.enabled then button1.click; '2': if button2.enabled then button2.click; ... |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.6)
Ah, gute Idee! Versuch ich gleich mal einzubauen... ^^
|
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.7)
Soeben ist Beta 0.0.0.8 online gegangen!
Zu den Neuerungen: Buttons werden bei Spielende disabled. Der falsche-Label-Änderungsbug gefixt. Soweit dürfte alles klar sein :) |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)
Was mir aufgefallen ist:
:arrow: Wenn keiner gewonnen hat, sollte vielleicht ein Unentschieden kommen :arrow: Klcke mal die Buttons in der folgenden Reihenfolge an: 123698745, Spieler X hat dann zweimal gewonnen :stupid: |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)
Zitat:
zum ersten: Kann ich gerne machen... stell mir alle Möglichkeiten zusammen, ein Unentschieden zu machen und ich füg es ein :roll: Zum zweiten: Das liegt wohl daran, dass man da zweimal gewinnt :roll: Zweimal diagonal, das ist sozusagen ein doppelsieg :mrgreen: Sollte auch genüsslich gefeiert werden, mit zwei Messageboxen :firejump: |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)
Zitat:
Außerdem: In dem Formular mit dem vielen Text am Anfang sollte es einen Weiter-Button geben ... :stupid: |
Re: Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)
Zitat:
Die Unentschieden-Funktion ist da etwas schwieriger... ich muss mir da echt mal was überlegen. auf jeden fall viel schreibarbeit *faul ist* :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz