Implementieren Sie ein 15er Schiebepuzzle unter Verwendung eines zweidimensionalen Feldes. Legen Sie sinnvolle Funktionen an, um das Programm in mehrere Teilaufgaben zu zerlegen. Für die Ausgabe können Sie, um das Layout ansprechender zu gestalten, die Header-Datei conioex.h einbinden.
Mein Code:
#define ROWS 4
#define COLS 4
void zufaelligBefuellen(int feld[][COLS]);
void feldAusgeben(int feld[][COLS]);
int spielzug(int feld[][COLS]);
int spielgeloest(int feld[][COLS]);
int main() {
int spielfeld[ROWS][COLS] = { 0 };
int nochNichtGeloest = 1;
int stein = 0;
srand(time(NULL));
zufaelligBefuellen(spielfeld);
while (nochNichtGeloest) {
feldAusgeben(spielfeld);
spielzug(spielfeld);
nochNichtGeloest = spielgeloest(spielfeld);
}
feldAusgeben(spielfeld);
return EXIT_SUCCESS;
}
/*
Name: zufaelligBefuellen
Parameter: feld[][COLS]
Description: Befüllt das Feld mit zufälligen Zahlen bis 16.
*/
void zufaelligBefuellen(int feld[][COLS]) {
int i = 0, zeile = 0, spalte = 0;
// 16 ist das freie Feld
for (i = 1; i <= ROWSCOLS; i++) {
zeile = rand() % 4;
spalte = rand() % 4;
if (feld[zeile][spalte] == 0) {
feld[zeile][spalte] = i;
}
else {
i--;
}
}
}
/*
Name: feldAusgeben
Parameter: feld[][COLS]
Description: Gibt das befüllte Feld aus.
*/
void feldAusgeben(int feld[][COLS]) {
int zeile = 0, spalte = 0;
for (zeile = 0; zeile <= ROWS - 1; zeile++) {
for (spalte = 0; spalte < COLS; spalte++) {
printf("%d\t", feld[zeile][spalte]);
}
printf("\n");
}
}
/*
Name: spielzug
Parameter: feld[][COLS]
Description: Bewegt den Stein mit der eingegebenen Nummer an die leere Stelle.
*/
int spielzug(int feld[][COLS]) {
int zeile = 0, spalte = 0;
int stein = 0;
printf("\nWelchen Stein wollen Sie bewegen? ");
scanf("%d", &stein);
if (stein == 16) {
printf("_");
}
// Überprüfen, ob Zug möglich. Wenn ja,vertauschen.
//4 if Anweisungen
}
/*
Name: spielgeloest
Parameter: feld[][COSLS]
Description: Überprüft, ob die Zahlen in der richrigen Reigenfolge stehen von 1 - 15 und zum Schluss der letzte Wert mit 16 (leeres Feld).
*/
int spielgeloest(int feld[][COLS]) {
Ich komme nicht weiter und bitte daher um Hilfe.