Spiel-Projekt; "Tic Tac Toe"

Nico192

Mitglied
HiHo

Bin an einem -für mich ganz heißen- Projekt dran, ist vielleicht ein bischen übertrieben für den Anfang, doch ich bin irgendwie so fest entschlossen...
Ich nenne mein Projekt vorerst mal "Spiel" !
1. Projekt
Dieses Projekt nenne ich "Tic Tac Toe" (hatte ich schon mal gehört :-) )
Dazu benötige eigentlich nur einen Befehl für:
-------> ...wenn ich auf den Button "Player2" klicke sollen anstatt picture1, picture2 beim klick erscheinen( also anstatt z.B. das Bild mit dem " x " (picture1) soll das bild mit dem Kreis (picture2) erscheinen)
Wenn das soweit klappt-und von mir verstanden ist- sollen sich die Button automatisch und abwechselnd aktivieren ...will heißen, dass er automatisch das bild zwischen picture 1 und 2 nach jedem "Picture sichtbar machen" (picture1/2.visible=true) beim nächsten mal, dass andere Bild erscheint (Sollte jetzt verstanden sein ;) )
(Lösung dazu wäre z.B. dass mit einem klick gleichzeitig ein zweiter Button aktiviert wird (der der das Bild wechselt), und der seine Eigenschaft pro Klick auch wieder ändert,
eure Vorschläge sind gefragt

------> BOTS, wäre der wohl schwierigste SChritt...wenn dies zu kompliziert und zu umfangreich wird, lassen wir diesen Teil lieber ;)
------>Weiterhin sollte die Möglichkeit bestehen, einen "Zug" rückgängig zu machen (mit nachfrage ( frmnachfrage.show ) Ob der Gegner einverstanden ist (Da dies auch der Player der den Zug zurücknehmen will selbst, "bestätigen" kann, sollte die Anzahl der "rückgängigmache" in einer textbox vermerkt werden (sollte kein problem sein-auch für mich nicht) und (was auch kein Problem für mich sein dürfte, wäre, die Anzahl der "Rückgängigmache" einzuschränken (Wo da vielleicht dass Problem läge, wäre dass die "Rückgängigmache" natürlich nicht allgemein, sondern PRO Spieler angerechnet und eingeschränkt werden soll!!
(Lösung dazu wäre z.B. dass mit einem klick gleichzeitig ein zweiter Button aktiviert wird (der der das Bild wechselt), und der seine Eigenschaft pro Klick auch wieder ändert,
eure Vorschläge sind gefragt)

2. Projekt
Undzwar: -2D
-Blöcke, die z.B. mit "w" =Wall "p" =Player usw. beschriftet sind
-->--(--<--hoffe ihr könnt mir soweit folgen-->--)--<--
mit Pfeil-hoch;Pfeil-rechts;Pfeil-links;Pfeil-runter (Also den Pfeil-tasten ;) ) soll man den Spieler einen Kasten höher bringen (cls-zum löschen des "p" feldes also: player.picture.cls (o.ä.)) mit Enter, soll man z.B. Dinge aufnehmen, bestätigen (Türen öffnen, Gegenstände-Türen öffnen, usw.)

ABER: Zu diesem Projekt, kommen wir eher nachher (wichtiger wäre mir erstmal das "Tic Tac Toe"-Projekt

P.S. Sorry erstmal für den ellen-langen Beitrag ;) , un danke zugleich für eure Hilfe!!
Die "Hilfe/Tutorials" die ich über :google: fand, waren irgendwie zu anspruchsvoll, und sooo lang, un wenn man zu einem elle-langen Text(Tutorial) --länger als meiner :-) -- auch noch jedes 3.Wort nicht kapiert, ist es wirklich zu mühsam das zu lesen (man kapiret ja eh nichts) auch wenn dass euch Zeit kostet, ihr könnt dass soooo toll erklären, dass selbst ich es verstehe (und darauf könnt ihr euch wirklich was einbilden ;)
-Bei so einem langen Text kann es schon mal vorkommen dass ich mich irgendwie verhappsel, und meine Sätze mal keinen ganz korrekten Sinn ergeben(falls mir noch was ganz wichtiges zu dem andrem Thema einfällt,dass ich dann erst noch vermerke),einfach melden-und ich bitte um Verständnis dafür

GRÜßE N!C0 192
 
Was´n Los

Kann mir keiner Helfen?
Hab ich mich zu unverstämdlich attikuliert, oder was ist los :confused:
Ihr seit doch sonst immer so hilfe-lustig :p

Bitte helft mir, oder satg mir wenigstens eure Meinung dazu

(P.S. Es muss auch programmiert werden, dass einer gewonnen hat, wenn 3 Kreise/Kreuze in einer Reihe/Diagonale stehen)

Grüße Nico
 
Naja, du hast ja eigentlich keine konkrete Frage gestellt. Du hast nur beschrieben, was du tun möchtest und da würde ich spontan drauf antworten: Tu's doch!
Vielleicht beschreibst du mal genauer, wo nun das Problem liegt.
 
Genau darin, es zu tun!!
Vielleicht Ansätze...Codes wären wichtig, und vorallem, ne ausführliche Erklärung :-)

Thx ;)

p.S. Also einfach wie das was ich vorhabe geht

Grüße N!C0 192
 
Hi,
also du möchtest also nen Ansatz für deine Lösung. Mit Code möcht ich dir jetzt nicht dienen, kannst ja ruhig mal ein wenig dein Köpfchen anstrengen! ;)
Najo, aber ich will dir bei den ersten Schritten helfen. Wichtig ist das du das Projekt Schritt für Schritt wachsen lässt. Das hilft dir in sofern, weil du dann genau nachvollziehen kannst wann der Fehler entstanden ist und ihn leichter beheben kannst. Außerdem kommst du so wesentlich schwerer durcheinander.

1. Schritt:
So also am besten verwendest für die Spielfläche also das TicTacTo Feld eine PictureBox, denn da kannst du gut mit den VB Funktionen zeichnen. Als nächstes baust du den ersten Knopf zum Spielstarten.
Ziel im ersten Schritt ist es also mit Hilfe des Knopfes ein neues Spiel starten zu können und das generieren des TicTacTo Spielfeldes innerhalb der PictureBox beim Starten des Spieles zu verwirklichen.
Lass dieses Feldaber vom Code generieren, das heißt das du mit diversen Eigenschaften der PictureBox und den Zeichen Funktionen von VB üben kannst.
Tipp: Die breite, sowie die Höhe eines der Neun Felder beträgt jeweils genau ein Drittel der Maximalbreite der Picbox bzw. deren Maximalhöhe.

2. Schritt:
Also nun kommen wir zu was leicht Schwererem. Nun soll beim Klicken auf eines der Felder dort drin ein Symbol erscheinen, das sich von Spieler zu Spieler unterscheidet. Dafür machen wir erstmal 2 Buttons ins Formular. Der eine zeigt Spieler 1 und der andere Spieler 2 auf seiner Caption. wenn Spieler 1 dran ist soll der Knopf 'Spieler 1' nicht gedrückt werden können, genauso verhält es sich mit Spieler 2.
Soviel zu den Spielern. Am besten ist du schreibst zwei Prozeduren. Eine die ein X und eine die einen O zeichnet. Die bezeichnest du am besten mit sbDrawKreis u. sbDrawKreuz, damit du sie später leichter wieder findest
Jetzt müssen wir nur noch dem Programm klarmachen das es diesen O, bzw. das X in das Angeklickte Feld zeichnen soll. Für die Auswertung in welches Feld geklickt wurde nutzt du das MouseDown Ereignis der PicBox. Dann guckst du nach in welchem Rahmen sich die X bzw. Y Koordinaten des Klicks und kannst somit bestimmen in welches Feld geklickt wurde. Jetzt einfach die sbDrawKreis, sbDrawKreuz sinnvoll einfügen und schon kannst du die Grundfunktionen des TicTacTo nutzen.

3. Schritt:
Nun was etwas Einfacheres. Nun machen wir einige Verbesserung am dem was wir jetzt haben. Also wenn wir auf Start drücken soll nun jedeglich zusätzlich die PicBox gelöscht und das Feld neu gezeichnet werden.
Die Buttons Spieler1 und 2 werden nun gelöscht. Und in das MouseKlick Ereignis wird eine Prozedur eingebunden die den Spieler wechselt. Das kann man mit einer einfachen Booleschen abfrage machen. Also Wenn Spieler 1 = True Then male Kreuz Else male Kreis.
Oder mit einer Byte Variable, obwohl die Boolesche für diese Aufgabe besser geeignet ist.
Außerdem darf nicht in eine Feld etwas gemalt werden, wenn schon was drin steht. Demnach musst du die Zeichnen Funktionen einfach in ne If Abfrage einfügst die überprüft ob das Feld frei ist. Ob du das jetzt per Funktion machst die immer wirklich Aktuell überprüft ob das Feld frei ist oder per Variable ist deine Sache. ;)
Fertig ist die Verbesserung.

4. Schritt:
Das ist wieder was schwerer. Nun kommt die Regel dazu wann man verloren, und wann man gewonnen hat. Das regelst am besten per Funktion. Diese wird immer aufgerufen wenn ein Symbol gesetzt wird. Diese überprüft dann ob 3 Symbole der gleichen Sorte, in einer Diagonalen, in einer Horizontalen oder einer Vertikalen Linie an einander Liegen. Wenn das der Fall ist wird die PicBox auf Enabled gesetzt damit keiner mehr klicken kann und eine Nachricht entweder in einer MessageBox oder in einem Label ausgegeben, die den Gewinner beglück wünscht.
Wenn kein Feld mehr frei ist, heißt 9 Symbole gesetzt wurden und keine 3 dieser Nebeneinander liegen, dann soll das Feld auch Enabled werden und die Nachricht: "Leider konnte keiner das Spiel für sich entscheiden" erscheinen.
Als letztes nur noch per Startknopf alle Variablen die für den Spielablauf wichtig sind reinigen und das Spielfeld Neuzeichnen. Dann steht dem Spielspass nichts mehr im Wege.

So ich hoffe ich konnte dir ein wenig helfen. Bei Kritik bitte sofort schreiben. Hab das jetzt alles ganz Spontan versucht zu erklären und zu strukturieren. Wenn Fehler drin sind bescheid sagen, dann lern ich erstens noch daraus und kann eben verbessern!
Euer STS

P.S: Sry wegen der Rechtschreibung. Lag mir noch nie so besonders.
 
Danke shcon mal für deine Antwort...
Wir sind mit meinen Projekt schon sehr weit, nur leider habe ich es zur Zeit nicht zur Verfügung um es upzuloaden etc.
Aber unser einziges Problem lautet eben die "Win"-Funktion...
Also das überprüfen:

Wir haben es schon als "Funtion" gemacht - und auch dass er die umliegenden Felder überprüft!!
(Wobei ich mir bei diesem System nicht mehr ganz so sicher bin-wie wir es gemacht haben)

Aber wir haben es schon mal auf 8x8 Felder erweitert :-) ;)
Nun ist das Problem dass er immer die umliegenden Felder überprüft, wenn jetztg allerdings am rechten Rand gesetzt wird, so überprüft er die nächste Zeile-ersten Button, was die Schlussvolgerung daraus ist, ist ja klar...

Dazu war meine Lösung folgende:

Man macht einfach eine ganze Reihe (unsichtbarer) Buttons -auf die rechte Seite-

Die werden dann mitüberprüft-und die haben natürlich keine Captions...

(Wir arbeiten mit "Buttons" die "X" und "O" als Caption haben

Danke für all eure Hilfe...
Grüße N!C0 192

P.S. Wir werden dass zu einem "richtigem" (lusdigem) Spiel machen, und vielleicht auch uploaden wenn es fertig ist...
 
Zurück