Schifferversenken problem beim Schiffe setzen



  • Ich programmiere grade Schifferversenken und bin grade an einem Punkt angelangt, wo ich nicht mehr weiter weiß. Und zwar wie man als Spieler die Schiffe setzen kann.

    //Schiff Anzeige
    	//
    	system ("cls");
    
    	cout << "Setzen sie die Schiffe";
    	cout << "Es gibt:\n";
    	cout << "Ein Schlachtschiff (5 Felder)\n";
    	cout << "Zwei Zerstoerer (4 Felder)\n";
    	cout << "Drei Kreuzer (3 Felder)\n";
    	cout << "Vier U-Boote (2 Felder)\n\n\n\n";
    
    	//Setzte Schlachtschiff
    	//
    	do
    	{
    
    	cout << "Schlachtschiff (5 Felder): \n\n";
    
    	cout << "Anfangskoordinaten Eingeben: \n";
    	cout << "x-> ";
    
    	cin >> m_xPos;
    	if (m_xPos <1 || m_xPos >10)
    		Unterbrecher = false;
    
    	cout << "y-> ";
    	cin >> m_yPos;
    	if (m_yPos <1 || m_yPos >10)
    		Unterbrecher = false;
    
    	cout << "Nach [N]orden, [O]sten, [S]ueden oder [W]esten ausrichten?\n";
    	cin >> Lage;
    
    	//=====Switch-case======//
    
    	switch (Lage)
    	{
    
    	case ('n'): 
    	case ('N'):
    		{
    			for (int n=0; n<5; n++)
    			{
    				m_yPos -= n;
    				if (m_yPos<1 || m_yPos>10)
    				{
    					cout << "Fehler beim Setzen der Koordinate\n";
    					Unterbrecher = false;
    				}break;
    
    				m_2dFeld[m_xPos][m_yPos] = 2;
    			}
    			Unterbrecher = true;
    		}break;
    

    Hier kommt aber immer ein Fehler, weil die do while Schleife nicht wiederhohlt wird, wenn die Koordinaten net stimmen 😞
    Kann mir einer helfen oder eine andere Lösung für das Problem sagen?



  • }
    	}while (Unterbrecher == false);
    }
    

    sry des stück fehlte noch 😉



  • for (int n=0; n<5; n++)
    {
        m_yPos -= n;
        if (m_yPos<1 || m_yPos>10)
        {
            cout << "Fehler beim Setzen der Koordinate\n";
            Unterbrecher = false;
        }
        break;
    
        m_2dFeld[m_xPos][m_yPos] = 2;
    }
    Unterbrecher = true;
    

    Break beendet die for-Schleife IMMER...

    Unterbrecher wird außerdem IMMER true

    --> Schleife wird IMMER beendet...

    Außerdem, wie willst du das Spiel grafisch darstellen ???



  • Nein nur in der Konsole, also wenn m_2dFeld[...][...] = 2, dann ist da ein Schiff, falls 1 dann nichts usw.



  • Könntest du mir mal dein ganzes Programm geben ?


Anmelden zum Antworten