Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen

HelpCode

Neues Mitglied
Also Leute ich hab ein Problem, und zwar ist das so ich eine super simple Bedingung habe:

wenn ich einmal Q drücke, soll auf 1 erhöht werden.
Aber es ist so, dass wenn ich nur einmal Q drücke, er direkt bis 7 durchzählt und die Bedingung direkt erfüllt ist.
Ich möchte aber, dass man 7 mal auf Q klicken muss damit sich die Bedingung erfüllt. Was kann ich tun? (Hab auch mit den Geschweiften Klammern rumgespielt aber
das funktioniert trotzdem nicht)

if (keyCode=='Q')
{
QCounter++;
}

if (QCounter==7){
enemys.remove(i);

println("gegner finished");
println(QCounter);
keyFight=false;
}
}
}


Es ist echt frustrierend, weil so schwer ist das bestimmt nicht :/
 

Robert Zenz

Top Contributor
Ohne den Rest deines Programms ist es jetzt nur raten, aber wahrscheinlich pruefst du nicht ob die Taste gedrueckt wurde, sondern du pruefst ob die taste gedrueckt ist. Das hoert sich im ersten Moment komisch an, ist aber ein wichtiger Unterschied. Wenn du zum Beispiel in jedem Frame etwas machen willst:

Java:
public void doThingsOnEveryDrawnFrame() {
    wantedAction();
}

Dann passiert das bei jedem Frame der gezeichnet wird. Wenn du dann pruefst ob die Taste gedrueckt ist:

Java:
public void doThingsOnEveryDrawnFrame() {
    if (getState("Q") == DOWN) {
        wantedAction();
    }
}

Dann passiert dies natuerlich so oft wie Frames gezeichnet werden solange die Taste gedrueckt ist. Waehrend dein Finger auf der Taste ruht werden ja in der Zwischenzeit irgendwas so um 15 Frames gezeichnet, wahrscheinlich. Du musst also pruefen ob die taste gedrueckt wurde:

Java:
public void doThingsOnEveryDrawnFrame() {
    if (getState("Q") == DOWN) {
        if (!qIsPressed) {
            wantedAction();
            
            qIsPressed = true;
        }
    } else {
        // Q must be up right now.
        qIsPressed = false
    }
}

Also im Groszen und Ganzen musst du beim ersten mal deine Aktion machen, und jede weitere Aktiojn unterdruecken solange die Taste nicht erneut gedrueckt wurde.

Alternativ kann es natuerlich auch sein dass du einen Listener fuer ein Ereignis eingehaengt hast der nicht fuer das erste mal hinunterdruecken ausloest, sondern solange die Taste hinuntergedrueckt wird.
 

White_Fox

Top Contributor
Du willst ein Flip Flop programmieren.

Einmal inkrementieren wenn die Taste gedrückt wurde, ein erneutes Inkrementieren aber erst wieder zulassen wenn die Taste einmal losgelassen wurde.

Ohne deinen Code jetzt genauer zu untersuchen, du müßtest Events nach nicht nur nach KEY, sondern auch z.B. nach KEY_DOWN und KEY_UP oder ähnlichem filtern können.
 

KonradN

Super-Moderator
Mitarbeiter
Die Frage ist, was der TE verwendet un ob es die genannten Methoden da so gibt.

Da eben keyCode direkt eine Variable ist und nicht eine Instanzvariable eines Parameters kann es sehr gut sein, dass Deine Antwort in dem Kontext des TE nicht geht.
 

KonradN

Super-Moderator
Mitarbeiter
Danach zu schauen ist ja auch richtig. Wenn er den typischen Key Listener von Java direkt nutzen kann, dann ist der Hinweis von Tobias auch korrekt. Nur eben fürchte ich, dass hier irgend ein Framework im Spiel ist das irgend ein Lehrer im Unterricht verwendet, dass eben nur einen stark vereinfachten Zugriff erlaubt.

Dann wäre der Hinweis von Robert eben nicht falsch. Tobias scheint das ja auch etwas erkannt zu haben, denn er fragt ja auch nach dem Kontext. Aber diese Aussage von Robert ist ja ebenso wie Dein Hinweis zu einem FlipFlop.
 

Robert Zenz

Top Contributor
Also, es haben alle ein biszchen Recht. :) Wer am rechtesten hat (nicht "ist", wichtiger Unterschied) haengt davon ab was am letzten Ende als Technologie verwendet wird. Aber ich glaube, da haben wir jetzt ohnehin alle Moeglichkeiten soweit abgedeckt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Threads Counter mit ungeraden Zahlen Java Basics - Anfänger-Themen 32
P Iterieren mit einer Foreach in Lambdaschreibweise und Counter. Java Basics - Anfänger-Themen 1
S Counter Label Button Java Basics - Anfänger-Themen 4
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
I counter der ausgegebenen zahlen Java Basics - Anfänger-Themen 2
Todesbote Treeset - Wenn bestimmtes Objekt vorkommt Counter erhöhen Java Basics - Anfänger-Themen 6
CR7 String schneiden und Counter hochzählen Java Basics - Anfänger-Themen 9
A Counter für die anzahl von regulären ausdrücken Java Basics - Anfänger-Themen 4
H Java - Counter Java Basics - Anfänger-Themen 2
M Counter erstellen - Was mache ich falsch? Java Basics - Anfänger-Themen 17
O Counter im JWindow mit Thread und dispose Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S For-Schleife durch "ESC" verlassen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
V Durch 0 teilen Java Basics - Anfänger-Themen 2
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Objektname durch Tastaturbefehl eingeben Java Basics - Anfänger-Themen 7
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
T Threads Durch threads gestartete Prozesse killen Java Basics - Anfänger-Themen 2
M ArrayList durch OutputStream in Datei Java Basics - Anfänger-Themen 9
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
T Input/Output Programm beenden durch Eingabe Java Basics - Anfänger-Themen 1
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
N Durch Objekte iterieren? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben