bermuda Spiel c++



  • Könnte mir jemand vllt. sagen wo hier der Fehler ist:

    #include <iostream>
    
    using namespace std;
    
    const int X=9;
    const int Y=7;
    
    int main ()
    {
    	char Spielfeld [X] [Y];
    	int x, y;
    	char cx, cy;
    
    	for (x=0; x<X;x++)
    	{
    		for (y=0; y<Y; y++)
    		{
    			Spielfeld [x] [y] = '.';
    		}
    	}
    	bool SchleifenEnde=false;
    	int xin, yin;
    
    	do
    	{
    		cout << "    1 2 3 4 5 6 7 8 9"<< endl;
    		for(y=0; y<Y; y++)
    		{
    			cout << (char)('A'+y) << "   ";
    
    			for (x=0; x<X; x++)
    			{
    				cout << "   "<<Spielfeld[x] [y];
    			}
    			cout << endl;
    		}
    		cin >> cx >> cy;
    		xin = cx - '1';
    		yin = cy - 'A';
    
    		if (xin>=0 && xin<9 && yin >=0 && yin<7)
    		{
    			Spielfeld [xin][yin] = 'x';
    		}
    		else
    		{
    			SchleifenEnde=true;
    		}
    		while (!SchleifenEnde);
    	}
    
    	return 0;
    }
    

    Danke schonmal im vorraus für die Antworten.



  • Da



  • Zeile 49/50 sieht auf den ersten Blick falsch aus.

    Zum Glück haste so ordentlich eingerückt, daß man es gleich sieht.



  • ich habs



  • Ich versteh eine Sache nicht ganz, und zwar wie die Buchstaben (y Koordinate) zu stande kommen.

    Ich weiss es hat was mit :

    for (y=0; y<Y; y++)
     {
    cout << (char)('A'+y) << "   ";
     }
    

    Doch verstehen tuh ich das nicht ganz könnte das mir jmd vllt erklären?



  • 'A' = 65
    'B' = 66
    'C' = 67
    ...

    Google mal nach ASCII-Tabelle



  • > Voraus <<< ! 😃 *klugscheiß-modus aus*



  • eine sache ist mir unklar das wurde nicht in meinem buch erwähnt und zwar das

    (char)
    


  • Das ist ein (C-style) cast in einen char. Das bewirkt, dass ein Zeichen und keine Zahl ausgegeben wird.
    Es wird also eine andere Funktion / ein anderer operator<< aufgerufen.
    Denn operator<< ist überladen für verschiedene Parametertypen.

    Beispiel:

    void func (char c) { std::cout << "func (char)"; }
    void func (int i) { std::cout << "func (int)"; }
    
    int main()
    {
        func (48); // ruft func(int) auf
        func ((char)48); // wandelt 48 von int zu char um (ruft also func(char) auf)
        func ('A'); // ruft func(char) auf
    }
    

    Weitere casts (eingeführt durch C++):
    static_cast <ThemenverwandT> (Var)
    const_cast <T> (Var)
    reinterpret_cast <T*> (&Var)
    dynamic_cast <T*> (&Var)

    Das kommt vielleicht später. casts sind jetzt nicht das was man einem Anfänger als erstes zeigen sollte. Ich caste so gut wie nie.

    EDIT: Überladung und Operatorüberladung kommt vermutlich auch irgendwo weiter hinten.


Anmelden zum Antworten