diff --git a/charac.c b/charac.c index e44b41a592f54c218e54705b9d8de5f0a3a5b569..680acb8a4b872091e6b61719964eb7930b91bc30 100644 --- a/charac.c +++ b/charac.c @@ -6,8 +6,8 @@ Vorbedingung: Es wurde eine Taste gedrückt Nachbedingung: Position des Characters hat sich je nach Tasteneingabe verändert. Wenn keine Steuertaste gedrückt wird, dann passiert nichts. */ -// playerscore = interne Darstellung der ingesamt gelaufenen Schritte minus der zurückgelaufenen Schritte -// playerhighscore = externe Darstellung; höchste Anzahl an nach oben gelaufenen Schritten +// playerscore = interne Darstellung der ingesamt gelaufenen Schritte minus der zurückgelaufenen Schritte + gesammelte Münzen +// playerhighscore = externe Darstellung; höchste Anzahl an nach oben gelaufenen Schritten + gesammelte Münzen // ROW_SIZE = 100 // SDL_SCANCODE_X = MACRO von SDL anstall "magic numbers" zu verwenden diff --git a/menu2.c b/menu2.c index 3a1df1a0f5b4686a60bed5ab7e760d660e5faffb..a2224465d44675da88d77684d9ad92afddffa48f 100644 --- a/menu2.c +++ b/menu2.c @@ -64,6 +64,9 @@ enum vehicle startscreen(SDL_Renderer* renderer){ paste_row(renderer,SCREEN_HEIGHT-7*ROW_SIZE, grassBright); paste_row(renderer,SCREEN_HEIGHT-8*ROW_SIZE, grassDark); + +//Handling von Eingabe Events: + while (SDL_PollEvent(&event)) { switch (event.type) { @@ -76,7 +79,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){ SDL_FreeSurface(surfaceMessage); SDL_DestroyTexture(Message); return(coin_gathered); - + }else if (200<=event.button.y && event.button.y<=400){ SDL_FreeSurface(surfaceMessage); SDL_DestroyTexture(Message); @@ -100,6 +103,10 @@ enum vehicle startscreen(SDL_Renderer* renderer){ default: break; +/* +Zur Auswahl wird ein SDL_Rect rahmen bewegt (w = nach oben, s = nach unten). Wird die Entertaste gedrückt, +wird nach Position des Rahmens das entsprechende Level geladen +*/ case SDL_KEYDOWN: if(event.key.keysym.scancode == SDL_SCANCODE_W && rahmen.y > 200 ){ rahmen.y -= 200; @@ -256,7 +263,6 @@ int end_screen(SDL_Renderer* renderer) { while (SDL_PollEvent(&e)) { switch (e.type) { - //fclose(my_file); case SDL_QUIT: return(2); // Spiel wird geschlossen case SDL_KEYDOWN: @@ -266,7 +272,7 @@ int end_screen(SDL_Renderer* renderer) { SDL_DestroyTexture(Message); return(0); } - + if (input == n) { SDL_FreeSurface(surfaceMessage); SDL_DestroyTexture(Message); diff --git a/output.c b/output.c index edbcec074fa3b276a8ae80d81221c0f0836c9db8..754b652260c9a56eda84ee603e1b74327d99ea14 100644 --- a/output.c +++ b/output.c @@ -1,5 +1,7 @@ #include "output.h" +//V: renderer exists, enum row_type is correct and not renamed, correct y coordinates are transferred +//N: img corresponding to row_type is set to coordinates: x: 0 to 900 y: y to y+100 and displayed via renderer int paste_row(SDL_Renderer* renderer, int y, enum row row_type){ SDL_Rect destination = { @@ -60,7 +62,10 @@ int paste_row(SDL_Renderer* renderer, int y, enum row row_type){ return 0; } +//V renderer exists, correct x, y coordinates and width and height and speed and type of car is passed on +//N: car is set to correct variables and displayed in renderer with correct image and direction int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int speed,enum vehicle type) { + //Prevents cars from being displayed at the wrong position int offset = 20; if (type == coin){ @@ -73,6 +78,8 @@ int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int sp .w = width, .h = height}; + //correct "car" type is displayed + //could be implemented like above with switch case if (type == boat){ if (SDL_RenderCopy(renderer, img_plank, NULL, &rect) != 0) { SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); @@ -123,7 +130,9 @@ int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int sp return(0); } - +//used to calculate width of score display +//V: score exists +//N: returns int corresponding to digits of score int func_digits(int score){ if (score == 0) return(1); @@ -135,6 +144,8 @@ int func_digits(int score){ return(i); } +//V: renderer exists +//N: current playerhighscore is displayed in white in the upper right corner int paste_score (SDL_Renderer* renderer) { int digits = func_digits(playerhighscore); @@ -157,7 +168,8 @@ int paste_score (SDL_Renderer* renderer) { return -1; } - char output [5]; + char output [10]; + //max displayable score has 10 digits sprintf(output, "%d", playerhighscore); SDL_Surface* surfaceMessage = TTF_RenderText_Blended_Wrapped (font, output, (SDL_Color) {225, 225, 225, 255}, 4*200); diff --git a/title_screen.c b/title_screen.c index 206acda46ddf47cfd18ac51d1243ae160de386f9..bf1964964c2de926f27189a8cc10961b55dbb913 100644 --- a/title_screen.c +++ b/title_screen.c @@ -1,7 +1,8 @@ #include "title_screen.h" /* Vorbindung: Es existiert ein SDL_Renderer -Nachbedingung: +Nachbedingung: / +Ergebnis: Es wird der Name des Spiels, die Steuerung ein Bild vom Charakter auf dem Bildschirm angezeigt */ int title_screen(SDL_Renderer* renderer){