probleme mit 2D-Matrix



  • Hallo,

    ich habe ein Programm geschrieben, dass ein 2D Feld erzeugt ( Schiffe versenken like) und möchte dann per Tastatureingabe in das Feld ein "X" plazieren

    Quellcode

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

    jetzt ist folgendes Problem.
    Wenn ich am Anfang "1A" eingebe,dann gibt er mir das "X" an der richtigen Position an.
    Wiederhole ich jedoch meine Eingabe und gebe jetzt beispielsweiße "2A" ein,dann bringt er mir bei den Koordinaten (A, 😎 und bei (B, 1) ein "X".
    Warum bringt er mir auch bei (A, 😎 ein "X".

    bin leider total am verzweifeln 😞

    vielen Dank schonmal für die Antworten 🙂



  • Du verwechselst bei der Ausgabe schlicht die Koordinaten.

    cout << " " << Feld[i][j];

    sollte wohl einfach

    cout << " " << Feld[j][i];

    heißen.



  • Cool, sowas hab ich gebraucht 😃 für mein Tic Tac Toe Spiel!

    Mit...

    yin = toupper(cy) - toupper('a');
    

    ...kannst du mit Klein- und Großbuchstaben deine Eingabe machen.

    Mein alter Code war wirklich war nicht wirklich "schön".

    /* if (spielbrett[0][0] == ' ' && (spielzug == "A1"||spielzug == "a1")) { spielbrett[0][0] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[0][1] == ' ' && (spielzug == "B1"||spielzug == "b1")) { spielbrett[0][1] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[0][2] == ' ' && (spielzug == "C1"||spielzug == "c1")) { spielbrett[0][2] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[1][0] == ' ' && (spielzug == "A2"||spielzug == "a2")) { spielbrett[1][0] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[1][1] == ' ' && (spielzug == "B2"||spielzug == "b2")) { spielbrett[1][1] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[1][2] == ' ' && (spielzug == "C2"||spielzug == "c2")) { spielbrett[1][2] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[2][0] == ' ' && (spielzug == "A3"||spielzug == "a3")) { spielbrett[2][0] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[2][1] == ' ' && (spielzug == "B3"||spielzug == "b3")) { spielbrett[2][1] = spielerzeichen; spielzug_ok = false; }
            if (spielbrett[2][2] == ' ' && (spielzug == "C3"||spielzug == "c3")) { spielbrett[2][2] = spielerzeichen; spielzug_ok = false; }
            */
    

    Big thx 😃



  • danke für die Antworten 🙂
    hab mir schon Gedacht,dass ich irgendne Dummheit überseh^^


Anmelden zum Antworten