Entwickler-Ecke

Open Source Projekte - Käsekästchen


Fiete - So 23.12.07 14:46
Titel: Käsekästchen
Das alte Schülerspiel jetzt auf dem PC.

Abwechselnd werden Wände gesetzt.
Wer von einem Kästchen die vierte Wand zeichnet, dem
wird das Kästchen als Besitz markiert und er muß noch eine Wand setzen.

Wer die meisten Kästchen sein Eigen nennt, ist der Sieger.
Gespielt werden kann gegen den Computer oder einen zweiten Spieler.

Nach dem Programmstart muß erst ein Muster geladen oder eingegeben oder zufällig erzeugt werden.

Über Datei oder Spielfeld, die Spielstärke 3 reicht meistens um zu verlieren.

Viel Spaß über Weihnachten

Fiete

Edit 1:




Edit 2:


Xion - So 23.12.07 14:50

soweit ich mich erinnern kann, gings bei uns immer darum, so wenige Punkte wie möglich zu machen :D


wunsiedler - So 23.12.07 16:44

Finde ich ganz nett. Ich würde aber gern sehen, wo der Computer seinen Strich macht, das geht immer viel zu schnell.


Tommy1988 - Sa 26.07.08 13:55

Das spielt stimmt nicht ganz.

Ein Kreuz wird eigentlich doch erst gemacht, wenn das kästen mit dem letzten, dem 4 Strich zugemacht wird.

bei deinem Programm ist das schon beim 3. Strich der Fall!


g1o2k4 - Mi 30.07.08 14:52

user profile iconwunsiedler hat folgendes geschrieben:
Finde ich ganz nett. Ich würde aber gern sehen, wo der Computer seinen Strich macht, das geht immer viel zu schnell.


dafür ist doch der log da...

ich find das spiel super, hat schon in der schule fun gemacht ^^


n-regen - Mi 30.07.08 16:46

Wenn man beim "Albert Einstein"-Level einen unglücklich gewählten Zug macht, hängt sich das Programm (unter enormer CPU-Auslastung) auf - Genies brauchen eben Zeit zum Denken...
Auf jeden Fall ein lustiges Programm. Du solltest aber eine Verzögerung einbauen, also dass, wenn man eine Kettenreaktion auslöst, die Felder nacheinander agekreuzt werden (z.B. alle 500 Millisekunden ein Feld).

EDIT1: Er überlegt schon seit 50 Minuten, wo er einen Strich machen soll!
EDIT2: 1:25 Stunden; Tendenz steigend...


Fiete - Do 31.07.08 19:05

Moin n-regen,
eine Verzögerung gibt es jetzt (500 Millisekunden).

Beim "Albert Einstein"-Level spielt sicherlich auch die Feldgröße eine Rolle.
Die hohen Level sind z.Zt. nicht ganz ernst gemeint :wink: , wird interessant bei schnelleren Rechnern.

@ Tommy1988: Diesen "Fehler" konnte ich nicht reproduzieren, stell mal einen Screenshot ins Forum.

Gruß
Fiete


jakobwenzel - Do 31.07.08 22:45

Irgendwie doof, dass man erst die Datei laden muss, dann noch das Spiel starten muss...
Da hat man schon keine Lust mehr, bis man die richtigen Menüpunkte gefunden hat.
Warum machst du es nicht so, dass man direkt anfangen kann?


der organist - Fr 01.08.08 09:00

das mit den drei Strichen und das Kreuz wird gesetzt hab ich auch gehabt (Im Albert-Schwierigkeitsgrad allerdings nur) in den ersten drei hab ich das nich gehabt. Screenshot ist dabei.

Ansonsten ist das Programm richtig gut, es dauert halt nur, bis man ein neues Spiel starten kann. Wäre da ein "Schnellspiel" möglich, so dass man nur einen solchen Modus anklickt und dann wird das Feld gemacht, etc pp?


n-regen - Fr 01.08.08 12:03

Nach ziemlich genau 4 Stunden habe ich das Programm abgeschossen - das wäre sicher noch weiter gelaufen.
Es wäre vielleicht ganz gut, wenn dein Programm nach einer einstellbaren Zeit (z.B. 30 Sekunden als Standard) fragt, ob es noch weiter rechnen soll. (Ich hab das bei einem meiner Programme geregelt, indem ich beim Start der Berechnung einen Timer aktiviert habe, der als OnTimer die Berechnung abbricht, und am Ende der Berechnung den Timer abgeschaltet habe.)


Yogu - Fr 01.08.08 12:29

Vielleicht sollte der Strich, den der Computer gezeichnet hat, noch zwei- oder dreimal blinken, damit man ihn besser sieht. Ich will auch nicht immer ins Log schauen, über den Rand das entsprechende Kästchen aussuchen und dann erst sehen, wo eigentlich ein neuer Strich gezogen wird. Sonst siehts ganz nett aus :D


Fiete - Mo 04.08.08 12:43

Den Zuggenerator und die Suche nach dem besten Zug habe ich geändert.
Wer dem Programm bei der Arbeit zu schauen möchte , der sollte die Zugbewertung aktivieren.
Bei einem 7x7-Feld sind bei Suchtiefe 7 148.669.274 Stellungen berechnet worden, dies dauert.
Beim Programmstart wird jetzt ein Zufallsfeld generiert, das Spiel starten müßt ihr selbst.

Gruß
Fiete


BenBE - Mo 04.08.08 22:10

Wenn Du eh schon ne Zugvorschlagsfunktion drin hast, kannste doch auch gleich noch ne Funktion für Computer gegen Computer einbauen ;-)


Fiete - Di 05.08.08 09:10

Moin BenBE,

die Zugvorschlagsfunktion ist für Faule oder Dummies gedacht, viel hilft sie nicht

Delphi-Quelltext
1:
SuchBestZug(BestZug,MinMaxWert,Min(2,Tiefe),VirFeld,Computer,MinInt,MaxInt);                    

Die Suchtiefe ist gering :wink:, aber manchmal nützlich

Gruß
Fiete


Fiete - Di 12.08.08 14:17

Die endgültige Version ist fertig!

Gruß
Fiete


XUDO - Mo 29.12.08 16:14

user profile iconFiete hat folgendes geschrieben Zum zitierten Posting springen:
Die endgültige Version ist fertig!

Mojn Fiete,

heruntergeladen, angesehen, gut gefunden ... aber:
Delphi protestiert bei mir im Zusammenhang mit ".explicit", genauer, wenn ich mir den Quelltext ansehen möchte, lädt Delphi nur unter Protest mit Hinweis auf bei mir offensichtlich nicht vorhandenes.

Ich weiß mittlerweile aus einer *.DFM, daß es für die Lagebestimmung von Objekten zusätzlich zur Eigenschaft z.B. Top mit label1.explicittop angewendet wird, und daß das "nackte" Top ebenfalls vorhanden ist - aber wozu beide?

Unter der Sudoku-Diskussion in der Rubrik Freeware hatte ich es bereits einmal mit einem Programm von Jaedicke angesprochen/schrieben; er konnte mir sagen/schreiben: Ignorieren; stimmt ja auch - es klappt, und er meinte, daß es mit den unterschiedlichen Formarten zusammenhängt.
Weißt Du etwas Genaueres?

Ich verwende Delphi Personal 7.0 auf einem Windows-98-SE (zum Arbeiten);
Internet wird über ein ziemlich leeres Laptop bedient. Austausch zwischen
beiden per USB-Stick; soweit die Umgebung.

Dank im Voraus und Gruß XUDO


JayEff - Mo 29.12.08 20:04

user profile iconn-regen hat folgendes geschrieben Zum zitierten Posting springen:
Wenn man beim "Albert Einstein"-Level einen unglücklich gewählten Zug macht, hängt sich das Programm (unter enormer CPU-Auslastung) auf

Das geschieht übrigens immernoch. Ausserdem habe ich trotz einer Rechenzeit von mehreren Minuten (bei 2,2 GHz auf leider nur 1 Kern - multithreading einbauen! :lol: ) ohne größere Schwierigkeiten gegen das Genie gewonnen, 21 zu 5 :mrgreen:

Ich denke der Algo der KI ist vielleicht nicht unbedingt optimal, ich glaube auch, dass er hätte gewinnen können, wenn er woanders hingesetzt hätte. Zählt bei dir als Suchtiefe auch diejenigen Züge mit, die man in Folge machen kann weil man einen Punkt gemacht hat? Die sollten ja eigentlich als nur 1 Zug gelten. Ich frage, weil das Spiel weniger als 9 normale Züge gedauert hat, nachdem er solang gerechnet hat, also die Suchtiefe hätte erschöpft sein müssen und er hätte den optimalen Zug machen müssen.

Eine praktische Funktion wäre (z.T. für dich zum Analysieren), Spielfeld und Zugfolge zu speichern, als "Partie-Datei" :)
Ich hänge mal einen Screenshot an, andem er dann minuten gerechnet hat. Er zog dann C5 Rechts.


Webo - Mo 29.12.08 22:07

Klasse Spiel und gute Umsetzug. Macht unheimlich Laune, allerdings sollte man es nur ab und an spielen, sonst wird man wieder süchtig :twisted: ...

Auch gut fand ich den letzen Spruch: "Der Käse ist unter der Glocke" :D

Grüße

Webo


Fiete - Di 30.12.08 11:08

Moin Webo,
machst mich ja vor lauter Lob ganz verlegen :oops:
Wer viel Käse mag sollte Morgen Raclett essen :?
Gruß
Fiete


jaenicke - Di 30.12.08 13:57

Ja, das ist schön das auf dem PC zu sehen. Ich habe das schon sehr lange nicht mehr gespielt gehabt. ;-)

Die Umsetzung gefällt mir auch beim ersten Ausprobieren. :zustimm:

user profile iconXUDO hat folgendes geschrieben Zum zitierten Posting springen:
Ich weiß mittlerweile aus einer *.DFM, daß es für die Lagebestimmung von Objekten zusätzlich zur Eigenschaft z.B. Top mit label1.explicittop angewendet wird, und daß das "nackte" Top ebenfalls vorhanden ist - aber wozu beide?

Unter der Sudoku-Diskussion in der Rubrik Freeware hatte ich es bereits einmal mit einem Programm von Jaedicke angesprochen/schrieben; er konnte mir sagen/schreiben: Ignorieren; stimmt ja auch - es klappt, und er meinte, daß es mit den unterschiedlichen Formarten zusammenhängt.
Weißt Du etwas Genaueres?
Ich habe dort ja zuletzt (aber immer noch 3 Stunden vor diesem Beitrag hier von dir :P) genauer geschrieben, warum Delphi bei neueren Versionen beide Werte speichert:
http://www.delphi-forum.de/viewtopic.php?p=541371#541371
In älteren Versionen hat das Setzen von bspw. Align auf alClient und zurück auf alNone dafür gesorgt, dass das Control vergrößert blieb. In den neuen Versionen springt es dann zurück auf die vorherige Größe, die in den Explicit-Eigenschaften steht und nicht wie die Werte für Left etc. durch Align verändert werden.


Hybrid666 - Mi 04.02.09 09:49

Hoi,

also muss sagen, ich find dein game einfach klasse ;)

Das einzige was mich ein wenig stört, ist das man automatisch mögliche käsekästchen fertigstellt ;) find ich ein bisschen käse :D die taktik in der schule war immer, teilweiße auf kästchen zu verzichten, damit der gegner einem "ein größeres feld" freischalten musste :D

Da könntest du ja evtl. eine einstellung oder so setzen (sollte ich diese übersehen haben, dann schande über mein haupt).

Trotzdem sehr klasse das spiel!

Achja: was auch noch ein "nettes" feature wäre: die wand, über die man grade fährt könntest du noch highlighten.

MfG Hybrid666


jaenicke - Mi 04.02.09 14:42

user profile iconHybrid666 hat folgendes geschrieben Zum zitierten Posting springen:
Das einzige was mich ein wenig stört, ist das man automatisch mögliche käsekästchen fertigstellt ;) find ich ein bisschen käse :D die taktik in der schule war immer, teilweiße auf kästchen zu verzichten, damit der gegner einem "ein größeres feld" freischalten musste :D
Die Regeln sagen nur, dass man weiter ziehen muss, wenn man ein Kästchen gefüllt hat.

Trotzdem könnte man nach den Regeln wohl nach dem ersten Strich den nächsten auch wo anders machen. Insofern stimmt das.


Fiete - Do 19.02.09 15:36

Moin Hybrid666,

die Automatik kann im Menue Service unter vervollständigen de- oder aktiviert werden.
Die neue Version ist hochgeladen. Die Umsetzung hat etwas länger gedauert :wink:
Die aktive Wand besonders markieren werde ich Dir überlassen, Source liegt ja vor.
Ich werde demnächst die KI ändern.
Gruß
Fiete