Skip to content
Snippets Groups Projects
Commit 642ebc1f authored by Janos's avatar Janos
Browse files

Spiel wir jetzt nicht mehr mit exit(),sondern korrekt beendet

parent 891f3e34
No related branches found
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@ int playerhighscore;
//V: enum vehicle exists with 4 correct themes, Renderer exists
//N: renderer still exists, all objects are still exist or have been correctly removed
//E: game has been played for one round, which was at least 16ms long
void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
bool gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
SDL_Event e;
int speed = 0;
......@@ -30,6 +30,7 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
bool start_game = false;
//ends game if game over criteria have been met
bool end_game = false;
bool quit_game = false;
//used to implement rows and allows to remove rows out of view
struct LinkedList *map = init_map(theme);
......@@ -48,7 +49,8 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
switch (e.type){
// if user closes window exit frees all used space
case SDL_QUIT:
exit(0);
end_game = true;
quit_game = true;
// any key input starts game and takes player input
case SDL_KEYDOWN:
start_game = true;
......@@ -72,7 +74,8 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
// Die Map wird bewegt und gezeichnet (inklusive Fahrzeuge)
// Bei einer ungültigen Kollision wird das Spiel beendet
end_game = move_map(theme,speed,map,renderer);
if (!end_game)
end_game = move_map(theme,speed,map,renderer);
// Wenn der Spieler nicht im Fenster zu sehen ist, dann wird das Spiel beendet
if(player->y >= SCREEN_HEIGHT || player->x >=SCREEN_WIDTH || player->x <= -60){
......@@ -98,5 +101,5 @@ void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
write_table(theme);
//wir löschen die map
free_map(map);
return;
return(quit_game);
}
......@@ -22,6 +22,6 @@ extern int playerhighscore;
//Declaration of functions
void gameLoop(enum vehicle,SDL_Renderer*);
bool gameLoop(enum vehicle,SDL_Renderer*);
#endif
\ No newline at end of file
......@@ -48,7 +48,6 @@ int main(void) {
int theme;
bool change_Map = true;
while (true) {
if (change_Map){
......@@ -57,7 +56,8 @@ int main(void) {
if (theme == (-1)){ // Spiel wurde geschlossen oder es kam zu einem Fehler
break;
}
gameLoop(theme,renderer);
if (gameLoop(theme,renderer))
break;
change_Map = end_screen(renderer);
}
......
......@@ -34,7 +34,7 @@ struct LinkedList* init_map(enum vehicle theme){
n->next = m;
n = m;
for(int i = 0;i<10;i++){
for(int i = 0;i<10000;i++){
struct Row *m;
......@@ -125,7 +125,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere
return(1);
}
}
if (cur->next == NULL){
break;
}
......
......@@ -69,7 +69,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){
switch (event.type) {
case SDL_QUIT:
exit(0);
return(-1);
case SDL_MOUSEBUTTONDOWN:
if (0<=event.button.y && event.button.y<=200){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment