From fe1dae6d0251002421663f43ee2c68a159e7ee80 Mon Sep 17 00:00:00 2001 From: Jannis Date: Mon, 6 Feb 2023 10:10:52 +0100 Subject: [PATCH] Umstrunktorierung Spiellogik --- src/Spiellogik.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ src/Umgebung.c | 61 ------------------------------------------ 2 files changed, 69 insertions(+), 61 deletions(-) create mode 100644 src/Spiellogik.c diff --git a/src/Spiellogik.c b/src/Spiellogik.c new file mode 100644 index 0000000..1c44c4d --- /dev/null +++ b/src/Spiellogik.c @@ -0,0 +1,69 @@ +#define _CRT_SECURE_NO_WARNINGS // to write faster +#define re return +#define N 20 // size of Play Field +#include +#include +#include +#include +#include + + +int win(int realU[N][N]){ + int groesste = 0; + for(int i = 0; i < N; i++){ + for(int j = 0; j < N; j++){ + if(realU[i][j] > groesste && realU[i][j] != (N * N ) + 1){ + groesste = realU[i][j]; + } + } + } + if(groesste == (N * N) - 1){ + return 1; + } + else{ + return 0; + } +} + +//Die Funktion überprüft, ob das Feld bereits vom Schlangenkoerper besetzt ist. +int feldFrei(int realU[N][N], int ii, int jj){ + if (realU[ii][jj] == 0) + { + return 1; + } + return 0; +} + +int lose(int realU[N][N], char richtung){ + int groesste = 0; //Suche den Kopf der Schlange + int ii, jj; + for(int i = 0; i < N ; i++){ + for(int j = 0; j < N; j++){ + if (realU[i][j] > groesste && realU[i][j] != (N * N) + 1){ + groesste = realU[i][j]; + ii = i; + jj = j; + } + } + } + + switch (richtung){ + case 'u': //Ueberpruefe ob eine Bewegung nach oben moeglich ist + if(realU[ii - 1][jj] != (N* N) + 1 && feldFrei(realU, ii-1, jj) == 1){ + return 1;break; + } + case 'd': //Ueberpruefe ob eine Bewegung nach unten moeglich ist + if(realU[ii + 1][jj] != N || feldFrei(realU, ii+1, jj) == 1){ + return 1;break; + } + case 'l': //Ueberpruefe ob eine Bewegung nach links moeglich ist + if(realU[ii][jj-1] != 0 || feldFrei(realU, ii, jj-1) == 1){ + return 1;break; + } + case 'r': //Ueberpruefe ob eine Bewegung nach rechts moeglich ist + if(realU[ii][jj + 1] > N || feldFrei(realU, ii, jj+1) == 1){ + return 1;break; + } + } + return 0; +} \ No newline at end of file diff --git a/src/Umgebung.c b/src/Umgebung.c index 66dfab4..844b122 100644 --- a/src/Umgebung.c +++ b/src/Umgebung.c @@ -145,65 +145,4 @@ void Apfel(int realU[N][N]){ } } -int win(int realU[N][N]){ - int groesste = 0; - for(int i = 0; i < N; i++){ - for(int j = 0; j < N; j++){ - if(realU[i][j] > groesste && realU[i][j] != (N * N ) + 1){ - groesste = realU[i][j]; - } - } - } - if(groesste == (N * N) - 1){ - return 1; - } - else{ - return 0; - } -} - -//Die Funktion überprüft, ob das Feld bereits vom Schlangenkoerper besetzt ist. -int feldFrei(int realU[N][N], int ii, int jj){ - if (realU[ii][jj] == 0) - { - return 1; - } - return 0; -} -int lose(int realU[N][N], char richtung){ - int groesste = 0; //Suche den Kopf der Schlange - int ii, jj; - for(int i = 0; i < N ; i++){ - for(int j = 0; j < N; j++){ - if (realU[i][j] > groesste && realU[i][j] != (N * N) + 1){ - groesste = realU[i][j]; - ii = i; - jj = j; - } - } - } - - switch (richtung){ - case 'u': //Ueberpruefe ob eine Bewegung nach oben moeglich ist - if(realU[ii - 1][jj] != (N* N) + 1 && feldFrei(realU, ii-1, jj) == 1){ - return 1;break; - } - case 'd': //Ueberpruefe ob eine Bewegung nach unten moeglich ist - if(realU[ii + 1][jj] != N || feldFrei(realU, ii+1, jj) == 1){ - return 1;break; - } - case 'l': //Ueberpruefe ob eine Bewegung nach links moeglich ist - if(realU[ii][jj-1] != 0 || feldFrei(realU, ii, jj-1) == 1){ - return 1;break; - } - case 'r': //Ueberpruefe ob eine Bewegung nach rechts moeglich ist - if(realU[ii][jj + 1] > N || feldFrei(realU, ii, jj+1) == 1){ - return 1;break; - } - } - - return 0; - - -}