Entwickler-Ecke
Open Source Projekte - Das Zahlenpuzzle Futoshiki
Fiete - Mi 06.03.19 17:20
Titel: Das Zahlenpuzzle Futoshiki
Moin an alle Tüftler,
Futoshiki (auf japanisch: wörtlich "Nicht gleich"; auch bekannt als "Hutoshiki", "Unequal") ist ein
logisches Puzzle, das auf einem quadratischen Gitter gespielt wird, n x n mit n=3,...,9.
Die Aufgabe besteht nun darin, in jeder Zeile die Zahlen 1 bis n so zu platzieren, dass auch jede
Spalte die Zahlen 1 bis n enthält. Einige Zahlen sind vorgegeben. Zusätzlich sind zu Beginn
zwischen einigen Feldern Relationszeichen eingetragen, die anzeigen, ob eine Zahl größer oder
kleiner als ihre Nachbarzahl sein soll. Diese Bedingungen müssen beim Ausfüllen des Diagramms berücksichtigt werden.
Die Diagonalen können bei Bedarf auch die Zahlen 1 bis n enthalten, dann dauert die Berechnung des Puzzles länger.
Das Generieren eines Puzzles kann mit <ESC> abgebrochen werden.
Viel Spaß beim Knobeln!
Gruß Fiete
Rev. 1: die Ausgabe ist geändert worden, Zeichensatz Symbol hab ich benutzt
die Position der Relationen und die Größe der Ziffern wurden modifiziert
Range-Error ist eliminiert
Delete - Mi 06.03.19 18:04
- Nachträglich durch die Entwickler-Ecke gelöscht -
ub60 - Mi 06.03.19 19:12
Wieder mal ein schönes Logikspiel. Vielen Dank dafür!
In (als) Zeile 291 einfügen:
Dann sieht es gleich etwas schöner aus :wink: .
ub60
Fiete - Do 07.03.19 18:51
Moin ub60,
die Rechtecke hatte ich zur besseren Orientierung eingebaut.
Ohne sieht es natürlich schöner aus.
@Frühlingsrolle: die Pfeileauswahl habe ich mir angeschaut.
In Delphi6 ich die Unicodewerte nicht hinbekommen :oops:
Gruß Fiete
Delete - Do 07.03.19 23:16
- Nachträglich durch die Entwickler-Ecke gelöscht -
ub60 - Fr 08.03.19 11:54
Man könnte auch eine Grafik einfügen (StretchDraw oder so) oder Grafiken verschiedener Größen je nach Spielfeldgröße.
Eine einfache Version (ohne Größenänderung) wäre:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if Zeichen='<' then ImageList1.Draw(Ausgabe.Canvas, Rect.Right-Font.Size, Rect.Top+Ausgabe.DefaultColWidth div 3, 0) else ImageList1.Draw(Ausgabe.Canvas, Rect.Right-Font.Size, Rect.Top+Ausgabe.DefaultColWidth div 3, 1); Zeichen:=Feld[ACol+1,ARow+1].Relation[2]; if Zeichen<>'*' then if Zeichen='^' then ImageList1.Draw(Ausgabe.Canvas, Rect.Left+4+Ausgabe.DefaultColWidth div 3,Rect.Bottom-Font.Size-3, 2) else ImageList1.Draw(Ausgabe.Canvas, Rect.Left+4+Ausgabe.DefaultColWidth div 3,Rect.Bottom-Font.Size-3, 3); |
Da kann man sicher noch optimieren :D .
ub60
Fiete - Fr 08.03.19 12:49
Moin Frühlingsrolle,
den Laufzeitfehler konnte ich ermitteln.
In den Zeilen 93 und 94 muß statt 546 der Wert 544 stehen :oops:
Die Puzzleausgabe kann sicher noch besser gestaltet werden :wink:
Gruß Fiete
Fiete - Fr 08.03.19 12:56
Moin ub60,
Deine Version der Ausgabe sieht so aus wie ich mir es vorgestellt hatte. :zustimm:
Du musst jetzt nur noch für verschiedene Größen eine Lösung finden.
Ich werde mein Hirn auch noch einmal anwerfen :wink:
Gruß Fiete
Delete - Fr 08.03.19 20:17
- Nachträglich durch die Entwickler-Ecke gelöscht -
Fiete - Fr 08.03.19 22:51
Moin Frühlingsrolle,
das Programm liegt in einer neuen Version vor!
Hoffe jetzt ist alles i.O.
Gruß Fiete
Delete - Sa 09.03.19 04:33
- Nachträglich durch die Entwickler-Ecke gelöscht -
Fiete - Sa 09.03.19 17:12
Moin Frühlingsrolle,
das schnelle Wechseln kann unterbunden werden - SpinEditG.Enabled:=False; in SpinEditGChange in Zeile 92 einfügen.
In der letzten Zeile SpinEditG.Enabled:=True; einfügen.
Wenn die CheckBox selektiert ist wird für die Diagonalen jeweils eine Permutation gesucht, das dauert.
Gruß Fiete
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!