diff --git a/charac.c b/charac.c index 1ce23b1d4aabb96a4a7932dbedc028907dffa423..6464cfc192da49246b7da5783f23a310cc7f723c 100644 --- a/charac.c +++ b/charac.c @@ -17,6 +17,7 @@ int jump(int input){ case SDL_SCANCODE_D: //right if(player->x < 770){ // Überprüfe Grenzen player->x += ROW_SIZE; + player->position = 5; return(1); } break; @@ -24,6 +25,7 @@ int jump(int input){ case SDL_SCANCODE_A: //left if(player->x > 30){ // Überprüfe Grenzen player->x -= ROW_SIZE; + player->position = 3; return(2); } break; @@ -32,6 +34,7 @@ int jump(int input){ if(player->y < 820){ // Überprüfe Grenzen playerscore--; player->y += ROW_SIZE; + player->position = 4; return(3); } break; @@ -43,6 +46,7 @@ int jump(int input){ playerhighscore = playerscore; } player->y -= ROW_SIZE; + player->position = 1; return(4); } break; @@ -55,6 +59,7 @@ int jump(int input){ } player->y -= ROW_SIZE; player->x -= ROW_SIZE; + player->position = 1; return(5); } break; @@ -67,6 +72,7 @@ int jump(int input){ } player->y -= ROW_SIZE; player->x += ROW_SIZE; + player->position = 1; return(6); } break; @@ -87,12 +93,38 @@ int update_character(int speed, SDL_Renderer *renderer){ player->y +=speed; // Bewege den Spieler um speed pixel nach unten - // Fehlerbehandlung - if (SDL_RenderCopy(renderer, img_duck, NULL,player) != 0) { - SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); - return(1); - } - return(0); + SDL_Rect rect = { + .x = player->x, + .y = player->y, + .h = player->h, + .w = player->w + }; + + if (player->position <= 2){ + if (SDL_RenderCopy(renderer, img_duck, NULL,&rect) != 0) { + SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); + return(1); + } + return(0); + }else if(player->position == 3){ + if (SDL_RenderCopy(renderer, img_player_left, NULL,&rect) != 0) { + SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); + return(1); + } + return(0); + }else if(player->position == 4){ + if (SDL_RenderCopy(renderer, img_player_down, NULL,&rect) != 0) { + SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); + return(1); + } + return(0); + }else if(player->position == 5){ + if (SDL_RenderCopy(renderer, img_player_right, NULL,&rect) != 0) { + SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); + return(1); + } + return(0); + } } // Vorb.: / diff --git a/gameLoop.c b/gameLoop.c index f93e828fc340907ed7d761225856f7a392bf2244..53c7f59cbfb98912a4d5c9c95a0ebc425134d0a0 100644 --- a/gameLoop.c +++ b/gameLoop.c @@ -1,7 +1,7 @@ #include "hDateien/gameLoop.h" -SDL_Rect *player; +struct player *player; int playerscore; int playerhighscore; @@ -14,11 +14,12 @@ bool gameLoop(enum vehicle theme,SDL_Renderer* renderer) { int speed = 0; // Character wird in der Mitte des vorletzten Feldes gestartet - SDL_Rect character = { - .x = 420, + struct player character = { + .x = 410, .y = 810, .w = 60, - .h = 70 + .h = 70, + .position = 0 }; player = &character; diff --git a/hDateien/charac.h b/hDateien/charac.h index ffd4a5a82ca11038c147b41f01c98134ec42b59b..bfde11be8e70b6d5a763befa47bdbd1109f9e43f 100644 --- a/hDateien/charac.h +++ b/hDateien/charac.h @@ -15,7 +15,7 @@ //#include "header.h" -extern SDL_Rect *player; +extern struct player *player; extern int playerhighscore; extern int playerscore; diff --git a/hDateien/gameLoop.h b/hDateien/gameLoop.h index 4b3e885d5144ced95236c6d305f112d3c65d4530..42a5bb2d922896ec2110d697d15255ec64bad3f4 100644 --- a/hDateien/gameLoop.h +++ b/hDateien/gameLoop.h @@ -17,7 +17,7 @@ -extern SDL_Rect *player; +extern struct player *player; extern int playerscore; extern int playerhighscore; diff --git a/hDateien/header.h b/hDateien/header.h index 28a3a974b971d6bddac8992cfb21c9d426272228..5253c5fffe967972be5b0549ec3c8affbae7a625 100644 --- a/hDateien/header.h +++ b/hDateien/header.h @@ -5,10 +5,19 @@ #define SCREEN_HEIGHT 1000 #define ROW_SIZE 100 -extern SDL_Rect *player; +extern struct player *player; extern int playerscore; extern int playerhighscore; + +struct player{ + int x; + int y; + int h; + int w; + int position; +}; + enum color{ red, blue, diff --git a/hDateien/init.h b/hDateien/init.h index ace8f6f1e86b8a2b04c46e7651e978486df62162..ca071e5f98740ff1ad18ecafd423f857ac527333 100644 --- a/hDateien/init.h +++ b/hDateien/init.h @@ -35,6 +35,9 @@ extern SDL_Texture *img_trainR; extern SDL_Texture *img_trainL; extern SDL_Texture *img_plank; extern SDL_Texture *img_duck; +extern SDL_Texture *img_player_down; +extern SDL_Texture *img_player_left; +extern SDL_Texture *img_player_right; extern SDL_Texture *img_3D_Duck; extern SDL_Texture *img_stone; extern SDL_Texture *img_race_street; diff --git a/images/player_down.png b/images/player_down.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc4efa5a4594849d685a710f6fbf2d7ba372474 Binary files /dev/null and b/images/player_down.png differ diff --git a/images/player_left.png b/images/player_left.png new file mode 100644 index 0000000000000000000000000000000000000000..89f09cee61e4867b850fabdfe9cbc9bfce8bc2da Binary files /dev/null and b/images/player_left.png differ diff --git a/images/player_right.png b/images/player_right.png new file mode 100644 index 0000000000000000000000000000000000000000..aead6f95f1f53423e0bc40c418185edd0dc65571 Binary files /dev/null and b/images/player_right.png differ diff --git a/init.c b/init.c index 464850e0ef954cb10736f51ac094c03bcec6fa01..0c4b18343935ac47af155cb937c3bd2c7646fa45 100644 --- a/init.c +++ b/init.c @@ -20,6 +20,9 @@ SDL_Texture *img_trainL; //https://www.pinterest.com/hassanhojabri/sprite/ SDL_Texture *img_trainR; //https://www.pinterest.com/hassanhojabri/sprite/ SDL_Texture *img_plank; //https://www.craiyon.com/image/_XEsXKthRYqpK8Vn6ZixAg SDL_Texture *img_duck; +SDL_Texture *img_player_down; +SDL_Texture *img_player_left; +SDL_Texture *img_player_right; SDL_Texture *img_3D_Duck; SDL_Texture *img_stone; SDL_Texture *img_race_street; @@ -132,6 +135,9 @@ int init_images(SDL_Renderer* renderer) { img_bird_sit2 = IMG_LoadTexture(renderer,"images/bird_sit2.png"); img_bird_sit3 = IMG_LoadTexture(renderer,"images/bird_sit3.png"); img_bird_sit4 = IMG_LoadTexture(renderer,"images/bird_sit4.png"); + img_player_down = IMG_LoadTexture(renderer,"images/player_down.png"); + img_player_left = IMG_LoadTexture(renderer,"images/player_left.png"); + img_player_right = IMG_LoadTexture(renderer,"images/player_right.png"); //Initiierung der Bilder @@ -201,6 +207,9 @@ int exitGame(SDL_Renderer* renderer, SDL_Window* window) { SDL_DestroyTexture(img_bird_sit2); SDL_DestroyTexture(img_bird_sit3); SDL_DestroyTexture(img_bird_sit4); + SDL_DestroyTexture(img_player_down); + SDL_DestroyTexture(img_player_left); + SDL_DestroyTexture(img_player_right); TTF_CloseFont(font); SDL_Quit(); diff --git a/title_screen.c b/title_screen.c index 1422a5fce7884f3557d9557146a3b9b17fc3e264..37e394a598a50b59a5dadda6de4b71bd1bec25e6 100644 --- a/title_screen.c +++ b/title_screen.c @@ -27,7 +27,7 @@ int title_screen(SDL_Renderer* renderer){ SDL_Rect rect = { - .x = 0, + .x = 100, .y = 100, .w = 600, .h = 200};