ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
1413
1413
EMPFEHLEN
-
Hallo zusammen,
ich hab ein problem und ich wieß absolut nicht weiter. Also ich muss von der schule aus ein projekt in Java machen. Und zwar muss TicTacToe als Servlet das dann nachher auf einem tomcat server läuft.
Man spielt gegen den computer und nicht gegen eine andere person. Die Gewinnstellungen sollen in einer DB stehen, womit dann geprüft werden soll ob man gewonnen hat. Soweit hört sich das für die mesten hier recht einfach an
In meiner datenbank stehen insgesamt 16 gewinnstellungen (jeweils 8 für X und O).
Wenn man also XXX(feld1,feld2,feld3) setzt wird auch gemeldet das man gewonnen hat. nur wenn man z.B erst feld1,feld2,feld4 und dann erst feld 3 setzt geht nicht mehr weil es ja nun insgesamt 4X sind und so eine gewinnstellung steht naürlich nicht in der DB.
So nun meine frage: Wie kann ich das prüfen OHNE das ich alle ca. über 1000 möglichen gewinnstellung manuell in die DB schreibe?
Ich wäre eucht dankbar wenn hier jemand ne idee hat.
Den Code könnt ihr euch hier anschauen(sind 2 Klassen):
- "Frontend" --> http://rafb.net/p/pPB7oY72.html
- Methoden --> http://rafb.net/p/Fvl3GG72.html
Die DB sieht so aus:


Ich hoffe ich habs verständlich erklärt. Vielen Dank schonmal für die mühe.
Gruß Seji
-
22.12.08 15:30 #2
Hmm sieht sehr umständlich aus..
1. Möglichkeit : extremes Kürzen der DB. Alle Möglichkeiten werden im Binärprinzip eingetragen. Die Binärreihe wird von oben links nach unten rechts aufgeschlüsselt, so dass eine gewonnene Reihe "oben Waagerecht" so kodiert wäre :
111000000
Da es gar nicht so viele Möglichkeiten gibt ( 8 wenn ich richtig zähle), ist die Arbeit schnell getan.
Beispiele:
Gewonnen Diagonal steigend : 001010100
Gewonnen Senkrecht Mitte : 010010010
2. Möglichkeit ( aus der aktuellen c't ) : Man gibt jedem Feld einen besonderen Wert, so dass sich ein magisches Quadrat ergibt, wo die Addition der Gewonnen-Felder 15 ergibt. Nun wird nach jedem Zug gezählt, ob der Spieler mit den gesetzten Punkten eine Punktzahl von genau 15 erreichen kann. Wenn dies der Fall ist, hat er gewonnen. Wenn also 4 Züge gemacht sind, müssen 3 der 4 Züge 15 ergeben.
2 9 4
7 5 3
6 1 8
Summa: Die erste Möglichkeit sollte die richtige sein, und diese Liste gilt für beide Seiten, wenn die gesetzten Punkte in Binärumwandlung einem Eintrag entsprechen, hat derjenige gewonnen.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
Hallo,
danke für deine antwort. Zur ersten Lösungsmöglichkeit. Ich verste den unterschied zu meiner jetztigen "lösung" nicht. Ist dann doch genau das selbe problem. Wenn jetzt jemand
1 (feld1) 1 (feld2) 1 (feld3) 1 (feld4) 0 (feld5) 0 (feld6) 0 (feld7) 0 (feld8) 0 (feld9) setzt?
also erst feld1 dann feld2 dann feld4 und dann erst feld3 hast man doch das selbe problem. der zweite lösungsansatz hört sich sehr interesant an.
darüber denke ich mal mal nach. Danke nochmal für deine flotte antwort.
Gruß Seji
PS: wenn jemand noch andere idee hat, immer her damit
Geändert von seji (22.12.08 um 16:10 Uhr)
-
22.12.08 16:16 #4
Wenn ich das jetzt recht zusammenkaue, ist Möglichkeit 1 eine einfache boole'sche (logische) AND-Operation !
-> Gesetzte Felder AND DB-Eintrag = DB-Eintrag -> Dann gewonnen !
-> 11110000 AND 111000000 = 111000000 !
Link:
http://de.wikipedia.org/wiki/Boolesche_Algebra
http://www.datasource.de/programmier...stabellen.html
mfg chmee
p.s.: Wenn die Aufgabe "mit DB" lautet, wird Dir Möglichkeit 2 nix bringen, aber Du wirst damit Sonderpunkte beim Lehrer abgreifen könne, indem man das Spielprinzip mit dem magischen Quadrat erklärt
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
hä? sry das raff ich nicht......
-
22.12.08 19:01 #6
Lies Dir bitte die Logischen Operationen durch, die gibt es in jeder Sprache, da sie Basis der Mikroprozessortechnik sind.
Logische Operationen vergleichen 2 Zustände und geben anhand des Operators eine Aussage, ob die Operation Wahr oder Falsch ist. Die UND-Verknüpfung ist Wahr, wenn beide zu vergleichenden Zustände auch wahr sind ( 1 UND 1 = 1 ). Diese Operation kann man auch auf mehrere Bitstellen anwenden, und als Ergebnis bleiben die Bitstellen übrig, die in beiden Operanden als Wahr gekennzeichnet sind.
binäre Beispiele :
1 UND 0 = 0
0 UND 0 = 0
10 UND 10 = 10
10 UND 11 = 10
11 UND 11 = 11
10101 UND 11100 = 10100
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
05.01.09 16:56 #7
Hi,
ich habe selbst mal ein TTT für eine n * m Matrix, welche zur Laufzeit änderbar war,
geschrieben.
Meine Lösung erlaubte zusätzlich zu konfigurieren, ob 3, 4, 5 oder n aufeinanderfolgende Felder Gewinnstellungen bieten sollten.
Gelöst habe ich es, indem die Felder Objekte waren, welche ihre Umgebung
geprüft haben. War z.B. nach einem Zug ein Feld diagonal unterhalb gesetzt worden,
wurden die darauf angrenzenden Felder geprüft (diagonal in diesem Fall, seitlich, ober und unterhalb in anderen Fällen).
Etwas anspruchsvoller wird es dann, wenn man das auf die Laufzeit hin optimieren möchte, sprich: Es sollte festgelegt werden, ab wo geprüft wird (also nur die betroffen Felder reagieren bzw. prüfen).
Am einfachsten prüft man von dem gerade gesetzten Feld aus.
Grüße, TimGeändert von tim staeglich (05.01.09 um 17:28 Uhr) Grund: Details ergänzt...
XING -- Hat Dir mein Beitrag geholfen? Dann würde ich mich über eine positive Bewertung freuen!
Ähnliche Themen
-
TicTacToe bauen
Von lisali im Forum JavaAntworten: 28Letzter Beitrag: 28.06.10, 18:45 -
TicTacToe / Netzwerk
Von Nehemia im Forum JavaAntworten: 5Letzter Beitrag: 27.01.10, 10:37 -
TicTacToe
Von anfängerregnäfna im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 11Letzter Beitrag: 21.08.09, 19:10 -
TicTacToe Strategie des Computers
Von sawamin im Forum C/C++Antworten: 6Letzter Beitrag: 16.02.05, 22:41 -
[C++] TicTacToe
Von js-mueller im Forum C/C++Antworten: 5Letzter Beitrag: 20.08.03, 14:24





Zitieren

Login





