Suche
Suche Menü

Lösung Teil 2

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;
}