Timer trotz erwartender Eingabe durchlaufen lassen

Exolution

Mitglied
Schönen guten Abend wünsche ich euch allen,

im Neuland nenne ich mich Exolution und habe vor kurzem damit begonnen, mich mit der Programmierung richtig auseinanderzusetzen.

Ich bin dezeit an einem Spiel dran und habe das Problem, dass mein Timer leider nicht bis zur run-Methode kommt, da eine Eingabe dazwischenfunkt.
Leider ist die offene Eingabe unausweichlich, weshalb ich euch gerne fragen würde, ob und wie man die offene Eingabe überbrücken könnte?


Nachfolgend der Code, der mein Problem widerspiegelt:

Java:
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

public class testumgebung {
    
    static String nachricht = "";

    public static void main(String[] args) {
        home();
    }
    
    public static void home() {
        Scanner eingabefeld = new Scanner(System.in);
        nachricht();
        String eingabe = eingabefeld.nextLine();
        switch (eingabe) {
        case "1":
            anderenachricht();
            break;
        default: 
            
            break;
        }
    }
    
    public static void anderenachricht() {
        Timer timer = new Timer();
        
        nachricht = "Da bin ich!";
        home();
        
        timer.schedule(new TimerTask() {
            public void run() {
                nachricht = "";
                home();
                timer.cancel();
            }
        }, 2500);
        
    }

    public static void nachricht() {
        System.out.println("Nachricht:\n" + testumgebung.nachricht);
    }
    
}

Die vorhandene Eingabe ist deshalb so wichtig, da in meinem Spiel, während der Timer läuft, weiter die Steuerung aktiv sein muss, die ich mithilfe der Eingabe realisiert habe. Die Timer im Spiel laufen natürlich länger als 2,5 Sekunde (Zwischen 1-10 Minuten).


Ich bedanke mich für das entgegenbringende Interesse für mein Problem und wünsche einen ruhigen Abend.
 

mihe7

Top Contributor
Ich verstehe das Problem ehrlich gesagt nicht ganz: Du musst doch lediglich den home()-Aufruf ans Ende der Methode anderenachricht() stellen, damit der Timer vorher noch gestartet wird.
 

Exolution

Mitglied
Nabend mihe7,

die Lage sieht wie folgt aus: Man soll bereits das leere Nachrichtenfeld sehen, und sobald die Methode anderenachricht() ausgeführt wird, das Nachrichtenfeld mit der Nachricht für 2,5 Sekunden "ersetzen" und danach verschwinden.


Schönen Abend wünsche ich dir.
 

mihe7

Top Contributor
Schönen Abend auch, dazu brauchst Du doch nur die Nachricht zu schreiben, 2,5 s zu warten (Thread.sleep()) und dann weitermachen.
 

Exolution

Mitglied
Anfangs hatte ich es mit Thread.sleep() probiert, jedoch kann man während den 2,5 Sekunden keine Eingabe tätigen.

Ich hatte bereits die Idee, eine eigene Methode für die Eingabe zu schreiben, die ich dann jedes Mal dahinterklemme, kann ich aber erst morgen ausprobieren.
 

mihe7

Top Contributor
Ich fasse mal zusammen: Du willst eine Eingabe auf der Konsole haben, parallel dazu möchtest Du irgendwelche Ausgaben tätigen, die sich aber nicht mit Eingaben überschneiden sollen, obwohl die Eingabe weiterhin möglich sein soll? Das geht auf der Konsole im Allgemeinen nicht.
 

Exolution

Mitglied
Hallo mihe7,
entschuldige meine späte Antwort, hatte erst jetzt die Gelegenheit vorbei zu schauen.

Schade, hatte mein Programm darauf ausgelegt, dass es so funktionieren soll. Da muss ich mir wohl was anderes einfallen lassen.

Ich danke dir dennoch für deine Bemühung.
 

Exolution

Mitglied
Ich bin absoluter Neueinsteiger und habe mein Programm für die Konsole optimiert.
Mit der Konsole sehe ich sofort, wie sich etwas im Quellcode auswirkt und habe dabei zeitgleich eine "Benutzeroberfläche". Beispielsweise besteht mein "Design" aus Strichen, Slash, Backslash etc.. welche mit System.out.println ausgegeben werden.
 

mihe7

Top Contributor
OK, in dem Fall wirst Du damit leben müssen, dass Ein- und Ausgabe "kollidieren" können. Alternativ könntest Du auch nur die Hinweise über das GUI anzeigen, z. B. JOptionPane.showMessageDialog(null, "Hinweis"); kannst Du mal testhalber einbauen, ob Dir das was bringen würde.
 

Exolution

Mitglied
Guten Morgen mihe7,

JOptionPane.showMessageDialog(null, "Hinweis"); kann ich leider nicht verwenden, da ich nur eine kleine Leiste erzeugen wollte, wo sich der Status jede 2,5 Sekunden resetet (Das halt in der Konsole). Generell hatte ich auch vor, dass sich ein Gegner im Spiel mit dem Timer zufällig generiert, aber da Eingaben eine Pause erzwingen, muss ich anders an die Sache rangehen.

Ich werde mal schauen, wie ich da jetzt weitermachen kann. Danke für deine Hilfe. :)
 

mihe7

Top Contributor
Generell hatte ich auch vor, dass sich ein Gegner im Spiel mit dem Timer zufällig generiert, aber da Eingaben eine Pause erzwingen, muss ich anders an die Sache rangehen.
Du kannst schon Dinge im Hintergrund ausführen, das ist kein Problem, nur parallel Aus- und Eingabe geht auf der Konsole im Allgemeinen nicht. Zum Beispiel kannst Du unter Linux (fast) immer in die Konsole tippen, wenn eine GUI im Vordergrund läuft. Es gibt natürlich Möglichkeiten, die sind aber plattformabhängig und benötigen zusätzliche Libs wie z. B. ncurses (das ist eine native Library, also nicht direkt unter Java verwendbar). Für Java scheint mir https://github.com/mabe02/lanterna ein Ansatz zu sein oder auch https://sourceforge.net/projects/charva/ - dazu kann ich Dir aber nichts Näheres sagen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Timer vs ExecutorService: jeden Sonntag um 14.00 Uhr einen Task starten..? Java Basics - Anfänger-Themen 1
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
Jan_x8 Timer/Scanner Java Basics - Anfänger-Themen 5
C Timer aktualisieren Java Basics - Anfänger-Themen 5
L GUI- wie cancel ich einen Timer? Java Basics - Anfänger-Themen 10
missy72 Timer oder Timeline Java Basics - Anfänger-Themen 3
R Timer Format: 00:00:00 Java Basics - Anfänger-Themen 29
C java.util Timer läuft zu langsam? Java Basics - Anfänger-Themen 1
D Änder der Timer Speeds Java Basics - Anfänger-Themen 1
L Methoden Timer Java Basics - Anfänger-Themen 9
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
G Animation Timer Nano Time Java Basics - Anfänger-Themen 2
S Timer reseten Java Basics - Anfänger-Themen 3
T Timer stoppt zu früh Java Basics - Anfänger-Themen 7
CptK Methoden Timer & Mathematischer Denkfehler Java Basics - Anfänger-Themen 7
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
C Wie erstellt man einen Timer/Delay? Java Basics - Anfänger-Themen 1
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
D Timer programmieren Java Basics - Anfänger-Themen 13
N Timer funktioniert nicht beim starten Java Basics - Anfänger-Themen 3
B Timer mehrere Male ausführen Java Basics - Anfänger-Themen 4
J Timer richtig pausieren Java Basics - Anfänger-Themen 2
E Timer erstellen Java Basics - Anfänger-Themen 2
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
S actionlistener timer Java Basics - Anfänger-Themen 9
C Wie kann ich jetzt von der Game.java auf die Timer.java zugreifen? Java Basics - Anfänger-Themen 6
S timer mit imagedatei Java Basics - Anfänger-Themen 5
S timer Java Basics - Anfänger-Themen 0
V Java Uitil Timer Stoppt nicht Java Basics - Anfänger-Themen 2
KaffeeFan Timer beenden Java Basics - Anfänger-Themen 12
K Ampelsteuerung mit Timer Java Basics - Anfänger-Themen 8
F Array und Timer Java Basics - Anfänger-Themen 2
G Timer einsetzen Java Basics - Anfänger-Themen 2
J Timer oder Thread programmieren ? Java Basics - Anfänger-Themen 10
F Timer beendet nicht immer Java Basics - Anfänger-Themen 2
F Timer abbrechen und wieder starten Java Basics - Anfänger-Themen 5
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5
T Timer - HILFE Java Basics - Anfänger-Themen 10
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
A Wieso funktioniert dieser Timer nicht?? Java Basics - Anfänger-Themen 3
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
O Laufender Timer+Action Listener in Thread VS isAlive() Java Basics - Anfänger-Themen 4
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
M Schneller Timer Java Basics - Anfänger-Themen 2
C Timer aus anderer Klasse stoppen/starten Java Basics - Anfänger-Themen 3
B Timer beenden? Java Basics - Anfänger-Themen 0
G Erste Schritte Timer: In einem festgelegten Intervall eine Methode ausführen Java Basics - Anfänger-Themen 6
O Delayed Timer erstellen Java Basics - Anfänger-Themen 3
M Timer / Thread Java Basics - Anfänger-Themen 43
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
A Timer: textarea.getText() mit Variable vergleichen Java Basics - Anfänger-Themen 3
D Problem mit Methode und Timer Java Basics - Anfänger-Themen 35
T Wie mache ich einen Timer der alle 2 sekunden aufgerufen wird? Java Basics - Anfänger-Themen 5
R Einfacher Timer geht nicht Java Basics - Anfänger-Themen 7
J Swing Timer Java Basics - Anfänger-Themen 3
M Einfacher Timer ;) Java Basics - Anfänger-Themen 15
M Timer für Termial-Eingaben Java Basics - Anfänger-Themen 3
C Methoden Einen Timer einbauen, aber wie? Java Basics - Anfänger-Themen 5
B Timer Java Basics - Anfänger-Themen 25
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
S Timer / Schleifen Verständnis Problem Java Basics - Anfänger-Themen 3
S Erste Schritte Java Timer Java Basics - Anfänger-Themen 13
E Threads Timer Java Basics - Anfänger-Themen 6
Spin KI Anfänger Frage : Timer Problem Java Basics - Anfänger-Themen 6
F Prüfen ob timer läuft Java Basics - Anfänger-Themen 6
L Erste Schritte Timer und Zugriffsattribute Java Basics - Anfänger-Themen 5
M Audio + Timer Java Basics - Anfänger-Themen 12
M Methoden Timer in ActionListener aufrufen Java Basics - Anfänger-Themen 2
R Klassen MemorySpiel: brauche Timer Java Basics - Anfänger-Themen 3
D Timer in Applet Java Basics - Anfänger-Themen 2
ruerob Warum ist Timer schneller als While? Java Basics - Anfänger-Themen 9
F Java Timer Frage Java Basics - Anfänger-Themen 14
VfL_Freak Verständnisfrage zur Klasse "TIMER" Java Basics - Anfänger-Themen 7
B Timer Java Basics - Anfänger-Themen 2
S timer task problem Java Basics - Anfänger-Themen 2
C Überprüfen, ob Timer läuft Java Basics - Anfänger-Themen 3
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
W Timer erstellen Java Basics - Anfänger-Themen 2
M Timer: period während Verlauf wechseln Java Basics - Anfänger-Themen 12
M Timer unterbrechen? Wo ist mein Thread? Java Basics - Anfänger-Themen 2
L Timer innerhalb eines Threads Java Basics - Anfänger-Themen 3
P Java Timer Java Basics - Anfänger-Themen 2
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
B problem mit timer/timertask, Farbverlauf Java Basics - Anfänger-Themen 10
Piwi Timer bei Programmende beenden Java Basics - Anfänger-Themen 25
T zweiter Timer überschreibt den ersten Timer ? Java Basics - Anfänger-Themen 5
kulturfenster Problem mit javax.swing.Timer Java Basics - Anfänger-Themen 2
C Regelmäßigen Timer bei Zeitüberschreitung nacheinander abarbeiten Java Basics - Anfänger-Themen 2
J timer Java Basics - Anfänger-Themen 2
J timer Java Basics - Anfänger-Themen 2
H Timer Java Basics - Anfänger-Themen 3
dl85hej Zeitsitschleife anstatt Timer Java Basics - Anfänger-Themen 5
G Klasse mit Timer nicht beenden Java Basics - Anfänger-Themen 6
S Timer / TimerTask Frage Java Basics - Anfänger-Themen 8
S Timer bzw. TimerTask Frage Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben