diff --git a/src/Main.c b/src/Main.c index 605fa3b..c5ab0a2 100644 --- a/src/Main.c +++ b/src/Main.c @@ -4,11 +4,14 @@ #include "Spiellogik.h" #include #define N 20 +int update1(int realU[N][N],char richtung); +int speed = 0; /**Main Methode die das Spiel startet, loopt und beendet * indem die anderen Methoden/Funktionen aufgerufen werden */ int main(int argc, char ** argv){ + int quit=0; int winb=0; int looseb=0; @@ -20,12 +23,17 @@ int main(int argc, char ** argv){ char g='d'; Apfel(realU); + char richtung; + int testint; while(winb==0 && quit==0 && looseb==0){ Umgebung(realU); + richtung = getInput(); + testint = update1(realU, richtung); + - //loose=loose(realU); - winb=win(realU); + //looseb=lose(realU,richtung); + //winb=win(realU); } @@ -38,3 +46,118 @@ int main(int argc, char ** argv){ //Scoreanzeige } + + +int update1(int realU[N][N],char richtung) { + + int groesste ; + int ii = sucheXWert(realU); + int jj = sucheYWert(realU); + + if(richtung == 'u') { + if(ii == 0) { + return 1; + } + if(realU[ii + 1] [jj] == (N * N) + 1) { + realU[ii + 1] [jj] = groesste + 1; + Apfel(realU); + speed = speed + 20; + } + else { + if(!lose(realU, richtung)) { + realU[ii - 1][jj] = groesste + 1; + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (realU[i][j] != 0 && realU[i][j] != (N * N) + 1) { + realU[i][j]--; + } + } + } + } + else { + return 1; + } + } + } + else if (richtung == 'd') { + if (ii == N - 1) { + return 1; + } + if (realU[ii + 1][jj] == (N * N) + 1) { + realU[ii + 1][jj] = groesste + 1; + Apfel(realU); + speed = speed + 20; + } + else { + if (!lose(realU, richtung)) { + realU[ii + 1][jj] = groesste + 1; + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (realU[i][j] != 0 && realU[i][j] != (N * N) + 1) { + realU[i][j]--; + } + } + } + } + else { + return 1; + } + } + } + else if (richtung == 'l') { + if (jj == 0) { + return 1; + } + if (realU[ii][jj - 1] == (N * N) + 1) { + realU[ii][jj - 1] = groesste + 1; + Apfel(realU); + speed = speed + 20; + } + else { + if (!lose(realU, richtung)) { + realU[ii][jj - 1] = groesste + 1; + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (realU[i][j] != 0 && realU[i][j] != (N * N) + 1) { + realU[i][j]--; + } + } + } + } + else { + return 1; + } + } + } + else { + if (jj == N - 1) { + return 1; + } + if (realU[ii][jj + 1] == (N * N) + 1) { + realU[ii][jj + 1] = groesste + 1; + Apfel(realU); + speed = speed + 20; + } + else { + if (!lose(realU, richtung)) { + realU[ii][jj + 1] = groesste + 1; + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (realU[i][j] != 0 && realU[i][j] != (N * N) + 1) { + realU[i][j]--; + } + } + } + } + else { + return 1; + } + } + } + if (win(realU)) { + return 1; + } else { + Umgebung(realU); + return 0; + } +} diff --git a/src/Spiellogik.c b/src/Spiellogik.c index 2e1fa9a..f739910 100644 --- a/src/Spiellogik.c +++ b/src/Spiellogik.c @@ -8,7 +8,7 @@ #include #include "Umgebung.h" -int speed = 0; + //Die Funktion sucht den X-Wert der Schlange aus realU heraus und gibt //diesen zurück @@ -88,7 +88,7 @@ int lose(int realU[N][N], char richtung){ return 0; } -int update(int realU[N][N],char richtung) { +/*int update(int realU[N][N],char richtung) { int groesste ; int ii = sucheXWert(realU); @@ -200,5 +200,5 @@ int update(int realU[N][N],char richtung) { Umgebung(realU); return 0; } -} +}*/ diff --git a/src/input.h b/src/input.h index 35ed8b9..b20039c 100644 --- a/src/input.h +++ b/src/input.h @@ -2,6 +2,7 @@ #ifndef INPUT_H #define INPUT_H -void getInput(); +char getInput(); +char getTInput(char key); #endif diff --git a/start-game.sh b/start-game.sh index a4a2811..713664b 100755 --- a/start-game.sh +++ b/start-game.sh @@ -1,3 +1,3 @@ cd src -gcc Umgebung.c Spiellogik.c Main.c -o Spiel +gcc Umgebung.c Spiellogik.c input.c Main.c -o Spiel ./Spiel