Inhalt des Kurses zurück weiter

C Kurs Tag 9: Ein Spielfeld

Wir wollen eine Routine schreiben, die ein beliebiges Spielfeld darstellen kann.

Das Spielfeld sei wie folgt definiert:

Download der Datei "feld1.c"


typedef struct {

short max_x_felder;

short max_y_felder;

unsigned char *feldinhalt;

} SPIELFELD;

#define MAX_X 20

#define MAX_Y 10

unsigned char Wiese[] = {

/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 */

/* 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

/* 1 */ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0,

/* 2 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,

/* 3 */ 0, 0, 0, 0, 0, 0, 0, 0,41, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,

/* 4 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,

/* 5 */ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

/* 6 */ 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,33, 0, 0, 1, 0, 0, 0,

/* 7 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0,33, 0, 0, 0, 0, 1, 0,

/* 8 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

/* 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

};

SPIELFELD Test = { MAX_X, MAXY, Wiese };

unsigned char hole_darzustellendes_zeichen( SPIELFELD *spielfeld,

short x, short y )

{

unsigned char zeichen;

zeichen = spielfeld.feldinhalt[ (spielfeld.max_x_felder * y ) + x ];

if ( zeichen < ' ' ) /* unsichtbare Objekte */

zeichen = '.'; /* ausblenden */

return ( zeichen );

}

int spielfeld_anzeigen( SPIELFELD *spielfeld );


Hier nun die eigentliche Aufgabe:

Es ist eine Funktion zu schreiben die ein gegebenes Spielfeld auf dem Bildchirm / Terminal darstellen kann. Ein Unterprogramm ist bereits gegeben. Änderungen in den Vorgaben sind mit Begründung möglich!

zur Lösung