JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=52188e4b1c2366760f768d5414042558Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Konsolenanwenung - Weiter mit Enter-Taste

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 10:36    Titel: Konsolenanwenung - Weiter mit Enter-Taste Antworten mit Zitat

Hi,
________

Frage1:
________
hier ist gleich wieder eine Frage für mein Konsolenspiel Rolling Eyes
Wie kann ich es realisieren, dass man nur Enter drücken muss, damit es weitergeht (weil ich halt eine Pause brauche).
Hab das momentan so gelöst, das man per
Code:

cin >> IntegerWert;

"angehalten" wird, jedoch eine Zahl eingeben muss, dass es weitergeht, was natürlich nur eine schlechte Notlösung darstellt.

In älteren Beiträgen wurde irgendetwas mit cin.get(); gesagt, dass man das dafür "missbrauchen" kann? Aber wie genau? Ich hab da leider nichts zustande bekommen.
Oder gibt es bessere Alternativen

________

Frage2:
________
In meinem Programm kommen Zahleneingaben (cin >> short/int-Variable;) vor, aber wenn man keine Zahl sondern zum Bsp. einen Buchstaben eingibt, dann ... ihr kennt das sicherlich.
Man könnte das umständlich so machen, dass man die Eingabe einer char-Variable (Feld) zuweißt, dann überprüft ob es Zeichen von 0-9 sind und wenn das der Fall ist, wieder in short/int umwandeln und somit den Fehler abfangen.

Idea
Aber da das Problem meiner Meinung nach bestimmt sehr bekannt ist und häufiger vorkommt, dachte ich mir, dass es dafür vielleicht schon irgendetwas gibt, dass ungültige Zeicheneingaben bei Variablen, die nur Zahlen speichern können, nicht zulässt. Oder ?
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 12:46    Titel: Antworten mit Zitat

Zu Frage 1:
while(!kbhit());

So gings damals zu DOS Zeiten... sollte für Konsolenanwendungen aber auch noch funktionieren.

Zu Frage 2:
Du könntest erst einen String einlesen und dann mit atoi() umwandeln und guggn, ob er korrekte Werte enthält(atoi() gibt 0 zurück, wenn was Falsches im String steht).
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 14:01    Titel: Antworten mit Zitat

Danke für die Antwort, jedoch funktioniert
Code:

while(!kbhit());

nicht.
->> undeclared identifier.

Hab dann halt mal aus Logik versucht, einige headderdateien wie windows.h, etc.. einzubinden, hat aber nicht geholfen. Embarassed
Gibt es eine passende headderdatei?

Ansonsten muss ich ja auf was anderes ausweichen. Rolling Eyes


Zitat:

Du könntest erst einen String einlesen und dann mit atoi() umwandeln und guggn, ob er korrekte Werte enthält(atoi() gibt 0 zurück, wenn was Falsches im String steht).

Und was ist in einem String "falsch"? Wink
Daraus kann ich mir höchstens vorstellen das man bei atoi festlegen kann, was falsch und nicht falsch ist?

Oder meintest du, dass atoi generell überprüft ob es sich dabei nur um Zahlen handelt?

Ich werd mal in der MSDN nach atoi() guggn, mal schaun ob die mich da schlau machen kann Wink[/quote]
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 14:07    Titel: Antworten mit Zitat

> Gibt es eine passende headderdatei?

Gugg in der MSDN! ;P

> Oder meintest du, dass atoi generell überprüft ob es sich dabei nur um
> Zahlen handelt?

Wenn es keine Zahl ist, wird 0 zurückgegeben.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 14:11    Titel: Antworten mit Zitat

Danke, hab
conio.h
in der MSDN gefunden und es funzt Smile

atoi werd ich dann gleich mal ausprobiern und hier dann bescheid geben, ob ich damit erfolgreich arbeiten konnte Wink
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 19:49    Titel: Antworten mit Zitat

Probiers ma aus mit
Code:
system("pause")

Dann wird angezeigt
Drücken Sie eine beliebige Taste ...
und das Programm wartet genau darauf.[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 20:59    Titel: Antworten mit Zitat

Danke, das
system("pause");
hat sogar einen Vorteil, der Tastendruck wird nicht für die nächste Eingabe verwendet, was ich bemängelt habe, weil dann bei der Eingabe schon zwei Absätze gemacht waren, etc..

Passt sich das system("pause"); der Sprache automatisch an, also wenn das Programm jetzt auf einem Rechner gestartet wird, der mit englischer Version wäre, wäre es englisch? Weil ich möchte am Ende noch übersetzte Versionen von meinem mehr oder weniger interessanten Spiel veröffentlichen. Smile


So nebenbei:
Ich konnte in der MSDN nichts über system("");-Befehle finden, verwende ich nur falsche Stichwörter oder stehn die da net drin und sind wo anderst zu finden? Rolling Eyes
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 20.06.2003, 22:51    Titel: Antworten mit Zitat

1. Du kannst auch _getch() benutzen (benötigt conio.h)

2. Folgender Code sichert, dass Buchstaben statt Zahlen in Eingaben nicht zu unerwünschten Ergebnissen führen:
Code:
int nZahl=0;

do
{
    bool bValid=true;

    cin >> nZahl;

    if (cin.fail())
    {
        cin.clear();
        cin.ignore(80,'\n');
        cout << "fehler in eingabe" << endl;
        bValid=false;
    }
}
while (!bValid);

_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 21.06.2003, 17:15    Titel: Antworten mit Zitat

Zu deiner ersten Frage:

Ja, der Befehl passt sich der Sprache an.

Zur zweiten:

In der MSDN steht schon was über system().
System funktioniert so, dass du als Parameter irgendeinen Befehl übergibst, den du auch so im Konsolenfenster eingeben könntest, der dann ausgeführt wird.
Probier doch mal aus: pause eingeben und dann Enter drücken.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum