[Linux] 4Gewinnt für Konsole

Schnelle objektorientierte, kompilierende Programmiersprache.
nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

[Linux] 4Gewinnt für Konsole

Beitrag von nouseforname » Di Feb 22, 2011 8:08 pm

Hi all,

ich habe ein 4 Gewinnt Spiel für die Konsole geschrieben, und fände es nett wenn sich jemand findet der bereit ist es ein wenig zu testen.
Mein Hauptaugenmerk wäre, ob sich die KI irgendwo vertut oder sich das Spiel aufhängt. Speziell bei Diagonalen die im Randbreich enden. Eben so sämtliche Funktionen.
Ich habe natürlich schon alles getestet, aber das heisst ja nicht dass nicht doch noch etwas ist.

Daten:
- Linux Konsole
- Ein Spieler gegen KI
- 2 Spieler
- Demo (PC Spielt wirklich gegen sich selbst)
- Kurze Hilfeseite
- Steuern mit Nummern Tasten 1-7, Cursor Tasten & Enter, sowie Mausunterstützung

Da es meine Abschlussarbeit ist, kann und will ich den Sourcecode noch nicht offenlegen. Ich denke aber nachdem ich meine Ergebnisse habe, ist dies kein Problem mehr.
Wobei ich dies aber noch abklären werde.

Ich habe jeweils eine 32bit und 64bit Version erstellt, diese laufen auf Ubuntu10.10 und openSuse11.3 sowie auf Mandriva.

Wer also bereit ist ein wenig Bugtracker zu Spielen, möchte sich bei mir per PM melden um den DL Link zu erhalten. :)

PS: Meinungen dazu nehme ich auch gerne entgegen, aber bitte keine Verbesserungsvorschläge für die KI. Die kann schon wesentlich mehr als gefordert, und um eine "echte" Intelligenz zu erhalten, benötigt es noch einiges mehr an Quellcode oder zumindest anderen. Auch bitte noch keine Codes oder ähnliches Posten. Erstmal nur testen. :)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [Linux] 4Gewinnt für Konsole

Beitrag von Xin » Mi Feb 23, 2011 10:20 am

Spielen mit akademischen Auftrag - klingt doch gut. ^^

Schau ich mir gerne mal an.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [Linux] 4Gewinnt für Konsole

Beitrag von Dirty Oerti » Mi Feb 23, 2011 10:37 am

Klingt doch nach was :)

Ich hab jetzt Semesterferien (und erstmal noch keine Arbeit), also hau rein, schick's mir, und ich teste, was ich kann :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] 4Gewinnt für Konsole

Beitrag von nouseforname » Mi Feb 23, 2011 7:01 pm

An alle die testen, rc_02 ist raus.

Neues Feature. Autocenter bei änderung Konsolengrösse.
Die Änderung war etwas aufwändiger wegen der Mauserkennung. wäre schön wenn ihr darauf achtet ob die Mauserkennung (Position) korrekt ist.

DL Link wie gehabt, nur eben die 2 am Ende.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [Linux] 4Gewinnt für Konsole

Beitrag von Xin » Fr Feb 25, 2011 12:20 am

nouseforname hat geschrieben:Neues Feature. Autocenter bei änderung Konsolengrösse.
Ich habe soeben ein paar Runden gespielt.

Teilweise war ich überrascht, dass er drei nebeneinander liegenden Steine nicht dichtmacht, so dass man anschließend gewinnen kann. Vielleicht hat der Algorithmus etwas anderes gesehen. Aber was?
Auf einmal steht gewonnen da. Wenn der Computerspieler gewinnt, verschwindet der Bildschirm, hier würde ich gerne die Taste drücken.
nouseforname hat geschrieben:Die Änderung war etwas aufwändiger wegen der Mauserkennung. wäre schön wenn ihr darauf achtet ob die Mauserkennung (Position) korrekt ist.
Leider nicht, ich habe die das Spiel gestartet und dann den Font vergrößert - also anders ausgedrückt die Konsole verkleinert.
Zunächst war ich etwas überrascht, denn die Mauseingabe funktioniert soweit gut, aber dann fiel mir auf, dass sie einen Hang nach rechts. Ich klicke eigentlich in ein Feld im rechten Bereich, aber das Feld rechts daneben wird selektiert.

Aber es gefällt mir. Wirklich gut :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] 4Gewinnt für Konsole

Beitrag von nouseforname » Fr Feb 25, 2011 7:39 am

Xin hat geschrieben: Teilweise war ich überrascht, dass er drei nebeneinander liegenden Steine nicht dichtmacht, so dass man anschließend gewinnen kann. Vielleicht hat der Algorithmus etwas anderes gesehen. Aber was?
Klingt komisch, hab ich noch nicht so gesehen. Ein Screen wäre gut gewesen. :) Ich hätte hier maximal bei den diagonalen Probleme erwartet. Waagerecht und Senkrecht sind eigentlich zuverlässig. Was die KI allerdings nicht kann, ist zu erkennen dass nach 2 in Folge eine Lücke ist, und danach der dritte Stein.
In der getesteten Version ist die Suchreihenfolge:
- 3 eigene, 3 v. Gegner, 2 eigene, 2 v. Gegner

Dies habe ich mittlerweile geändert, so dass erst 2 v. Gegner gesucht werden. Dann 2 eigene.
Auf einmal steht gewonnen da. Wenn der Computerspieler gewinnt, verschwindet der Bildschirm, hier würde ich gerne die Taste drücken.
Kann sein dass noch eine Eingabe im Puffer war!? Denn ich habe nach Gewinn/Unentschieden nur einen einfachen getch(). Könnte hier den puffer vorher leeren um das auszuschliessen.
Leider nicht, ich habe die das Spiel gestartet und dann den Font vergrößert - also anders ausgedrückt die Konsole verkleinert.
Zunächst war ich etwas überrascht, denn die Mauseingabe funktioniert soweit gut, aber dann fiel mir auf, dass sie einen Hang nach rechts. Ich klicke eigentlich in ein Feld im rechten Bereich, aber das Feld rechts daneben wird selektiert.
Den Font vergössert?! Wie gemein, das habe ich garnicht getestet.^^ Aber im Spielfeld kann es durchaus sein dass, wenn man im Randbereich klickt, das falsche Feld , genau daneben benutzt wird. Dies liesse sich nur verhindern wenn ich die Position mit dem "|" aus der Erkennung raus nehme. Aber dann wird es genauso ungenau, weil scheinbar die "Zeichnung" nicht genau mit den wirklichen Cursorgrenzen übereinstimmt. Oder man einfach nicht so genau klicken kann. Hab das eben mal mit vergösserung probiert und seh es auch. Mal sehen was ich da tun kann.
Aber es gefällt mir. Wirklich gut :-)
Danke, hoffentlich sieht das der Prüfer auch so. :)

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: [Linux] 4Gewinnt für Konsole

Beitrag von Dirty Oerti » Fr Feb 25, 2011 11:14 am

Xin hat geschrieben:Teilweise war ich überrascht, dass er drei nebeneinander liegenden Steine nicht dichtmacht, so dass man anschließend gewinnen kann. Vielleicht hat der Algorithmus etwas anderes gesehen. Aber was?
nouseforname hat geschrieben:Klingt komisch, hab ich noch nicht so gesehen. Ein Screen wäre gut gewesen. Ich hätte hier maximal bei den diagonalen Probleme erwartet. Waagerecht und Senkrecht sind eigentlich zuverlässig. Was die KI allerdings nicht kann, ist zu erkennen dass nach 2 in Folge eine Lücke ist, und danach der dritte Stein.
In der getesteten Version ist die Suchreihenfolge:
- 3 eigene, 3 v. Gegner, 2 eigene, 2 v. Gegner
Bei mir handelte es sich 2 mal um Diagonalen. Ich hatte 3 Steine in einer Diagonalen schon fertig liegen, und das eine mal hat die KI sich dann selbst ihr Grab geschaufelt, denn den 4. Stein hätte ich nicht platzieren können, hätte die KI ihren Stein nicht vorher darunter gelegt.
Das andere mal hat die KI lieber eine 2er Folge zu 3 Steinen erweitert.
nouseforname hat geschrieben:Könnte hier den puffer vorher leeren um das auszuschliessen.
Das solltest du tun! Ist bei mir zwar noch nicht aufgetreten, aber unschön ist das trotzdem.

Den Font vergössert?! Wie gemein, das habe ich garnicht getestet.^^ Aber im Spielfeld kann es durchaus sein dass, wenn man im Randbereich klickt, das falsche Feld , genau daneben benutzt wird. Dies liesse sich nur verhindern wenn ich die Position mit dem "|" aus der Erkennung raus nehme. Aber dann wird es genauso ungenau, weil scheinbar die "Zeichnung" nicht genau mit den wirklichen Cursorgrenzen übereinstimmt. Oder man einfach nicht so genau klicken kann. Hab das eben mal mit vergösserung probiert und seh es auch. Mal sehen was ich da tun kann.
Hm, die Mauserkennung hat bei mir im gnome-terminal eigentlich einwandfrei geklappt.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: [Linux] 4Gewinnt für Konsole

Beitrag von Xin » Fr Feb 25, 2011 11:29 am

Dirty Oerti hat geschrieben:Hm, die Mauserkennung hat bei mir im gnome-terminal eigentlich einwandfrei geklappt.
Bei mir war es die 'konsole' (KDE)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] 4Gewinnt für Konsole

Beitrag von nouseforname » Fr Feb 25, 2011 12:41 pm

Dirty Oerti hat geschrieben: Bei mir handelte es sich 2 mal um Diagonalen. Ich hatte 3 Steine in einer Diagonalen schon fertig liegen, und das eine mal hat die KI sich dann selbst ihr Grab geschaufelt, denn den 4. Stein hätte ich nicht platzieren können, hätte die KI ihren Stein nicht vorher darunter gelegt.
Das andere mal hat die KI lieber eine 2er Folge zu 3 Steinen erweitert.
Das ist tatsächlich so, die KI schaut nicht in die Zukunft, sondern überprüft nur die aktuelle Situation, deswegen schaufel sie sich selbst so manches Grab.
Aber dennoch kann ich bisher nicht nachvollziehen dass die KI keine 3 in Reihe findet.
Hm, die Mauserkennung hat bei mir im gnome-terminal eigentlich einwandfrei geklappt.
Ich kann das nachvollziehen, wird nur dann "unschön" wenn man den Font vergrössert, da dann der kleine Spalt an der rechten Grenze grösser wird, und man somit leichter dorthin klicken kann. Es ist tatsächlich so dass die "Grenze" also "|" schon zum nächsten Feld gehört. Ist nicht ganz so einfach das wirklich schön zu trennen.

Solltet ihr noch ein wenig "Spielen" wären Screens nett, im Falle dass die KI mal wieder keine 3 Steine in Reihe findet. :) Denn das ist etwas das ich natürlich selbst getestet hatte. Habe da aber keine Fehler mehr gesehen.


Edit by Xin: [quote="Dirty Oerti" =>
Dirty Oerti hat geschrieben:

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: [Linux] 4Gewinnt für Konsole

Beitrag von nouseforname » Sa Feb 26, 2011 10:05 am

Ich habe noch ein wenig gebastelt.

- Das mit der Maus sollte nun besser sein, habe die Trennlinie (Position) aus der erkennung raus genommen.
- Dass die KI die 3 in Reihe nicht findet kann ich einfach nicht nachvollziehen. Es klappt immer bei mir, selbst mit 2. Wobei ich hier wie schon erwähnt die Suchreihenfolge umgedreht habe.
- Was das löschen des stdin betrifft, so habe ich noch keine Lösung, ich weiss zwar wie ich das "Problem" simuliert bekomme, aber ich kann es einfach nicht optimal lösen. Wie wärs einfach mit weniger lange auf den Tasten bleiben^^
- Ausserdem habe ich nun auch im KI-Mode das Highlighting für die Spalten eingebaut.

Ich bastel noch ein wenig, vielleicht finde ich doch noch einen Weg "getch()" nur dann zu benutzen wenn vorher nichts im Puffer war.
Sobald ich das habe gibts ne neue Version, oder ich lass es einfach so wie es ist, hat bisher nur einer darüber gemeckert (Auf Xin schiel) :)


EDIT: Eben fiel mir ein anderer Weg ein, ich benutze einfach nicht getch() sondern scanw(), dann muss man "enter" drücken. Wer dann noch mehrere "\n" im Puffer hat, und am besten noch einiges andere ist selbst schuld.^^

Antworten