diff --git a/bird.c b/bird.c index f0a8cd55784c76b6a6c23e610141dd53786ec3c0..860a089d61d0cf373fa84d8f35b24a648b31ba7a 100644 --- a/bird.c +++ b/bird.c @@ -7,9 +7,9 @@ struct bird* init_bird(int x_pos,int y_pos){ perror("kein Speicheeplatz"); } - b->speed = -3;//(((rand() % 2)*2) -1)*3 + b->speed = -3; b->x_pos = x_pos; - b->y_pos = y_pos;//(rand() % 10) * ROW_SIZE + b->y_pos = y_pos; b->height = 80; b->width = 80 ; diff --git a/gameLoop.c b/gameLoop.c index 5cb97f2d8ebb26bbef063c0f40eef6de26a64aa8..f93e828fc340907ed7d761225856f7a392bf2244 100644 --- a/gameLoop.c +++ b/gameLoop.c @@ -87,9 +87,6 @@ bool gameLoop(enum vehicle theme,SDL_Renderer* renderer) { } - //Position des Spielers wird aktualisiert und gezeichnet - update_character(speed, renderer); - //Der aktuelle Score wird oben rechts angezeigt paste_score (renderer); diff --git a/images/player.png b/images/player.png new file mode 100644 index 0000000000000000000000000000000000000000..f10028a8b43bf999c26487085d98725484e512b9 Binary files /dev/null and b/images/player.png differ diff --git a/init.c b/init.c index 11f1d59546a3d562d75bca70f329ee5bf580def5..464850e0ef954cb10736f51ac094c03bcec6fa01 100644 --- a/init.c +++ b/init.c @@ -109,7 +109,7 @@ int init_images(SDL_Renderer* renderer) { img_trainL = IMG_LoadTexture(renderer,"images/trainL.png"); // Quelle: https://www.pinterest.de/pin/645492559082244309/ img_trainR = IMG_LoadTexture(renderer,"images/trainR.png"); // Quelle: https://www.pinterest.de/pin/645492559082244309/ img_plank = IMG_LoadTexture(renderer,"images/plank.png"); // Quelle: https://www.craiyon.com/image/_XEsXKthRYqpK8Vn6ZixAg - img_duck = IMG_LoadTexture(renderer,"images/duck.png"); + img_duck = IMG_LoadTexture(renderer,"images/player.png"); // Quelle: https://www.sandromaglione.com/articles/pixel-art-top-down-game-sprite-design-and-animation img_3D_Duck = IMG_LoadTexture(renderer,"images/3D_Duck.png"); img_stone = IMG_LoadTexture(renderer,"images/stone.png"); // Quelle: https://www.vecteezy.com/vector-art/22285554-stones-in-pixel-art-style img_race_street = IMG_LoadTexture(renderer,"images/race_street.jpg"); diff --git a/map.c b/map.c index fa66bcfe890b45b76330af15ca52da6d2df2d83e..d56f33407f20a2675d385e9db9e30af65c68debc 100644 --- a/map.c +++ b/map.c @@ -88,6 +88,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere struct Row *cur = list->head; bool newRow = false; + bool printedPlayer = false; if (cur->y_pos >= SCREEN_HEIGHT){ @@ -109,6 +110,11 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere if (paste_row(renderer,cur->y_pos,cur->row_type)) return(-1); + if (cur->y_pos <= player->y && player->y <= cur->y_pos + ROW_SIZE && (cur->bird != NULL)){ + update_character(delta_y, renderer); + printedPlayer = true; + } + if (cur->stone != -1){ if (paste_stone(renderer,cur->stone,cur->y_pos)) return(1); @@ -138,7 +144,6 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere if (cur->bird->anim == 0 && ((abs(player->y - cur->bird->y_pos) < 2*ROW_SIZE) && (abs(player->x - cur->bird->x_pos) < 2*ROW_SIZE))) cur->bird->anim++; move_bird(renderer,cur->bird,delta_y); - //paste_bird(renderer,cur->bird->x_pos,cur->bird->y_pos,cur->bird->height,cur->width,cur->bird->anim); } @@ -165,6 +170,10 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Rendere cur = cur->next; } + + if (!printedPlayer){ + update_character(delta_y, renderer); + } if (newRow){ struct Row *n; diff --git a/menu2.c b/menu2.c index a1ba20f6a5f0188c6f943f15d7a08c4e6451ea56..6cf4595147ba34c126678c524943c8e2c48c9e8d 100644 --- a/menu2.c +++ b/menu2.c @@ -215,22 +215,12 @@ Nachb.: Das Spiel wird erneut gestartet, wenn y gedrückt wird. Wenn n gedrückt */ int end_screen(SDL_Renderer* renderer) { - if (SDL_SetRenderDrawColor(renderer,255,255,255,0) !=0) { - SDL_Log("Farbe konnte nicht gesetzt werden! SDL_Error %s\n",SDL_GetError()); - return(-1); - } - // Hintergrund für Schrift erstellen SDL_Rect rect = { .x = 250, .y = 0, .w = 600, .h = 200 }; - if (SDL_RenderFillRect(renderer,&rect)!=0) { - - SDL_Log("Malen des Rechtecks fehlgeschlagen! SDL_Error %s\n",SDL_GetError()); - return(-1); - } // Text ausgeben SDL_Surface* surfaceMessage = TTF_RenderText_Blended_Wrapped (font, "Nochmal? (y)/(n)", (SDL_Color) {255, 255, 255, 255}, 8*200); diff --git a/rows.c b/rows.c index 5186ed1ff3126549847870dff7dfd227df4478aa..78dac6d764c6219087c094c143b01f52fbce56f5 100644 --- a/rows.c +++ b/rows.c @@ -1,10 +1,17 @@ #include "hDateien/rows.h" +// Vorbedingnug: / + +// Nachbedingung: gibt eine zufällige Position für ein Stein zurück + int gen_stone(){ int p = (rand() % 9)*ROW_SIZE; return(p); } +//Vorbedingung: -200<=y_pos<=1000 + +//Nachbedinung: eine Rennstrecken-Reihe wurde Initialisiert struct Row *race(int y_pos){ struct Row *n = malloc(sizeof(*n)); if (n==NULL){ diff --git a/title_screen.c b/title_screen.c index a2d12ddc2eacb55ee74fa51d8234387e7dac2d8d..1422a5fce7884f3557d9557146a3b9b17fc3e264 100644 --- a/title_screen.c +++ b/title_screen.c @@ -15,10 +15,10 @@ int title_screen(SDL_Renderer* renderer){ // unschöne Lösung um Hintergrund weiß zu machen SDL_Rect rect_3 = { - .x = 400, + .x = 0, .y = 0, - .w = 500, - .h = 500}; + .w = SCREEN_WIDTH, + .h = SCREEN_HEIGHT}; if (SDL_RenderFillRect(renderer,&rect_3) != 0){ SDL_Log("Malen des Rechtecks fehlgeschlagen! SDL_Error: %s\n", SDL_GetError()); @@ -28,9 +28,9 @@ int title_screen(SDL_Renderer* renderer){ SDL_Rect rect = { .x = 0, - .y = 0, + .y = 100, .w = 600, - .h = 500}; + .h = 200}; if (SDL_RenderFillRect(renderer,&rect)!=0) { @@ -38,7 +38,7 @@ int title_screen(SDL_Renderer* renderer){ return(-1); } - SDL_Surface* surfaceMessage = TTF_RenderText_Blended_Wrapped(font, " Willkommen zu\n Smashy Roads!\n Steuerung:", (SDL_Color) {0, 0, 0, 255}, 10*200); + SDL_Surface* surfaceMessage = TTF_RenderText_Blended_Wrapped(font, "Steuerung:", (SDL_Color) {0, 0, 0, 255}, 10*200); if (surfaceMessage == NULL) printf("Text Surface loading failed: %s\n", TTF_GetError()); @@ -50,12 +50,11 @@ int title_screen(SDL_Renderer* renderer){ return(-1); } - //Einfügen Spielanleitung als Bild SDL_Rect rect_2 = { .x = 0, - .y = SCREEN_HEIGHT/2, + .y = SCREEN_HEIGHT/3, .w = SCREEN_WIDTH, .h = SCREEN_HEIGHT/2}; @@ -72,7 +71,7 @@ int title_screen(SDL_Renderer* renderer){ // Einfügen 3D Ente als Bild - + /* SDL_Rect ente = { .x = 450, .y = 330, @@ -88,6 +87,7 @@ int title_screen(SDL_Renderer* renderer){ SDL_Log("Bild konnte nicht kopiert werden! SDL_Error: %s\n", SDL_GetError()); return(-1); } + */ // Warte auf Eingabe um entweder zu beenden, oder zurückzukehren