Das beliebte -XXO- Spiel

wie in java ist das ganze auch in c++ einfach mit einem gui-builder zu programmieren.
wenn du dich aber mal mit direktX und c auseinandersetzt könntest du das spiel auch mal grafischer besser gestalten.

hab mal mit java und direktx gearbeiten. macht sich super.
 
aja btw kennt wer einen gui C builder?

mein prof hat mal was von einem erzählt hab aber kA wie der hieß
 
Gibt es sowas für C ?
Also mir ist nur bekannt das es ab C++ GUIs gibt.

Bei C kann man höchstens per codezeilen grafiken einbinden aber wie das geht weiß ich auch nicht. Hab es früher mal in TurboC gemacht und da wars schon enorm schwierig.
 
@minzel: java und directx? wusste nicht, dass es dafuer jni bindings gibt. warum nimmt man java wenn man sich eh an windows kettet mit directx?

um mit einer programmiersprache eine gui zu bauen ist es hilfreich eine bibliothek zu haben die diese ganzen bausteine, wie buttons, dialoge, fenster, usw. enthaelt. sonst muesste man alles aus einzelnen pixeln, linien und so zusammenbauen und das waere extrem muehsam. es gibt wahrscheinlich fuer fast jede programmiersprache eine solche bibliothek. fuer c kann man unter windows die winapi verwenden, was man aber nicht will, weil man ja plattformunabhaengig programmieren will.
dafuer eignet sich das gtk, welches auch eine c bibliothek ist, aber fuer alle gaengigen betriebssysteme verfuegbar und open source software ist.
als gui builder fuer gtk kann man glade verwenden. das coole daran ist, dass die gui beschreibung als xml datei gespeichert wird. dadurch wird die gui unabhaengig von der verwendeten programmiersprache und guis koennen zur laufzeit geladen werden, sind also nicht im programm "hardkodiert".
wer die gui lieber im c quelltext erstellt dem sei das gtk tutorial empfohlen.
 
Original von The Dude
@minzel: java und directx? wusste nicht, dass es dafuer jni bindings gibt. warum nimmt man java wenn man sich eh an windows kettet mit directx?

Und ich wußte nicht, das es nur für windows directx gibt ;) Java ist schon vielseitig, warum nicht auch in die richtung weiter proggn.
 
Original von minzel
Und ich wußte nicht, das es nur für windows directx gibt ;)

naja, es gibt versuche die bibliothek auf anderen plattformen zu reimplementieren (gibt irgendwo was fuer mac os x, damit wurde mal wipeout portiert. hab lange nix mehr davon gehoert). im rahmen des wine projekts gibts ja dann auch noch so versuche windowsspiele auf linux lauffaehig zu machen. aber grundsaetzlich ist directx im gegensatz zu anderen apis wie opengl, sdl, ogre, etc. microsoft-eigene technik. und die will microsoft eben nur auf windows anbieten, damit alle windows kaufen.

Java ist schon vielseitig, warum nicht auch in die richtung weiter proggn.

java hat meiner meinung nach auf jeden fall eine daseinsberechtigung. ich persoenlich schreibe auch gerne software in java. aber ich finde einer der vorteile von java ist, dass es nicht nur eine programmiersprache, sondern eine plattform ist. und wenn man in seinen java programmen aus dieser plattform "herausgreift", vor allem, wenn man betriebssystemspezifische dinge wie directx verwendet, dann geht ein grosser vorteil von java verloren.
 
okay lebowsky
aber es gibt trotz alldem immernoch den großen vorteil von C, dass es so maschinennah is.. klar das hat einbußen in richtung der herstellung von viel komplexeren programmen aber es is unheimlich schnell =)


btw: hab den programmierauftrag jetzt endgültig erfüllt.. mit der anfänger version.. er setzt die punkte jetzt per zufall... und der computer fängt an damits bissl fairer ihm gegenüber is.. er is ja immerhin dumm =)
 
Original von Chrisiaut
aber es gibt trotz alldem immernoch den großen vorteil von C, dass es so maschinennah is..

hab nix gegen c gesagt. :) und portable ist c code auch wenn man drauf achtet. siehe meinen hinweis auf gtk.

fuer portable spiele in c bietet sich die sdl an. damit hab ich auch erst vor kurzem angefangen zu coden. hab bisher nur ein unsauber programmiertes halbfertiges pong mit sehr haesslichen sprites. ;)
ist allerdings c++, weil ich das ja dann doch irgendwann mal lernen wollte...

http://elduderino.el.funpic.de/pong.rar (ich fuerchte das makefile in dieser version is b0rken, wird also nicht direkt unter linux uebersetzbar sein, hab leider grad keine zeit das zu fixen)

damit ich nicht dauernd voellig offtopic bin noch kurz was zu tic tac toe. das spiel ist logisch aequivalent zu dem spiel "15" (keine ahnung ob das auch nen richtigen namen hat). dabei waehlen zwei spieler abwechselnd zahlen zwischen 1 und 9 (jede zahl kann nur ein mal gewaehlt werden). wer als erstes drei zahlen hat deren summe 15 ergibt hat gewonnen. vielleicht kann man damit die ki fuer tic-tac-toe gestalten?
wie im wikipedia artikel steht, gibt es nur wenige moegliche spielverlaeufe. also koennte man einfach eine brute-force suche durch diesen baum machen.
 
die idee is garnet so dumm.

wenn du zu deinem 2Dimansionalen array, das bisher besteht ein zweites Array bastelst, kannst du jedem feld einen wert geben. und dann musst du nur noch zahlenkombinationen festlegen, welche einen Gewinn darstellen. so kann das programm ausrechnen, wo er seinen stein setzen muss, um zu gewinnen.

Das is zwar keine ki, aber du kommst der aufgabenstellung näher, so dass der computer auch ne chance hat zu gewinnen.
 
soll auch keine ki sein =) die angabe war ja für anfänger eine zufällige auswahl der Felder

die KI wird aber bald folgen.. hoffentlich
 
hier mal mein erster quick&dirty versuch fuer ne ki. ist kein vollstaendiges brute-force, die "ki" spielt also nicht perfekt. vielleicht fix ich das bei gelegenheit noch...

oeh, aus unerfindlichen gruenden darf man hier keine dateien mit endung ".c" hochladen. vielleicht sollte man das in einem _programmierforum_ aendern? ;)
 
Hallo,
also ich habe das Spiel mal in C mit KI geschrieben.

Dabei gibts eine wunderschöne, ASCII-Tabelle, wo man jetzt sein Zeichen gesetzt hat.

Dieses Script wurde unter WinXP mit Dev-C++ 4.9.9.1 getestet, habe aber versucht, es Maschienenunabhänig zu gestalten.

P.S. Man kann den Computer immer schlagen, denn dafür ist er noch vielzu dumm.
Denn die KI müste zwei Schritte vorrausdenken.
Desweiteren müsste diese bestimmte Strategien berücksichtigen, womit man den Computer in eine Zwickmühle zwingen kann.
Bsp: Wenn man 3 Kreuze in den Ecken hat, hat man meistens gewonnen.
 
meine neue version.. ebenfalls mit ki die sogar etwas dümmlich ist damit man gewinnchancen hat =)

[edit]
Fehler behoben... hf =)
[/edit]
 
So hab mich vor nen paar Tagen auch mal ran gemacht, jetzt ist zwar schon ne Neue Aufgabe da aber was solls.

Anhängende Dateien:
TicTacToe.rar // Die Kompliliere und fertige ausführbare EXE Datei
MainForm.rar // Kompletter Source Code

Das Programm ist in C# geschrieben und benötigt folglich das .NET Famework(1.1)

- Die Konfiguration wird beim Start ausgelesen und beim Beenden gespeichert
- Es gibt 3 Schwierigkeitsmöglichkeiten
- Leicht setzt immer zufällig und denkt nicht nach
- Mittel sieht immer den aktuell Zug und setzt dem gegner eins Rein oder Gewinnt mit dem einem Zug
- Schwer kann zusätzlich noch einem Zug vorrausplanen und dem Spieler auch chon einem Zug vorher einen Stein in die Quere setzen
- Spielstein wählbar
- Spiel Modi Spieler gegen KI und Spieler gegen Spieler, Netzwerk Spiel kommt noch
- Spielbeginner wählbar

Die KI ist nicht perfect ob man zwar auf Schwer gewinnen kann weis ich gar nicht, aber man hätte das ganze noch mit Prioritäten des Zuges machen können aber das wurde mir zu viel so reicht das ^^
 
wow das scheint ja echt spaß zu machen :-)))
lerne es erst nächstes jahr in der schule
freu mi schon drauf hie mit zu mischen ;-))

wie habts ihr das gelernt... schule (reicht das überhaupt oder muss i da no was anders machen)


JAy :] :] :] :] :] :] :D :D :D 8) 8) 8) 8) 8) :D :D :D :D :D :D
 
@ Sjune:

Wow das ist ja quasi perfekt! Ok, die KI ist durchaus schlagbar, aber von der aufmachung und den Funktionen her, Hut ab. Ist echt Klasse! :)

@ JayTheRevo:

Ich bekommen nächstes Jahr auch Informatik (11. KLasse) darauf freue ich mich schon seit der 3. Klasse^^ Allerdings fürchte ich, dass das bei weitem nich ausreichen wird, um solche komplexen sachen zu coden, und dann ggf nohc mit KI...Also ich rate dir: Kauf die n gutes Buch und brings dir selber bei ;) Für C++ is imho "C++ in 21 Tagen" ganz gut...

mfg LaNdRiX
 
tic tac toe und komplex?

also wenn du verstehst wie man programme schreibt (sprachen bzw syntax unabhängig) kannst du das in 2 stunden schreiben.. wenn du anfänger bist...

Wir haben damals gerade mal 2 wochen C gelernt und in der zeit praktisch nur theorie und dann gab man uns als erstes Praxisbeispiel TicTacToe und ich hatte es am selben tag noch fertig.

Ki dauert a bissl länger aber wenn man weiß wie man eine perfekte runde TicTacToe spielt is das auch ned so schwer.. Wenn die KI perfekt spielt dann kann man allerhöchstens ein unentschieden machen. mehr zu dem thema hier: http://de.wikipedia.org/wiki/Tic_Tac_Toe


und@ Jay:

prinzipiell musst du ned viel können dafür... Nur wie man eine Ausgabe macht und welche schleifen es gibt und was if bedeutet *gg*

also theoretisch kannst dir all das selbst beibringen mit hilfe aus dem Internet



lg Chris
 
Original von JAyThaRevo
lerne es erst nächstes jahr in der schule
freu mi schon drauf hie mit zu mischen ;-))
Das schweift zwar jetzt gewaltig ins Offtopic, aber:
Versprech dir da mal nicht zu viel. Je nach Lehrer bekommst du da den Stoff auch nicht eingeprügelt sondern musst dich selbst drum kümmern. Du musst auch nicht mit allem, das du in deinem Leben lernen willst auf den Lehrplan warten ;)

Kauf dir ein Buch und versuchs einfach. Das bringt dir jetzt Vorteile und auch später, wenn ihr es in der Schule "lernt", denn wirklich gut erklären können das die wenigsten Lehrer (entweder Mangel an Ahnung oder sehr "verkrustete"/unfelxible Einstellung)
Auf jeden Fall ist es für den Lehrer nicht leicht eine solche Sache wie Programmieren zu vermitteln, da es auch oft dazu kommen kann, dass ein Schüler eine geschicktere Lösung als er findet und das greifen die meisten nicht positiv auf. (Vor allem, wenn sie zu der Sorte mit weniger Ahnung/"Begabung" gehören)

Fazit: Brings dir autonom bei. Es wird dir Spaß machen.

PS:
prinzipiell musst du ned viel können dafür... Nur wie man eine Ausgabe macht und welche schleifen es gibt und was if bedeutet *gg*
Naja, ein paar Stunden Erfahrung, wie man die einzelnen Elemente einsetzen kann braucht man schon, aber hochgradig komplex würd ich das auch noch nicht nennen.
 
Hier das ganze noch mal in JavaScript. Mir ist es noch nicht gelungen, den Computer zu besiegen, aber vielleicht findet ihr ja einen Fehler ;)
Der Schwierigkeitsgrad ist einstellbar. Je niedriger die Prozentzahl ist, desto unwahrscheinlicher ist es, dass einer der Logik-Funktionen benutzt wird. Das Kreuz wird dann per Zufall gesetzt.
 
Zurück
Oben