Brauche Hilfe bei Spiel!!!



  • Hi leute,

    habe folgenden Code:

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    const int X = 9;
    const int Y = 7;
    
    char Spielfeld[X][Y];
    char cx, cy;
    
    int xin, yin;
    
    bool val;
    
    void Zeichnen();
    void Eingabe();
    
    int main()
    {
    
    	for(int x = 0; x < X; x++)
    	{
    		for(int y = 0; y < Y; y++)
    		{
    			Spielfeld[x][y] = '.';
    		}
    	}
    
    	//////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    	do
    	{
    		do
    		{
    
    			Zeichnen();
    
    			Eingabe();
    
    			system("cls");
    
    		} while(!val);
    
    	} while(true);
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    }
    
    void Zeichnen()
    {
    
    	cout << "    1   2   3   4   5   6   7   8   9" << endl;
    	for(int y = 0; y < Y; y++)
    	{
    		cout << (char) ('A' + y);
    		for(int x = 0; x < X; x++)
    		{
    			cout << "   " << Spielfeld[x][y];
    		}
    		cout << endl;
    	}
    
    }
    
    void Eingabe()
    {
    	val = true;
    
    	cin >> cx >> cy;
    	cin.ignore();
    
    	xin = cx - '1';
    	yin = cy - 'A';
    
    	if(xin >= 0 && xin < X && yin >= 0 && yin < Y)
    	{
    		Spielfeld[xin][yin] = 'x';
    	}
    	else
    	{
    		cout << "Falsche Eingabe, erneut eingeben!" << endl;
    		Sleep(1000);
    		val = false;
    	}
    
    }
    

    Mein Problem ist:

    Wenn ich eine lange Falsche Eingabe mache, z.B. 1k2jk1j32lj3k2j3k2j3k2j3l2j3k2, dann wird "Falsche Eingabe, erneut eingeben!" voll lange angezeigt.

    Wenn ich nur 1k1k1 eingebe dann wird die vorgegebene 1 Sekunde angezeigt.

    Mann muss zuerst eine Zahl und dann Buchstabe eingeben, z.B. 5C.

    Ihr müsst den Code kopieren, damit ihr wisst was ihr meine 😉

    Hoffe ihr könnt mir helfen 🙂

    Weiß einfach nicht mehr weiter.



  • Der Code wird so lange abgearbeitet bis der Eingabepuffer mit 1k2jk1j32lj3k2j3k2j3k2j3l2j3k2 leer ist. cin entfernt die ersten beiden character und lässt den Rest bis zum nächsten durchgang stehen.



  • qweqwrtgsdxgfvdfgdg schrieb:

    Der Code wird so lange abgearbeitet bis der Eingabepuffer mit 1k2jk1j32lj3k2j3k2j3k2j3l2j3k2 leer ist. cin entfernt die ersten beiden character und lässt den Rest bis zum nächsten durchgang stehen.

    Und wie lösche ich den restlichen Puffer?

    Ist das nicht der cin.ignore() Befehl in meinem Code?



  • So entfernst du nur genau 1 Zeichen, s. http://www.cplusplus.com/reference/iostream/istream/ignore

    Die korrekt Antwort steht in Automatisches Schließen verhindern


Anmelden zum Antworten