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

Merge branch 'main' of git.imp.fu-berlin.de:wise2023_jumpnrun/jumpnrun

parents 74832510 da4cb49c
Branches
Tags
No related merge requests found
...@@ -6,8 +6,8 @@ Vorbedingung: Es wurde eine Taste gedrückt ...@@ -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. 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 // 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 // playerhighscore = externe Darstellung; höchste Anzahl an nach oben gelaufenen Schritten + gesammelte Münzen
// ROW_SIZE = 100 // ROW_SIZE = 100
// SDL_SCANCODE_X = MACRO von SDL anstall "magic numbers" zu verwenden // SDL_SCANCODE_X = MACRO von SDL anstall "magic numbers" zu verwenden
......
...@@ -64,6 +64,9 @@ enum vehicle startscreen(SDL_Renderer* renderer){ ...@@ -64,6 +64,9 @@ enum vehicle startscreen(SDL_Renderer* renderer){
paste_row(renderer,SCREEN_HEIGHT-7*ROW_SIZE, grassBright); paste_row(renderer,SCREEN_HEIGHT-7*ROW_SIZE, grassBright);
paste_row(renderer,SCREEN_HEIGHT-8*ROW_SIZE, grassDark); paste_row(renderer,SCREEN_HEIGHT-8*ROW_SIZE, grassDark);
//Handling von Eingabe Events:
while (SDL_PollEvent(&event)) { while (SDL_PollEvent(&event)) {
switch (event.type) { switch (event.type) {
...@@ -76,7 +79,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){ ...@@ -76,7 +79,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){
SDL_FreeSurface(surfaceMessage); SDL_FreeSurface(surfaceMessage);
SDL_DestroyTexture(Message); SDL_DestroyTexture(Message);
return(coin_gathered); return(coin_gathered);
}else if (200<=event.button.y && event.button.y<=400){ }else if (200<=event.button.y && event.button.y<=400){
SDL_FreeSurface(surfaceMessage); SDL_FreeSurface(surfaceMessage);
SDL_DestroyTexture(Message); SDL_DestroyTexture(Message);
...@@ -100,6 +103,10 @@ enum vehicle startscreen(SDL_Renderer* renderer){ ...@@ -100,6 +103,10 @@ enum vehicle startscreen(SDL_Renderer* renderer){
default: default:
break; 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: case SDL_KEYDOWN:
if(event.key.keysym.scancode == SDL_SCANCODE_W && rahmen.y > 200 ){ if(event.key.keysym.scancode == SDL_SCANCODE_W && rahmen.y > 200 ){
rahmen.y -= 200; rahmen.y -= 200;
...@@ -256,7 +263,6 @@ int end_screen(SDL_Renderer* renderer) { ...@@ -256,7 +263,6 @@ int end_screen(SDL_Renderer* renderer) {
while (SDL_PollEvent(&e)) { while (SDL_PollEvent(&e)) {
switch (e.type) { switch (e.type) {
//fclose(my_file);
case SDL_QUIT: case SDL_QUIT:
return(2); // Spiel wird geschlossen return(2); // Spiel wird geschlossen
case SDL_KEYDOWN: case SDL_KEYDOWN:
...@@ -266,7 +272,7 @@ int end_screen(SDL_Renderer* renderer) { ...@@ -266,7 +272,7 @@ int end_screen(SDL_Renderer* renderer) {
SDL_DestroyTexture(Message); SDL_DestroyTexture(Message);
return(0); return(0);
} }
if (input == n) { if (input == n) {
SDL_FreeSurface(surfaceMessage); SDL_FreeSurface(surfaceMessage);
SDL_DestroyTexture(Message); SDL_DestroyTexture(Message);
......
#include "output.h" #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){ int paste_row(SDL_Renderer* renderer, int y, enum row row_type){
SDL_Rect destination = { SDL_Rect destination = {
...@@ -60,7 +62,10 @@ int paste_row(SDL_Renderer* renderer, int y, enum row row_type){ ...@@ -60,7 +62,10 @@ int paste_row(SDL_Renderer* renderer, int y, enum row row_type){
return 0; 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) { 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; int offset = 20;
if (type == coin){ if (type == coin){
...@@ -73,6 +78,8 @@ int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int sp ...@@ -73,6 +78,8 @@ int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int sp
.w = width, .w = width,
.h = height}; .h = height};
//correct "car" type is displayed
//could be implemented like above with switch case
if (type == boat){ if (type == boat){
if (SDL_RenderCopy(renderer, img_plank, NULL, &rect) != 0) { if (SDL_RenderCopy(renderer, img_plank, NULL, &rect) != 0) {
SDL_Log("Bild konnte nicht kopiert werden! SDL_Error Error: %s\n",SDL_GetError()); 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 ...@@ -123,7 +130,9 @@ int paste_car(SDL_Renderer* renderer, int x, int y, int width, int height,int sp
return(0); 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){ int func_digits(int score){
if (score == 0) if (score == 0)
return(1); return(1);
...@@ -135,6 +144,8 @@ int func_digits(int score){ ...@@ -135,6 +144,8 @@ int func_digits(int score){
return(i); return(i);
} }
//V: renderer exists
//N: current playerhighscore is displayed in white in the upper right corner
int paste_score (SDL_Renderer* renderer) { int paste_score (SDL_Renderer* renderer) {
int digits = func_digits(playerhighscore); int digits = func_digits(playerhighscore);
...@@ -157,7 +168,8 @@ int paste_score (SDL_Renderer* renderer) { ...@@ -157,7 +168,8 @@ int paste_score (SDL_Renderer* renderer) {
return -1; return -1;
} }
char output [5]; char output [10];
//max displayable score has 10 digits
sprintf(output, "%d", playerhighscore); sprintf(output, "%d", playerhighscore);
SDL_Surface* surfaceMessage = SDL_Surface* surfaceMessage =
TTF_RenderText_Blended_Wrapped (font, output, (SDL_Color) {225, 225, 225, 255}, 4*200); TTF_RenderText_Blended_Wrapped (font, output, (SDL_Color) {225, 225, 225, 255}, 4*200);
......
#include "title_screen.h" #include "title_screen.h"
/* /*
Vorbindung: Es existiert ein SDL_Renderer 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){ int title_screen(SDL_Renderer* renderer){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment