Ein Lösungsvorschlag zur Übung mit Feldern Teil 2.
#include<stdio.h>
void printField(int *field);
void move(int *field, int *posX, int *posY, char zug);
int main() {
int field[8][8] = { 0 }, posX=0, posY=0;
char zug;
// setzen der Spielfigur
field[posY][posX] = 1;
printf("\nBeenden mit x\n");
do {
printField(&field[0][0]);
printf("\nZug [w hoch, a links, s runter, d rechts]: ");
scanf("%c", &zug);
move(&field[0][0], &posX, &posY, zug);
}while(zug != 'x');
return 0;
}
// Ausgabe Spielfeld
void printField(int *field) {
printf("\n");
int i, j;
// Schleife fuer Zeilen, Y-Achse
for(i=0; i<8; i++) {
// Schleife fuer Spalten, X-Achse
for(j=0; j<8; j++) {
printf("%d ", *(field+i*8+j));
}
printf("\n");
}
}
// Spielfigur bewegen
void move(int *field, int *posX, int *posY, char zug) {
// alte Position loeschen
*(field + *posY * 8 + *posX) = 0;
// neue Position bestimmen
switch(zug) {
case 'w': (*posY)--; break;
case 'a': (*posX)--; break;
case 's': (*posY)++; break;
case 'd': (*posX)++; break;
}
// Grenzueberschreitung pruefen
if(*posX < 0) *posX = 7;
if(*posX > 7) *posX = 0;
if(*posY < 0) *posY = 7;
if(*posY > 7) *posY = 0;
// neue Position setzen
*(field + *posY * 8 + *posX) = 1;
}
