AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)
Thema durchsuchen
Ansicht
Themen-Optionen

Mein erstes Spiel: Tic, Tac, Toe! (Beta 0.0.0.8)

Ein Thema von malo · begonnen am 23. Sep 2004 · letzter Beitrag vom 26. Sep 2004
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von malo
malo
Registriert seit: 19. Sep 2004
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 ), 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

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
Angehängte Dateien
Dateityp: exe tictactoe0.8.exe (348,0 KB, 100x aufgerufen)
 
Benutzerbild von Kedariodakon
Kedariodakon

 
Delphi 7 Enterprise
 
#11
  Alt 24. Sep 2004, 00:20
ö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...

vielleicht hilft das ja ^^

MFG Keda


Edit hatte net gesehen das es schon behoben worden ist 8)
Christian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#12
  Alt 24. Sep 2004, 01:45
@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
Angehängte Dateien
Dateityp: exe ticcitacci_sfx.exe (262,7 KB, 27x aufgerufen)
Dateityp: exe ticcitacci_sfx2.exe (263,4 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

 
Delphi 7 Enterprise
 
#13
  Alt 24. Sep 2004, 02:57
Zitat von himitsu:
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.
Öhm, schnall ich grad nicht so ganz, aber ich schau mir am WE mal deine Version an!

Zitat von himitsu:
Und deine "KI" ... also nach ein paar Runden hab ich nurnoch gewonnen, oder zumindestens unentschieden ... die ist ja sowas von vorhersehbar -.-
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.
Habbich ja gesagt . Wenn man in den ersten 3 Zügen 3 Ecken belegt, dann hat man gewonnen. Sonst hab ich noch keine Kombi gefunden. Und sie macht immer das selbe, da es ja kein Zufallsgenerator sein soll, sondern ein (leider nicht ganz) perfekter Gegenspieler.

Zitat von himitsu:
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.
Auf mittel versucht die KI auf unentschieden zu spielen (was nicht so einfach ist), und auf einfach spielt sie quasi mit dir - es ist also ihr Ziel zu verlieren -> daher einfach


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
Fabian K.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#14
  Alt 24. Sep 2004, 03:23
Zitat von dizzy:
Zitat von himitsu:
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.
Öhm, schnall ich grad nicht so ganz, aber ich schau mir am WE mal deine Version an!
ganz einfach:
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.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo
 
#15
  Alt 24. Sep 2004, 13:26
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

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

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

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
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

 
Delphi 7 Enterprise
 
#16
  Alt 24. Sep 2004, 18:56
Zitat von himitsu:
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)
...
*räusper* ja der Rest an Konzeptionierung hat in einer anderen Sprache statt gefunden... Ich erinnere mich, dass das Prog an dieser Stelle etwas wurschtelig wurde

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 .

Sollte ja auch nur eine kleine Anregung sein - eigentlich steht mein Prog hier ja garnicht zur Debatte (Aber trotzdem ganz ganz herzlichen Dank für deine Korrekturen/Verschönerungen! Gute Beispiele zu haben ist immer wertvoll.)


schönen Gruss,
Fabian
Fabian K.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo
 
#17
  Alt 24. Sep 2004, 21:48
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
  Mit Zitat antworten Zitat
Benutzerbild von titus
titus
 
#18
  Alt 24. Sep 2004, 21:57
Hm es fängt schon an:
Miniaturansicht angehängter Grafiken
fehler_ttt.gif  
Daniel L.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

 
Delphi 7 Enterprise
 
#19
  Alt 24. Sep 2004, 22:28
Die Zahlenreihenfolge hätte ich nicht geändert... schau dir mal den Nummernblock deiner Tastatur genau an
Fabian K.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo
 
#20
  Alt 25. Sep 2004, 07:42
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz