Wie mein Screenshot zeigt, arbeite ich an einem Wort-Matching-Spiel. In diesem Spiel weise ich meine Wörter verschiedenen UIB-Tasten in einer bestimmten Reihenfolge auf verschiedenen Locations zu (mein roter Pfeil zeigt diese Sequenz an) und den restlichen UIB-Buttons, denen ich eins zuweise zufälliges Zeichen (AZ) .wenn ich auf irgendwelche UIButtons klicke, wird sein Titel UILabel zugewiesen, das in Fornt des gegenwärtigen Abschnitts ist: ich campage diesen UILabel Text unter UILabels Text, der nicht für timer.when es mit irgendwelchen meiner übereinstimmt UILabels wird gelöscht. Ich implementiere all diesen Prozess bereits.
Aber mein Problem ist das, was durch schwarze Linien angezeigt wird. Wenn der Spieler das erste Wort findet, das "HUND" ist. er klickt auf die zwei UIButtons in Sequence, aber drücke nicht die Dritte in Sequence. (wie mit schwarzer Linie gezeigt) .so möchte ich, dass wenn Spieler irgendwelche UIButtons drückt, die nicht in Sequence sind, entferne den vorherigen Text (was " DO ") von UILabel und jetzt der Text von UILabel ist nur" G ". Hier ist mein Code, um die UIButtons Titel zu erhalten und ihm UILabel zuzuordnen.
%Vor%Danke im Voraus
Weisen Sie jeder Schaltfläche von links nach rechts ein Tag zu. So wirst du haben,
GButton.tag = 0; TButton.tag = 1; DButton.tag = 2; . . . VButton.tag = 9; . . . EButton.tag = 18; . . . CButton.tag = 26;
Behalten Sie jetzt die Spur der vorherigen gedrückten Taste und der aktuellen gedrückten Taste. Rufen Sie die unten stehende Funktion auf, wenn Ihr Buttondelegat auftrifft:
Schreiben Sie den folgenden Code in Ihre .h-Datei
%Vor%Ich hoffe, es wird helfen.
Wenn ich richtig verstanden habe, müssen Sie wissen, ob die gedrückte Taste neben der zuvor gedrückten Taste ist? Verwenden Sie diese Funktion, um die Umgebung im Grid zu testen:
%Vor%Und nur anhängen, wenn sie benachbart sind, dh:
%Vor%Spaßfrage: In diesem speziellen Fall stimme ich Luke darin zu, das UIButton zu untergliedern. Auf diese Weise können Sie jeder Schaltfläche einen (X, Y) auf Ihrem Raster und eine (Xnext, Ynext) Liste für alle möglichen nächsten Druckpositionen geben (wenn die Schaltfläche selbst mehrere Wörter erzeugen kann). Extern vergleichen Sie den aktuellen Treffer mit dem erwarteten (Xnext, Ynext). Wenn die beiden nicht übereinstimmen, ist dies das Signal, nach dem Sie suchen.
Dies ist eine Antwort, die all Ihre Situationen berücksichtigt, vorwärts und rückwärts horizontal (wenn Sie sich dazu entscheiden, Backware zu implementieren), vertikal nach oben und unten (wenn Sie nach oben implementieren) und jede Diagonale oder eine andere Kombination kann sich ergeben!
Dies berücksichtigt auch, sagen wir, schlagen das D, dann das O dann versuchen, die D wieder gegen die G drücken. Es kümmert sich auch um das falsche G treffen.
Erstellen Sie ein neues .m .h-Dateipaar (ein neues Objekt) und geben Sie ihm Ihren Namen.
Ein Beispielcode für die Implementierung einer benutzerdefinierten UIButton (h-Datei):
%Vor%In der .m-Datei Ihres
%Vor%Sie benötigen nun auch ein "GridPointNext" -Objekt.
Der Grid-Objekt-Header sollte wie folgt aussehen:
%Vor%Die m-Datei für das Objekt sollte wie folgt aussehen:
%Vor%Sie müssen sich mit dem Dealloc-Teil befassen. Dies gibt Ihnen zumindest einige Werkzeuge zum Erstellen Ihrer benutzerdefinierten Schaltfläche und Ihres Wortlistenalgorithmus.
Wie mein Screenshot zeigt, arbeite ich an einem Wort-Matching-Spiel. In diesem Spiel weise ich meine Wörter verschiedenen UIB-Tasten in einer bestimmten Reihenfolge auf verschiedenen Locations zu (mein roter Pfeil zeigt diese Sequenz an) und den restlichen UIB-Buttons, denen ich eins zuweise zufälliges Zeichen (AZ) .wenn ich auf irgendwelche UIButtons klicke, wird sein Titel UILabel zugewiesen, das in Fornt des gegenwärtigen Abschnitts ist: ich campage diesen UILabel Text unter UILabels Text, der nicht für timer.when es mit irgendwelchen meiner übereinstimmt UILabels wird gelöscht. Ich implementiere all diesen Prozess bereits.
Aber mein Problem ist das, was durch schwarze Linien angezeigt wird. Wenn der Spieler das erste Wort findet, das "HUND" ist. er klickt auf die zwei UIButtons in Sequence, aber drücke nicht die Dritte in Sequence. (wie mit schwarzer Linie gezeigt) .so möchte ich, dass wenn Spieler irgendwelche UIButtons drückt, die nicht in Sequence sind, entferne den vorherigen Text (was " DO ") von UILabel und jetzt der Text von UILabel ist nur" G ". Hier ist mein Code, um die UIButtons Titel zu erhalten und ihm UILabel zuzuordnen.
%Vor%Danke im Voraus
Weisen Sie jeder Schaltfläche von links nach rechts ein Tag zu. So wirst du haben,
GButton.tag = 0; TButton.tag = 1; DButton.tag = 2; . . . VButton.tag = 9; . . . EButton.tag = 18; . . . CButton.tag = 26;
Behalten Sie jetzt die Spur der vorherigen gedrückten Taste und der aktuellen gedrückten Taste. Rufen Sie die unten stehende Funktion auf, wenn Ihr Buttondelegat auftrifft:
Schreiben Sie den folgenden Code in Ihre .h-Datei
%Vor%Ich hoffe, es wird helfen.
Wenn ich das richtig verstehe. Der Benutzer kann nur ein richtiges Wort haben, wenn die gewählten Buchstaben alle nebeneinander sitzen?
Haben Sie das versucht: Behalte zwei Referenzen. Ein UIButton für previousPressedButton und ein UIButton für lastPressedButton.
Zuerst drückt ein Benutzer D. lastPressedButton verweist auf D. Dann drückt ein Benutzer O. previousPressedButton wird D sein. LastPressedButton wird O sein.
Ermitteln Sie jetzt die Breite und Höhe der UIB-Tasten und vergleichen Sie, ob lastPressedButton.frame.origin.x kleiner als width oder -width ist. Überprüfen Sie auch, ob lastPressedButton.frame.origin.y kleiner als Höhe oder -höhe ist. Jetzt wissen Sie, ob es den vorherigen Knopf berührt. Verwenden Sie dies, um zu entscheiden, ob es ein neues Wort ist oder nicht.
Ich würde dies in eine Methode einfügen.
%Vor%Dann, wenn auf eine Schaltfläche geklickt wird. Sie können
verwenden %Vor%Oder, wenn ich das anders verstehe. Die Wörter können nur gemacht werden, wenn die Buchstaben in einer Reihe sind. Wie: Von links nach rechts. Von unten nach oben. Von unten rechts nach oben links etc. In diesem Fall bestimmen Sie alle Richtungen. Wie oben links ist 0, oben ist 1, oben rechts ist 2. rechts ist 3. unten rechts ist 4. unten ist 5. unten links ist 6. links ist 7.
Speichern Sie die Anweisungen, wenn Sie auf zwei Schaltflächen klicken. Beispielsweise: Wenn es von links nach rechts ist, Richtung = 3; Wenn Sie dann auf eine andere Schaltfläche klicken, überprüfen Sie die neue Richtung. Wenn es 3 ist, ist das Wort immer noch in der gleichen Richtung. Wenn es etwas anderes ist, dann lösche und fange neu an.
Hoffe, das hilft.
Wenn ich richtig verstanden habe, müssen Sie wissen, ob die gedrückte Taste neben der zuvor gedrückten Taste ist? Verwenden Sie diese Funktion, um die Umgebung im Grid zu testen:
%Vor%Und nur anhängen, wenn sie benachbart sind, dh:
%Vor%Wenn ich das richtig verstehe. Der Benutzer kann nur ein richtiges Wort haben, wenn die gewählten Buchstaben alle nebeneinander sitzen?
Haben Sie das versucht: Behalte zwei Referenzen. Ein UIButton für previousPressedButton und ein UIButton für lastPressedButton.
Zuerst drückt ein Benutzer D. lastPressedButton verweist auf D. Dann drückt ein Benutzer O. previousPressedButton wird D sein. LastPressedButton wird O sein.
Ermitteln Sie jetzt die Breite und Höhe der UIB-Tasten und vergleichen Sie, ob lastPressedButton.frame.origin.x kleiner als width oder -width ist. Überprüfen Sie auch, ob lastPressedButton.frame.origin.y kleiner als Höhe oder -höhe ist. Jetzt wissen Sie, ob es den vorherigen Knopf berührt. Verwenden Sie dies, um zu entscheiden, ob es ein neues Wort ist oder nicht.
Ich würde dies in eine Methode einfügen.
%Vor%Dann, wenn auf eine Schaltfläche geklickt wird. Sie können
verwenden %Vor%Oder, wenn ich das anders verstehe. Die Wörter können nur gemacht werden, wenn die Buchstaben in einer Reihe sind. Wie: Von links nach rechts. Von unten nach oben. Von unten rechts nach oben links etc. In diesem Fall bestimmen Sie alle Richtungen. Wie oben links ist 0, oben ist 1, oben rechts ist 2. rechts ist 3. unten rechts ist 4. unten ist 5. unten links ist 6. links ist 7.
Speichern Sie die Anweisungen, wenn Sie auf zwei Schaltflächen klicken. Beispielsweise: Wenn es von links nach rechts ist, Richtung = 3; Wenn Sie dann auf eine andere Schaltfläche klicken, überprüfen Sie die neue Richtung. Wenn es 3 ist, ist das Wort immer noch in der gleichen Richtung. Wenn es etwas anderes ist, dann lösche und fange neu an.
Hoffe, das hilft.