Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Das beliebte -XXO- Spiel

Diskussion: Das beliebte -XXO- Spiel im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige Aufgabe ist es ein XXO - Game zu programmieren. Spielregeln: Du spielst mit deiner Spielfarbe bzw. O gegen den ...

Antwort
Alt 10.08.05, 16:15   #1 (permalink)
 
Registriert seit: 04.08.05
minzel Leistung: Facit NTK
minzel eine Nachricht über ICQ schicken
Likes: 0
Standard Das beliebte -XXO- Spiel

Anzeige

Aufgabe ist es ein XXO - Game zu programmieren.

Spielregeln:
Du spielst mit deiner Spielfarbe bzw. O gegen den Computer. Versuche in eine Reihe (horizontal, senkrecht oder diagonal) drei Felder mit deinen "O-Pfoten" zu markieren, indem Du ein Feld anklickst. Es können nur Felder markiert werden, die noch nicht besetzt sind. Der Spieler, der als erster eine Reihe geschafft hat gewinnt. Zudem soll für die AI 2 Funktionen eingebaut werden.

1. Computer setzt seine "X-Pfoten" zufällig (Anfänger)
2. Computer kann Spielerschritte voraussehen und kontern. (Fortgeschritten)

Viel Erfolg
minzel

minzel ist offline   Mit Zitat antworten
Alt 12.08.05, 16:34   #2 (permalink)
 
Registriert seit: 03.12.04
Boar Leistung: Facit NTK
Likes: 0
Standard RE: Das beliebte -XXO- Spiel

So, hab das Spiel mal nach deinen Vorgaben programmiert. Du hast gar nix zur Feldgröße gesagt, ich bin mal von 3x3 ausgegangen. Wenn man zwischen "leicht" und "schwer" ausgewählt hat, muss man erst noch auf "Neustart" klicken, damit der neue Schwierigkeitsgrad eingestellt wird. Wenn das Programm gestartet wird, ist der Gegner auf "leicht" gestellt, er setzt also zufällig.

Achso, Programmiersprache ist Java.

Gruß, Boar
Angehängte Dateien
Dateityp: zip TicTacToe.zip (9,3 KB, 948x aufgerufen)
Boar ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 12.08.05, 16:51   #3 (permalink)
Themenstarter
 
Registriert seit: 04.08.05
minzel Leistung: Facit NTK
minzel eine Nachricht über ICQ schicken
Likes: 0
Standard

Also besser hätte ich es auch nicht lösen können. Cons.
Die Programmiersprache die de gewählt hast gefällt mir persönlich auch am besten *fg
naja, wäre schön wenn du noch den Quelltext offen legst. Würd mich interessieren wie du das im allg. gelößt hast. Und selbstverständlich auch für andere.

thx voraus.
minzel
minzel ist offline   Mit Zitat antworten
Alt 12.08.05, 16:53   #4 (permalink)
 
Registriert seit: 05.01.05
Zemy Leistung: Facit NTK
Likes: 0
Standard

Wiki Roxx
Für die Spielestrategie
Zemy ist offline   Mit Zitat antworten
Alt 12.08.05, 17:11   #5 (permalink)
Themenstarter
 
Registriert seit: 04.08.05
minzel Leistung: Facit NTK
minzel eine Nachricht über ICQ schicken
Likes: 0
Standard

cool, zemy, an so was hatte ich gar nicht gedacht. werde ich mir mal zu gemühte führen.
minzel ist offline   Mit Zitat antworten
Alt 12.08.05, 19:00   #6 (permalink)
 
Registriert seit: 03.12.04
Boar Leistung: Facit NTK
Likes: 0
Standard

Zitat:
naja, wäre schön wenn du noch den Quelltext offen legst.
Den Quelltext kannst du dir auch aus dem .jar-file entpacken, ich hab die .class- und die .java-Dateien gepackt.

Aber ich häng nochmal alle Dateien in den Anhang. Ist nicht wirklich objektorientiert programmiert, aber es erfüllt seinen Zweck.

EDIT: Mein Programm ist auch auf der Stufe "schwer" nicht unschlagbar (hab ich grad eben gemerkt). Hab eigentlich gedacht, dass man nicht gewinnen kann, aber wenn man den ersten Stein links oben in die Ecke setzt und den zweiten dann rechts in die Mitte, hat man eigentlich schon gewonnen.

Gruß, Boar
Angehängte Dateien
Dateityp: zip Quelltext.zip (9,2 KB, 404x aufgerufen)
Boar ist offline   Mit Zitat antworten
Alt 12.08.05, 19:48   #7 (permalink)
 
Registriert seit: 15.08.03
flame Leistung: Facit NTK
flame eine Nachricht über ICQ schicken
Likes: 0
Standard

Das spiel kann man nur nicht gewinnen, wen keiner einen fehler macht.. aber wenn das spiel nen fehler macht, kann man halt auch gewinne..

Es gibt ein 4 Gewinnt, das nennt sich Mustrum.. Ich habs bisher nicht geschaft da spiel zu schlagen.. die engine is einfach zu perfekt!
flame ist offline   Mit Zitat antworten
Alt 12.08.05, 19:51   #8 (permalink)
 
Registriert seit: 03.12.04
Boar Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Das spiel kann man auch gewinnen.. egal gegen welchen gegner.. du musst nur anfangen.. wenn du dann deine X oder O richtig setzt, gibt es keine möglickeit ein unentschieden herbeizuführen.
Das glaub ich dir erst, wenn du mir die Lösung präsentierst.

Gruß, Boar
Boar ist offline   Mit Zitat antworten
Alt 12.08.05, 19:58   #9 (permalink)
 
Registriert seit: 15.08.03
flame Leistung: Facit NTK
flame eine Nachricht über ICQ schicken
Likes: 0
Standard

ich war da wohl etwas voreinig mit meinem Post (das ich inzwischen geändert hatte befopr du geantwortet hast.). Es gab mal ne kombination, mit der ich in der schule jeden geschlagen hab, wenn wir das aufn block mit richtigem stift und papier ;-x gespielt haben.. aber ich kann natürlich (zumal ich mich nicht dran erinnern kann) nich sagen,dass die anderen keinen fehler gemacht haben..

wie gesagt, ich war n bisschen voreilig mit meinem post *g*
flame ist offline   Mit Zitat antworten
Alt 12.08.05, 21:09   #10 (permalink)
 
Registriert seit: 03.12.04
Boar Leistung: Facit NTK
Likes: 0
Standard

Hab mich schon gewundert.

Bei Vier Gewinnt ist das wieder was anderes: Da gibt es die Möglichkeit, als beginnender Spieler den Sieg zu erzwingen. Mustrum ist auf der höchsten Schwierigkeitsstufe (bzw. Suchtiefe) eines der wenigen perfekt spielenden Vier Gewinnt Programme. Nähere Informationen dazu gibt es z.B. hier oder hier.

Gruß, Boar
Boar ist offline   Mit Zitat antworten
Alt 01.10.05, 18:06   #11 (permalink)
 
Registriert seit: 05.02.05
Chrisiaut Leistung: Facit NTK
Chrisiaut eine Nachricht über ICQ schicken
Likes: 0
Standard

ja stimmt bei tic tac toe muss man die KI absichtlich dumm programmieren weil sie sonst immer gewinnt oder ein unentschieden rauskommt...

wir machen auch grad sowas.. wurde uns gestern aufgegeben sowas zu programmieren.. haben ein halbes jahr zeit.. bin aber heut um viertel2 damit fertig geworden..

is allerdings in der momentaren entwicklungsphase nur spieler vs spieler

source is im zip drin

scheint aber irgendwo ein fehler zu sein... bin aber ned sicher...
Angehängte Dateien
Dateityp: zip tic.zip (21,9 KB, 279x aufgerufen)
Chrisiaut ist offline   Mit Zitat antworten
Alt 01.10.05, 18:32   #12 (permalink)
 
Registriert seit: 15.08.03
flame Leistung: Facit NTK
flame eine Nachricht über ICQ schicken
Likes: 0
Standard

bei der abfrage if (right == 1) und if(right==2) brauchst du einen break befhel.. (ich weis nur nicht wie der in c heißt. könnte break, end oder end function oder irgendsowas sein.

zur erklärung..

problem:
bei der eingabe eines falschen wertes, werden plötzlich mehrere felder ausgefüllt.

grund:
wenn das spiel feststellt, dass eine falsche eingabe gemacht wurde, setzt er den spieler zurück, und führt die funktion userinput erneut aus. leider steht dann aber immernoch die weitere ausführung des codes mit mit falscheingabe an.

behebung:
Tja, wie oben beschrieben, du musst aus der funktion mit der falschen information aussteigen, leider kann ich dir nicht sagen wie die heißt, da ich kein c kann.
flame ist offline   Mit Zitat antworten
Alt 01.10.05, 21:21   #13 (permalink)
 
Registriert seit: 05.02.05
Chrisiaut Leistung: Facit NTK
Chrisiaut eine Nachricht über ICQ schicken
Likes: 0
Standard

hm stimmt das wirds sein.. nur das Problem ist, dass er mir den break befehl aberkennt.. er meint der is an der stelle illegal... in anderen meiner programme geht er jedoch.. vielleicht liegts an den funktionen...

prinzipiell heißt der befehl eh "break;" aber wie gesagt der gibt mir einen fehler zurück
Chrisiaut ist offline   Mit Zitat antworten
Alt 02.10.05, 13:07   #14 (permalink)
 
Registriert seit: 15.08.03
flame Leistung: Facit NTK
flame eine Nachricht über ICQ schicken
Likes: 0
Standard

ansonsten kannst ihn ja mit return verlassen. hat bei dir ja keine auswirkung.
Code:
if(right ==1)
{
printf("Falsche Eingabe! nur zahlen zwischen 0 und 2 eingeben! Oder 9 zum beenden\n");

//damit der selbe spieler nochmal dran is
if(spieler==1)
spieler = 2;
else
spieler = 1;

//anz = anz -1;

userinput();

return 0;  //<<<<<<<<<<<<<<<<<<<<<<<<<
}

Und das selbe auch bei if(right ==2) da funzt es zwar auch ohne, aber mit is es auf jedenfall sauberer, da es sonst evtl auch zu fehlern kommen kann.
flame ist offline   Mit Zitat antworten
Alt 02.10.05, 13:12   #15 (permalink)
 
Registriert seit: 05.02.05
Chrisiaut Leistung: Facit NTK
Chrisiaut eine Nachricht über ICQ schicken
Likes: 0
Standard

ah vielen Dank! ich werds gleich probieren
Chrisiaut ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Das beliebte -XXO- Spiel
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Spiel - PC Landra Kaufberatung 22 19.01.08 14:14
Unmögliches Spiel? LaNdRiX Fun Section 6 10.06.07 14:22
Wc3 Spiel erstellen Avenger Games 7 26.02.05 20:59
DOS-Spiel ithuriel Windows 1 05.08.04 01:08


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61