Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Mi 06.03.19 17:20 
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.
FutoshikiScreen
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.
Lösung

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
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)


Zuletzt bearbeitet von Fiete am Fr 08.03.19 22:49, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Narses, Tankard, ub60
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 06.03.19 18:04 
- Nachträglich durch die Entwickler-Ecke gelöscht -
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Mi 06.03.19 19:12 
Wieder mal ein schönes Logikspiel. Vielen Dank dafür!
In (als) Zeile 291 einfügen:

ausblenden Delphi-Quelltext
1:
Brush.Style:=bsClear;					

Dann sieht es gleich etwas schöner aus :wink: .

ub60
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: 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

_________________
Fietes Gesetz: use your brain (THINK)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 07.03.19 23:16 
- Nachträglich durch die Entwickler-Ecke gelöscht -
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: 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:

futoshiki

ausblenden 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 30)
    else ImageList1.Draw(Ausgabe.Canvas, Rect.Right-Font.Size, Rect.Top+Ausgabe.DefaultColWidth div 31);
  Zeichen:=Feld[ACol+1,ARow+1].Relation[2];
  if Zeichen<>'*' then // unten
    if Zeichen='^'
      then ImageList1.Draw(Ausgabe.Canvas, Rect.Left+4+Ausgabe.DefaultColWidth div 3,Rect.Bottom-Font.Size-32)
      else ImageList1.Draw(Ausgabe.Canvas, Rect.Left+4+Ausgabe.DefaultColWidth div 3,Rect.Bottom-Font.Size-33);

Da kann man sicher noch optimieren :D .

ub60
Einloggen, um Attachments anzusehen!
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: 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

_________________
Fietes Gesetz: use your brain (THINK)
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: 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

_________________
Fietes Gesetz: use your brain (THINK)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 08.03.19 20:17 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: 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

_________________
Fietes Gesetz: use your brain (THINK)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 09.03.19 04:33 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: 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

_________________
Fietes Gesetz: use your brain (THINK)