2017-06-30 4 views
1

Ich entwickle ein Wordsearch-Spiel. Tabellenlayout enthält Textansichten. Textviews zeigen die Charaktere an. Wenn der Benutzer ein Wort in einer der 8 Richtungen findet: TopToBottom, BottomToTop, LeftToRight, RightToLeft, TopToBottomRight, BottomToTopLeft, TopToBottomLeft, BottomToTopRight, möchte ich eine Canvas-Linie über dem Wort in der entsprechenden Richtung anzeigen.Zeichnen nur horizontale, vertikale und diagonale Linien in Android

Ich kann horizontale, vertikale und diagonale Linien von einem Startpunkt bis zum Endpunkt zeichnen. Startpunkt ist, wo der Benutzer beginnt zu streichen. Endpunkt ist, wo er aufhört zu wischen.

Check the first three screenshots here

Aber mein Problem ist, dass ich auch andere Linien zwischen falschen Koordinaten ziehen kann, die nicht horizontal sind, vertikale oder diagonale Linien. Sehen Sie sich die nächsten drei Screenshots an.

Ich möchte nur horizontale, vertikale und diagonale Linien zeichnen. Wenn der Endpunkt in falschen Koordinaten ist, muss ich den Endpunkt so verschieben, dass er mit einer beliebigen der nahen Richtung übereinstimmt (die horizontal, vertikal oder diagonal ist).

+0

Sie scheinen Linien auf ungültige Wörter zu zeichnen, sollten Sie diese nicht ablehnen? –

+0

Ja. Wir sollten die falschen Koordinaten nicht berücksichtigen. Dann müssen wir die Koordinaten in irgendeine Richtung der Nähe bewegen, die horizontal, vertikal oder diagonal sein könnte. Also, obwohl der Benutzer in den falschen Koordinaten wischt, können wir die Linie in den richtigen Koordinaten zeichnen. –

Antwort

0

Sie können die Steigung der Linie vor dem Zeichnen finden. Unter der Annahme gleicher Größe, gleichmäßig beabstandet Buchstaben, und die Berührungspunkte sind an der gleichen Position innerhalb jeder Brief ...

etwas über 0 - vertikale Linie
± 1 - diagonal
0 - horizontal

Formel = (p2.y - p1.y)/(p2.x - p1.x)

+0

Ihre Antwort ist ein guter Tipp für meine Frage. Wenn der Benutzer das Gitter anders als vertikal, diagonal und horizontal berührt, ist die Neigung immer kleiner oder größer als ± 1. –

Verwandte Themen