Mac10goesBRRRT
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 434 additions and 0 deletions
@ -0,0 +1,105 @@ |
|||
#include <stdio.h> |
|||
#include <stdlib.h> |
|||
#include <string.h> |
|||
#include <time.h> |
|||
#include <stdbool.h> |
|||
#include "labyrinth.h" |
|||
#include "userinput.h" |
|||
|
|||
|
|||
|
|||
int printlabyrinth(lab laby, int hoehe, int breite){ |
|||
|
|||
for(int i = 0; i < hoehe; i++){ |
|||
for(int j = 0; j < breite; j++){ |
|||
printf("%c ", laby[i][j]); |
|||
} |
|||
printf("\n"); |
|||
} |
|||
printf("\n"); |
|||
printf("How many steps do you need to reach your goal?\n"); |
|||
printf("\n"); |
|||
return 0; |
|||
} |
|||
|
|||
|
|||
void wegsuchen(lab laby, bool* done, int y, int x, int ziely, int zielx){ |
|||
|
|||
laby[y][x] = MARKIERT; |
|||
|
|||
|
|||
if(x == zielx && y == ziely){ |
|||
*done = true; |
|||
} |
|||
else{ |
|||
if (!*done && y + 1 <= ziely && laby[y+1][x] == WEG){ |
|||
wegsuchen(laby, done, y + 1, x, ziely, zielx); |
|||
} |
|||
if (!*done && x + 1 <= zielx && laby[y][x+1] == WEG){ |
|||
wegsuchen(laby, done, y, x + 1, ziely, zielx); |
|||
} |
|||
if (!*done && y - 1 >= 0 && laby[y-1][x] == WEG){ // oben |
|||
wegsuchen(laby, done, y - 1, x, ziely, zielx); |
|||
} |
|||
if (!*done && x - 1 >= 0 && laby[y][x-1] == WEG){ // links |
|||
wegsuchen(laby, done, y, x - 1, ziely, zielx); |
|||
} |
|||
if (!*done){ |
|||
laby[y][x] = WEG; |
|||
} |
|||
} |
|||
} |
|||
|
|||
void labyrinthschritte(lab laby, int hoehe, int breite, int schritte, int versuche){ |
|||
|
|||
int antwort = 0; |
|||
|
|||
|
|||
antwort = userInput(); |
|||
|
|||
if(antwort == schritte){ |
|||
printf("Correct you need %d steps.\n", schritte); |
|||
|
|||
for(int i = 0; i < hoehe; i++){ |
|||
for(int j = 0; j < breite; j++){ |
|||
printf("%c ", laby[i][j]); |
|||
} |
|||
printf("\n"); |
|||
} |
|||
printf("\n"); |
|||
} |
|||
else{ |
|||
if(versuche != 3){ |
|||
printf("Your answer is wrong. Try again.\n"); |
|||
versuche = versuche + 1; |
|||
labyrinthschritte(laby, hoehe, breite, schritte, versuche); //if schleife für 3 versuche |
|||
} |
|||
else{ |
|||
printf("You lost.\n"); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void labyrinthauswahl(int auswahl){ |
|||
|
|||
printf("Bitte wählen Sie ein Labyrinth aus\n"); |
|||
|
|||
switch (auswahl){ |
|||
case 1: |
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
}; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
printlabyrinth(laby, hoehe, breite); |
|||
break; |
|||
|
|||
default: |
|||
break; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
#ifndef LABYRINTH_H |
|||
#define LABYRINTH_H |
|||
|
|||
#include <stdbool.h> |
|||
|
|||
#define MAXZEILEN 10 |
|||
#define MAXSPALTEN 10 |
|||
#define WEG '0' |
|||
#define MARKIERT 'X' |
|||
|
|||
typedef char lab[MAXZEILEN][MAXSPALTEN]; |
|||
int printlabyrinth(lab laby, int hoehe, int breite); |
|||
void wegsuchen(lab laby, bool* done, int y, int x, int ziely, int zielx); |
|||
void labyrinthschritte(lab laby, int hoehe, int breite, int schritte, int versuche); |
|||
void labyrinthauswahl(int auswahl); |
|||
#endif |
@ -0,0 +1,313 @@ |
|||
#ifdef TEST |
|||
#include "unity.h" |
|||
//in example.h wird die Funktion deklariert |
|||
#include "labyrinth.h" |
|||
#include <stdbool.h> |
|||
#include "userinput.h" |
|||
#include "mock_userinput.h" |
|||
|
|||
//Vor- bzw. Nachbereitung |
|||
void setUp(void) |
|||
{ |
|||
} |
|||
|
|||
void tearDown(void) |
|||
{ |
|||
} |
|||
|
|||
|
|||
void test_runExampleTest(void) |
|||
{ |
|||
int result; |
|||
int input = 1; |
|||
int hoehe = 3; |
|||
int breite = 3; |
|||
lab laby = { |
|||
{'1', '2', '3'}, |
|||
{'4', '5', '6'}, |
|||
{'7', '8', '9'}, |
|||
}; |
|||
|
|||
|
|||
result = printlabyrinth(laby, hoehe, breite); |
|||
|
|||
|
|||
TEST_ASSERT_EQUAL_INT(0, result); |
|||
} |
|||
|
|||
|
|||
void test_LabyrinthAmZielAngekommen(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 3; |
|||
int breite = 3; |
|||
lab laby = { |
|||
{'1', '2', '3'}, |
|||
{'4', '5', '6'}, |
|||
{'7', '8', '9'}, |
|||
}; |
|||
|
|||
wegsuchen(laby, &result, 0, 0, 0, 0); |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
|
|||
|
|||
} |
|||
|
|||
void test_LabyrinthAmZielNichtAngekommen(void){ |
|||
|
|||
bool result = 0; |
|||
int input = 1; |
|||
int hoehe = 3; |
|||
int breite = 3; |
|||
lab laby = { |
|||
{'0', '1', '1'}, |
|||
{'1', '0', '1'}, |
|||
{'1', '1', '1'}, |
|||
}; |
|||
|
|||
wegsuchen(laby, &result, 1, 1, 0, 0); |
|||
TEST_ASSERT_EQUAL_INT(0, result); |
|||
|
|||
|
|||
} |
|||
|
|||
void test_LabyrinthMarkiert(void){ |
|||
|
|||
char result; |
|||
bool fertig; |
|||
int input = 1; |
|||
int hoehe = 3; |
|||
int breite = 3; |
|||
lab laby = { |
|||
{'0', '1', '1'}, |
|||
{'1', '1', '1'}, |
|||
{'1', '1', '1'}, |
|||
}; |
|||
|
|||
|
|||
wegsuchen(laby, &fertig, 0, 0, 0, 0); |
|||
result = laby[0][0]; |
|||
printlabyrinth(laby, hoehe, breite); |
|||
TEST_ASSERT_EQUAL_CHAR('X', result); |
|||
|
|||
|
|||
} |
|||
|
|||
void test_LabyrinthUnten(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 3; |
|||
int breite = 3; |
|||
lab laby = { |
|||
{'0', '1', '1'}, |
|||
{'0', '1', '1'}, |
|||
{'0', '1', '1'}, |
|||
}; |
|||
|
|||
wegsuchen(laby, &result, 0, 0, 2, 0); |
|||
printlabyrinth(laby, hoehe, breite); |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
|
|||
|
|||
} |
|||
|
|||
void test_LabyrinthRechts(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 3; |
|||
int breite = 3; |
|||
lab laby = { |
|||
{'0', '0', '0'}, |
|||
{'1', '1', '1'}, |
|||
{'1', '1', '1'}, |
|||
}; |
|||
|
|||
wegsuchen(laby, &result, 0, 0, 0, 2); |
|||
printlabyrinth(laby, hoehe, breite); |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
} |
|||
|
|||
|
|||
void test_LabyrinthOben(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 5; |
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '1', '0'}, |
|||
{'0', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
wegsuchen(laby, &result, 0, 0, 4, 4); |
|||
printlabyrinth(laby, hoehe, breite); |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
} |
|||
|
|||
|
|||
void test_LabyrinthLinks(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
wegsuchen(laby, &result, 0, 0, 4, 5); |
|||
printlabyrinth(laby, hoehe, breite); |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
} |
|||
|
|||
void test_LabyrinthVerzweigung(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
|
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
|
|||
wegsuchen(laby, &result, 0, 0, 4, 5); |
|||
printlabyrinth(laby, hoehe, breite); |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
} |
|||
|
|||
|
|||
void test_LabyrinthSchritte(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
int schritte = 14; |
|||
int versuche = 0; |
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
printlabyrinth(laby, hoehe, breite); //hier in die funktion die print frage machen |
|||
wegsuchen(laby, &result, 0, 0, 4, 5); |
|||
|
|||
userInput_ExpectAndReturn(14); |
|||
|
|||
labyrinthschritte(laby, hoehe, breite, schritte, versuche); //die geliche funktion nur mit dem if vergleich und userinput |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
|
|||
} |
|||
|
|||
void test_LabyrinthSchritteVerloren(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
int schritte = 14; |
|||
int versuche = 0; |
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
printlabyrinth(laby, hoehe, breite); //hier in die funktion die print frage machen |
|||
wegsuchen(laby, &result, 0, 0, 4, 5); |
|||
|
|||
userInput_ExpectAndReturn(5); |
|||
userInput_ExpectAndReturn(8); |
|||
userInput_ExpectAndReturn(10); |
|||
userInput_ExpectAndReturn(9); |
|||
|
|||
labyrinthschritte(laby, hoehe, breite, schritte, versuche); //die geliche funktion nur mit dem if vergleich und userinput |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
|
|||
} |
|||
|
|||
void test_LabyrinthSchritteBeiDreiGewonnen(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
int schritte = 14; |
|||
int versuche = 0; |
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
printlabyrinth(laby, hoehe, breite); //hier in die funktion die print frage machen |
|||
wegsuchen(laby, &result, 0, 0, 4, 5); |
|||
|
|||
userInput_ExpectAndReturn(5); |
|||
userInput_ExpectAndReturn(8); |
|||
userInput_ExpectAndReturn(10); |
|||
userInput_ExpectAndReturn(14); |
|||
|
|||
labyrinthschritte(laby, hoehe, breite, schritte, versuche); //die geliche funktion nur mit dem if vergleich und userinput |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
|
|||
} |
|||
|
|||
void test_LabyrinthAuswahl(void){ |
|||
|
|||
bool result; |
|||
int input = 1; |
|||
int hoehe = 5; |
|||
int breite = 6; |
|||
int schritte = 14; |
|||
int versuche = 0; |
|||
int auswahl = 1; |
|||
|
|||
|
|||
|
|||
lab laby = { |
|||
{'0', '1', '0', '0', '0', '0'}, |
|||
{'0', '1', '0', '1', '1', '0'}, |
|||
{'0', '0', '0', '0', '1', '0'}, |
|||
{'0', '1', '1', '0', '1', '0'}, |
|||
{'0', '1', '0', '0', '1', '0'}, |
|||
}; |
|||
|
|||
labyrinthauswahl(auswahl); |
|||
//printlabyrinth(laby, hoehe, breite); //hier in die funktion die print frage machen |
|||
wegsuchen(laby, &result, 0, 0, 4, 5); |
|||
|
|||
userInput_ExpectAndReturn(5); |
|||
userInput_ExpectAndReturn(8); |
|||
userInput_ExpectAndReturn(10); |
|||
userInput_ExpectAndReturn(14); |
|||
|
|||
labyrinthschritte(laby, hoehe, breite, schritte, versuche); //die geliche funktion nur mit dem if vergleich und userinput |
|||
TEST_ASSERT_EQUAL_INT(1, result); |
|||
|
|||
} |
|||
|
|||
#endif // TEST |
Write
Preview
Loading…
Cancel
Save
Reference in new issue