Wie erstelle ich ein Kreuzworträtsel in WPF?

9

Ich habe 10 x 10 TextBoxen erstellt und der Benutzer sollte die Wörter in die entsprechenden TextBoxen für die Position der Wörter eingeben. Und ich speichere alles in eine Textdatei wie folgt:

Dann lese ich auf der WPF-Seite die Textdatei und beziehe die TextBoxen in ein Panel, aber das Problem besteht darin, dass das Kreuzworträtsel über und über Hinweise verfügt, die dich zur Antwort führen und jeder Hinweis eine Nummer hat, um anzuzeigen, welche welche ist . Allerdings kann ich mir keinen Weg vorstellen, die Nummer der Puzzle-Nummer mit der Hin- und Her-Zahl zu verknüpfen. So sieht es jetzt aus:

Beachten Sie die Zahlen (ich habe sie in Farbe bearbeitet, um zu visualisieren, was ich will) neben dem Kreuz und nach unten, ich brauche diese Zahlen, um angezeigt zu werden.

In meiner Datenbank habe ich den Speicherort der Datei in einer Tabelle gespeichert und die Hinweise und Antworten in einer anderen Tabelle wie folgt:

Und das sind die Hinweise (über und unter) und antworten:

Ich verwende Entity-Framework-Lambda-Ausdrücke zum Abrufen von across und down.

Schätze jede Hilfe, um die Nummern mit Across und Down aus dem Puzzle zu verknüpfen.

Dies ist mein Code, um das Puzzle anzuzeigen:

%Vor%

Code zum Anzeigen von Across und Down:

%Vor%     
user2376998 15.08.2013, 06:15
quelle

1 Antwort

1

Sie müssen möglicherweise Ihr Datenmodell hier neu definieren, weil ich denke, dass Sie bei der ersten Hürde - Systemanalyse gescheitert sind. Es fängt uns alle auf, wenn wir nur Code schreiben wollen und immer einen großen Refactor haben.

Denken Sie über Ihre Domain hier nach. Kreuzworträtsel. Wenn wir ein Zeitungsrätsel lesen und Sie die Antwort auf einen Hinweis nicht wissen, was sagen Sie, wenn Sie einen Freund fragen.

  

6 Buchstaben, Hinweis ist 'blah blah'

... gefolgt von allen Ihnen bekannten Buchstaben.

Jetzt wissen wir, dass das Puzzle wissen muss, wie viele Buchstaben in jeder Antwort stehen und dass jede Antwort einen Hinweis braucht. Wir wissen auch, dass Buchstaben versteckt sind, bis Sie sie ausfüllen, aber wir müssen die richtige Antwort irgendwann wissen.

Wie präsentiert sich das Puzzle auf der Rückseite des Papiers? Hinweise werden nicht als 1,2,3 usw. geschrieben. Sie sind 4 unten, 1 quer usw. Jetzt wissen wir, dass Sie einige Positionsdaten benötigen.

Sie können dies auf zwei Arten erreichen.

1. Haben Sie jeden Hinweis als eigenen Eintrag mit Text vervollständigen

Hinweis '1' Richtung 'über' Position '1,1' Antwort 'Hallo' Beschreibung 'Gruß'

Berechnen Sie die Rastergröße aus den Einträgen und positionieren Sie die Buchstaben entsprechend. Vorteile: Einfach zu arbeiten. Alle Informationen an einem Ort Nachteile: Mögliche Datenbeschädigung. Diese Methode kann zwei verschiedene Buchstaben an derselben Position definieren.

2. Separate Einträge, aber beantworten Sie Text im Raster

Dies ist sehr ähnlich wie Sie es jetzt haben, aber Sie trennen den Text in ein CSV-Raster, wie Sie im ersten Screenshot demonstrieren. Sie haben dann Einträge für die Hinweise wie in Methode 1. aber das Feld 'Antwort' weglassen.

Ihr Code muss:

  1. Berechnen Sie die Rastergröße
  2. füllen Sie ein Gitter
  3. füllt die Liste von Hinweise
  4. Konvertieren Sie die Benutzereinträge in eine CSV-Textdatei, damit Sie kann die Eingabe anhand der Antworten validieren und
  5. Sagen Sie dem Benutzer, ob

Wie zur Verknüpfung der Hinweise zu den Eingabefeldern. Setzen Sie die Eigenschaft Tooltip jedes textbox mit Beschreibungen der Hinweise, die den Buchstaben enthalten.     Sie haben es richtig gemacht.

Schließlich (und dies ist wahrscheinlich das Bit, das Sie wollen) , fügen Sie die richtige Zahl in das Textfeld ein, Sie müssen Vorteile aus der Layout-Pipeline von WPF ziehen. Legen Sie nicht einfach eine Textbox in Ihr Raster, sondern fügen Sie ein weiteres Raster ein! Ich zeige Ihnen, wie es in XAML aussehen sollte, aber Sie möchten es möglicherweise in Code generieren.

%Vor%

Verwenden Sie das anstelle einer einfachen Textbox in einem beliebigen Quadrat, wo Sie eine Zahl haben möchten.

    
Gusdor 15.08.2013 10:48
quelle

Tags und Links