Entwickler-Ecke
Open Source Projekte - RekutoGenerator
Fiete - Fr 18.01.19 12:24
Titel: RekutoGenerator
Moin,
Rekuto ist ein japanisches Logikrätsel: Zerlege das Muster in Rechtecke
die sich NICHT überlappen. Die
Summe aus Länge und Breite muß genau
so groß sein wie die Zahl im zu findenden Rechteck vorgibt.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| neue Rekutogröße : ein neues leeres Muster wird zentriert ausgegeben Rekuto erzeugen : ein Rekuto wird generiert Rekuto konstruieren : ein Rekuto kann selbst definiert werden, wenn das Muster gefüllt ist kann gespielt und gespeichert werden Rekuto lösen : der Benutzer versucht die Rechtecke zu finden, die Rechtecke werden farblich markiert. Der Lösungsversuch kann wiederholt werden Rekuto speichern : ein Rekuto wird gespeichert wenn das Muster vollständig ist. Rekuto laden : ein Rekuto wird geladen, es kann sofort mit einem Lösungsversuch begonnen werden. |
Die Dateinamen MÜSSEN folgenden Aufbau aufweisen <ColCount>x<RowCount>_Nr<laufende Nummer>.rek
Beim konstruieren MUSS der User aufpassen dass sich die Rechtecke NICHT überschneiden, Sorgfalt ist also angebracht!
Falls man sich beim Lösen geirrt hat kann man es noch einmal versuchen.
Viel Spaß beim Testen.
Gruß Fiete
Rev. 1: die Zugrücknahme ist implementiert, beim Lösen
und Konstruieren ist die Rücknahme jetzt möglich
Rev. 2: das Programm erkennt jetzt jede Lösungsmöglichkeit
jasocul - Fr 18.01.19 14:47
Hätte es mir gerne mal angesehen. Leider ist der Anhang nicht verfügbar.
Delete - Fr 18.01.19 15:11
- Nachträglich durch die Entwickler-Ecke gelöscht -
Fiete - Fr 18.01.19 15:36
Moin,
Frühlingsrolle hat recht mit "Mhm, hier ist irgendetwas schief gelaufen."
Habe die zip-Datei noch einmal hochgeladen.
Gruß Fiete
jasocul - Mo 21.01.19 09:48
Jetzt konnte ich das mal testen.
Das Spiel ist interessant. Ich mag solche Spiele.
Anregungen:
Fiete hat folgendes geschrieben : |
Die Dateinamen MÜSSEN folgenden Aufbau aufweisen <ColCount>x<RowCount>_Nr<laufende Nummer>.rek |
Die Spielfeldgröße kannst du doch sicher mitspeichern. Das würde manuelle Fehler beim Dateinamen verhindern und ist mMn anwenderfreundlicher.
Fiete hat folgendes geschrieben : |
Beim konstruieren MUSS der User aufpassen dass sich die Rechtecke NICHT überschneiden, Sorgfalt ist also angebracht! |
Da würde ich mir wünschen, dass das vom Programm automatisch verhindert wird. Man kann sicher eine gewisse Sorgfalt vom Anwender erwarten, aber man kann mit der Maus auch mal abrutschen.
Da komme ich gleich auf meinen nächsten Vorschlag:
Mirt fehlt da eine Rückgängig-Funktion. Die muss nicht mehrere Schritte beinhalten, aber ich habe beim Testen gemerkt, dass man schnell mal einen kleinen Fehler gemacht hat, den man gerne beheben möchte, ohne gleich das ganze Rekuto neu starten zu müssen.
Evtl. kann man das auch mit der rechten Maustaste auf ein Zahlenfeld lösen. Also die zugehörigen Felder wieder freigeben.
Fiete - Mo 21.01.19 18:30
Moin jasocul,
die Dateinamen werden automatisch vorgegeben, die Nummer kann ja verändert werden, die Größen hätte ich auch mit in die Datei aufnehmen können - habs diesmal
anders gelöst. :wink:
Beim Konstruieren testet das Programm etwaige Überschneidungen, hab den Hinweis nur zur Sicherheit mit angegeben. :!:
Eine Rückgängig-Funktion ist in Arbeit, müßte ich in dieser Woche noch schaffen, der Handball lenkt mich zur Zeit ab. :dance2:
Gruß Fiete
jasocul - Di 22.01.19 13:42
Moin Fiete,
bisher hatte ich nur wenig Zeit, mir deinen Source genau anzusehen.
Deine Source-Formatierung liegt mir auch nicht so. :wink:
Ich hatte jetzt schon zwei mal eine Lösung, die das Programm als unzulässig betrachtet hat. Es scheint so, als gäbe es ein Problem, wenn es mehrere Lösungen gibt, die nach den Regeln erlaubt sind.
Fiete - Di 22.01.19 15:31
Moin jasocul,
die Zugrücknahme ist fertiggestellt.
Es ist nicht ausgeschlossen, dass mehrdeutige Aufgaben entstehen.
Durch die Rücknahmemöglichkeit der Züge kann der Spieler die Computerlösung erhalten.
Gruß Fiete
jasocul - Mi 23.01.19 08:08
Fiete hat folgendes geschrieben : |
die Zugrücknahme ist fertiggestellt. |
Danke :zustimm:
Fiete hat folgendes geschrieben : |
Es ist nicht ausgeschlossen, dass mehrdeutige Aufgaben entstehen.
Durch die Rücknahmemöglichkeit der Züge kann der Spieler die Computerlösung erhalten. |
Hmm. Kann man natürlich so machen. Ich fände es besser, wenn ein Programm auch andere Lösungen als Richtig akzeptiert, wenn sie den Regeln entsprechen. Die vordefinierte Computer-Lösung als einzig korrekte zu betrachten, halte ich für ungünstig.
Ich hoffe ich nerve dich nicht zu sehr mit meiner "Kritik". :wink:
Fiete - Mi 23.01.19 18:08
Moin jasocul,
Deine "Kritik" ist schon berechtigt. Ich habe beim Testen selbst die Erfahrung gemacht dass eine Lösung nicht als solche vom Programm erkannt wurde.
Jetzt werde ich mich aufraffen und eine Testroutine entwickeln, eine Idee hab ich zwar schon, die Umsetzung kann ein paar Tage dauern. :gruebel:
Gruß Fiete
jasocul - Do 24.01.19 08:04
Mach dir keinen Stress.
Hätte ich Zeit für private Projekte, hätte ich schon mitprogrammiert.
Fiete - Sa 26.01.19 15:48
Moin jasocul,
die neue Version ist fertig zum Testen, habe sie hochgeladen.
Gruß Fiete
Horst_H - Sa 26.01.19 17:58
Hallo,
den Schaltknopf "Rekuto selbst lösen" könnte man vielleicht größer machen und/oder fablich absetzen, oder oben/unten setzen.Wahrscheinlich bin ich kantenfixiert ;-)
Ich gebe zu, über Bedienbarkeit habe ich mir nie Gedanken gemacht.
Gruß Horst
P.S.:
Lazarus kennt scheinbar TColorBox nicht.
Zitat: |
Rekuto.pas(24,13) Error: Identifier not found "TColorBox"
Rekuto.pas(24,22) Error: Error in type definition
Rekuto.pas(24,5) Error: Symbol cannot be published, can be only a class |
Fiete - Sa 26.01.19 18:14
Moin Horst_H,
bei diesem Programm habe ich die Schaltknöpfe gleich groß gestaltet :wink: , die Farbe für die Rechtecke sollte der Spieler selbst bestimmen können. :D
Wenn in Lazarus keine TColorBox existiert könnte die Komponente vielleicht durch ein konstantes äquivalentes Array[0..14] of TColor ersetzt werden.
Gruß Fiete
ub60 - So 27.01.19 13:36
TColorBox funktioniert in Lazarus wunderbar. Lediglich die ShellExecute-Zeile müsste man (für Windows) ändern:
Delphi-Quelltext
1:
| ShellExecute(0, nil, PChar('cmd'),PChar('/c start https://www.janko.at/Raetsel/Rekuto/Beispiel.htm'), nil, 0); |
ub60
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!