000
04.06.2004, 14:14 Uhr
DaReal
|
Also ich bin noch ein ziehmlicher noob was das c++ programmieren angeht, deswegen bitte nicht schlagen wenn das Problem zu trivial ist ^^ !
Also ich hab folgende Funktion in meiner bbmmf.a, die auch so in meiner bbmmf.h deklariert ist:
C++: |
void MoeglicheFelder(signed short pos_x, signed short pos_y, struct feld spielfeld [SIZE_Y][SIZE_X], unsigned short moeglichefelder_x_koordinaten[8], unsigned short moeglichefelder_y_koordinaten[8]) { signed char Nachbarfelder_X_Koordinaten [] = {-1, 1, 1, -2, 2, -2, 1, 1}; signed char Nachbarfelder_Y_Koordinaten [] = {-1, 0, 0, 1, 0, 1, 0, 0}; for (char i = 0; i < 8; i++) { pos_x = pos_x + Nachbarfelder_X_Koordinaten [i]; pos_y = pos_y + Nachbarfelder_Y_Koordinaten [i]; if (pos_x >= 0 && pos_x < 15 && pos_y < 26 && pos_y >= 0 && spielfeld[pos_y][pos_x].SpielerImFeld == 0 ) { for (char j = 0; j < 8; j++) { moeglichefelder_x_koordinaten [j] = pos_x; moeglichefelder_y_koordinaten [j] = pos_y; } } } }
|
und in meiner main hab ich diesen code der die Funktion aufruft und dann die Werte der Funktion ausgeben soll:
C++: |
MoeglicheFelder(pos_x, pos_y, spielfeld, moeglichefelder_x_koordinaten, moeglichefelder_y_koordinaten); for (char j = 0; j < 8; j++) { cout << "[" << moeglichefelder_x_koordinaten [j] << "] " << "[" << moeglichefelder_y_koordinaten [j] << "]" << endl; }
|
So jetzt zu meinem Problem: Ich will mit der Funktion berechnen lassen, in welche Felder sich ein Spieler der sich z.B. auf pos_x = 5 pos_y = 5 befindet, bewegen kann. Meiner Meinung nach müsste der Code mir bei 5,5 das ausgeben:
[4][4] [5][4] [6][4] [4][5] [6][5] [4][6] [5][6] [6][6]
Tut er aber nicht !! Er gibt mir 8 mal hintereinander die [6][6] aus, also die letzte pos_x und die letzte pos_y die an moeglichefelder_x_koordinaten und moeglichefelder_y_koordinaten übergeben wurde. Jetzt meine Frage : Warum ? |