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

*player ist nun global um weniger Parameter den Funktionen zu übergeben

parent 7f6e9f58
No related branches found
No related tags found
No related merge requests found
...@@ -112,8 +112,8 @@ struct LinkedList_car* init_car_list(int speed,int width,int height,int start_po ...@@ -112,8 +112,8 @@ struct LinkedList_car* init_car_list(int speed,int width,int height,int start_po
// Vorbedingung: // Vorbedingung:
// Alle Autos wurden mit init_car(...) erzeugt und entsprechen deren Spezifikation // Alle Autos wurden mit init_car(...) erzeugt und entsprechen deren Spezifikation
// insbesondere n->cars != NULL // insbesondere n->cars != NULL
// 0 <= character->x <= 900, // 0 <= player->x <= 900,
// 0 <= character->y <= 1000 // 0 <= player->y <= 1000
// Nachbedingung: // Nachbedingung:
...@@ -124,7 +124,7 @@ struct LinkedList_car* init_car_list(int speed,int width,int height,int start_po ...@@ -124,7 +124,7 @@ struct LinkedList_car* init_car_list(int speed,int width,int height,int start_po
// Im Falle einer ungültigen Kollision (mit einem Auto oder Zug), wird 1 zurück gegeben // Im Falle einer ungültigen Kollision (mit einem Auto oder Zug), wird 1 zurück gegeben
// Im Falle einer gültigen Kollision (mit einer Münze oder Boot), wird am Ende der Funktion 0 zurück gegeben. // Im Falle einer gültigen Kollision (mit einer Münze oder Boot), wird am Ende der Funktion 0 zurück gegeben.
// Wenn sich der Spieler auf einer Wasserreihe befindet, dann ist diese gültige Kollision zwingend. // Wenn sich der Spieler auf einer Wasserreihe befindet, dann ist diese gültige Kollision zwingend.
int move_car(SDL_Renderer* renderer,struct Row *n,SDL_Rect *character){ int move_car(SDL_Renderer* renderer,struct Row *n){
int length; int length;
int height; int height;
...@@ -147,7 +147,7 @@ int move_car(SDL_Renderer* renderer,struct Row *n,SDL_Rect *character){ ...@@ -147,7 +147,7 @@ int move_car(SDL_Renderer* renderer,struct Row *n,SDL_Rect *character){
} }
while (true){ while (true){
if (n->y_pos <=character->y && character->y <=n->y_pos + 100 && kollision(character,cur->x_pos,cur->width)){ if (n->y_pos <=player->y && player->y <=n->y_pos + 100 && kollision(cur->x_pos,cur->width)){
if (cur->type == car || cur->type == train){ if (cur->type == car || cur->type == train){
return(1); return(1);
...@@ -227,11 +227,11 @@ void free_car(struct Row *n){ ...@@ -227,11 +227,11 @@ void free_car(struct Row *n){
// Funktion wird nur aufgerufem, wenn der Spieler in der gleichen Reihe mit dem Auto oder Boot ist // Funktion wird nur aufgerufem, wenn der Spieler in der gleichen Reihe mit dem Auto oder Boot ist
// Im positiven Fall wird true zurück gegeben // Im positiven Fall wird true zurück gegeben
bool kollision(SDL_Rect* character,int x_pos,int width){ bool kollision(int x_pos,int width){
for(int j = 0;j<3;j++){ for(int j = 0;j<3;j++){
if ((character->x + (character->w)*(j/2) >= x_pos) && if ((player->x + (player->w)*(j/2) >= x_pos) &&
(character->x + (character->w)*(j/2) <= x_pos + width)){ (player->x + (player->w)*(j/2) <= x_pos + width)){
return(true); return(true);
} }
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
enum Keys {wKey = 26, sKey = 22, dKey = 7, aKey = 4, qKey = 20, eKey = 8, SpaceKey = 44}; enum Keys {wKey = 26, sKey = 22, dKey = 7, aKey = 4, qKey = 20, eKey = 8, SpaceKey = 44};
void jump(int input, SDL_Rect *rect){ void jump(int input){
//printf("%d\n", input); //printf("%d\n", input);
switch(input) { switch(input) {
case SpaceKey: //Space case SpaceKey: //Space
...@@ -17,62 +17,62 @@ void jump(int input, SDL_Rect *rect){ ...@@ -17,62 +17,62 @@ void jump(int input, SDL_Rect *rect){
break; break;
// case 79: // case 79:
case dKey: //right case dKey: //right
if(rect->x < 770){ if(player->x < 770){
rect->x += 100; player->x += 100;
} }
break; break;
// case 80: // case 80:
case aKey: //left case aKey: //left
if(rect->x > 30){ if(player->x > 30){
rect->x -= 100; player->x -= 100;
} }
break; break;
// case 81: // case 81:
case sKey: //down case sKey: //down
if(rect->y < 820){ if(player->y < 820){
playerscore--; playerscore--;
rect->y +=100; player->y +=100;
} }
break; break;
// case 82: // case 82:
case wKey: //up case wKey: //up
if(rect->y >120){ if(player->y >120){
playerscore++; playerscore++;
if(playerscore > playerhighscore){ if(playerscore > playerhighscore){
playerhighscore = playerscore; playerhighscore = playerscore;
} }
rect->y -= 100; player->y -= 100;
} }
break; break;
case qKey: // Taste q => gehe nach oben links case qKey: // Taste q => gehe nach oben links
if(rect->y >120 && rect->x > 30){ if(player->y >120 && player->x > 30){
playerscore++; playerscore++;
if(playerscore > playerhighscore){ if(playerscore > playerhighscore){
playerhighscore = playerscore; playerhighscore = playerscore;
} }
rect->y -= 100; player->y -= 100;
rect->x -= 100; player->x -= 100;
} }
break; break;
case eKey: // Taste e => gehe nach oben rechts case eKey: // Taste e => gehe nach oben rechts
if(rect->y >120 && rect->x < 770){ if(player->y >120 && player->x < 770){
playerscore++; playerscore++;
if(playerscore > playerhighscore){ if(playerscore > playerhighscore){
playerhighscore = playerscore; playerhighscore = playerscore;
} }
rect->y -= 100; player->y -= 100;
rect->x += 100; player->x += 100;
} }
break; break;
} }
} }
int update_character(int speed,SDL_Rect *character, SDL_Renderer *renderer){ int update_character(int speed, SDL_Renderer *renderer){
// Bewege die Spielfigur um speed Pixel nach unten // Bewege die Spielfigur um speed Pixel nach unten
character->y +=speed; player->y +=speed;
if (SDL_RenderCopy(renderer, img_duck, NULL,character) != 0) { if (SDL_RenderCopy(renderer, img_duck, NULL,player) != 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());
return(1); return(1);
} }
......
...@@ -2,34 +2,42 @@ ...@@ -2,34 +2,42 @@
#include <time.h> #include <time.h>
#include <stdbool.h> #include <stdbool.h>
SDL_Rect *player;
void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) { void gameLoop(enum vehicle theme,SDL_Renderer* renderer) {
SDL_Rect character = {
.x = 420,
.y = 820,
.w = 60,
.h = 70
};
SDL_Event e; SDL_Event e;
int speed; int speed;
// Anfangskoordinaten für den Spieler und dessen Größe
SDL_Rect player = {
.x = 420,
.y = 810,
.w = 60,
.h = 70};
playerscore = 0; playerscore = 0;
playerhighscore = 0; playerhighscore = 0;
bool end_game = false; bool end_game = false;
bool start_game = false; bool start_game = false;
SDL_Rect *character = &player;
player = &character;
// Anfangskoordinaten für den Spieler zurücksetzten
player->x = 420;
player->y = 810;
player->w = 60;
player->h = 70;
// erzeuge verkettete Liste, welche die Karte speichert // erzeuge verkettete Liste, welche die Karte speichert
struct LinkedList *map = init_map(theme,character); struct LinkedList *map = init_map(theme);
Uint32 start = SDL_GetTicks(); Uint32 start = SDL_GetTicks();
start_game = false; start_game = false;
while (!end_game) { while (!end_game) {
if (!ki){
while (SDL_PollEvent(&e)) { while (SDL_PollEvent(&e)) {
switch (e.type){ switch (e.type){
...@@ -41,18 +49,13 @@ void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) { ...@@ -41,18 +49,13 @@ void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) {
start_game = true; start_game = true;
jump(e.key.keysym.scancode, character); jump(e.key.keysym.scancode);
break; break;
default: default:
break; break;
} }
} }
}else{
}
// Wenn der Spieler weit oben ist, dann soll sich // Wenn der Spieler weit oben ist, dann soll sich
...@@ -61,7 +64,7 @@ void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) { ...@@ -61,7 +64,7 @@ void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) {
if (!end_game){ if (!end_game){
if (!start_game){ if (!start_game){
speed = 0; speed = 0;
}else if (character->y < 400){ }else if (player->y < 400){
speed = 7; speed = 7;
}else{ }else{
speed = 1; speed = 1;
...@@ -70,17 +73,17 @@ void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) { ...@@ -70,17 +73,17 @@ void gameLoop(bool ki,enum vehicle theme,SDL_Renderer* renderer) {
// Die Map wird bewegt und gezeichnet (inklusive Fahrzeuge) // Die Map wird bewegt und gezeichnet (inklusive Fahrzeuge)
// Bei einer ungültigen Kollision wird das Spiel beendet // Bei einer ungültigen Kollision wird das Spiel beendet
SDL_RenderClear(renderer); SDL_RenderClear(renderer);
end_game = move_map(theme,speed,map,character,renderer); end_game = move_map(theme,speed,map,renderer);
} }
//Position des Spielers wird aktualisiert und gezeichnet //Position des Spielers wird aktualisiert und gezeichnet
update_character(speed,character, renderer); update_character(speed, renderer);
paste_score (renderer); paste_score (renderer);
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
// Wenn der Spieler nicht im Fenster zu sehen ist, dann wird das Spiel beendet // Wenn der Spieler nicht im Fenster zu sehen ist, dann wird das Spiel beendet
if(character->y >= 1000){ if(player->y >= 1000){
end_game = true; end_game = true;
} }
......
...@@ -64,9 +64,9 @@ struct LinkedList_car{ ...@@ -64,9 +64,9 @@ struct LinkedList_car{
//Declarations of Functions //Declarations of Functions
enum vehicle startscreen(SDL_Renderer*); enum vehicle startscreen(SDL_Renderer*);
struct Row* init_row(struct Row*, SDL_Rect *player); struct Row* init_row(struct Row*);
struct LinkedList* init_map(enum vehicle,SDL_Rect *player); struct LinkedList* init_map(enum vehicle);
int move_map(enum vehicle,int,struct LinkedList*,SDL_Rect*,SDL_Renderer*); int move_map(enum vehicle,int,struct LinkedList*,SDL_Renderer*);
int paste_row(SDL_Renderer*, int , enum row); int paste_row(SDL_Renderer*, int , enum row);
void free_map(struct LinkedList*); void free_map(struct LinkedList*);
int paste_score (SDL_Renderer*); int paste_score (SDL_Renderer*);
...@@ -77,21 +77,22 @@ struct Row* street(bool,int); ...@@ -77,21 +77,22 @@ struct Row* street(bool,int);
struct Row* track(int); struct Row* track(int);
struct Row* water(bool,bool,int); struct Row* water(bool,bool,int);
int paste_car(SDL_Renderer*, int, int, int, int,int,struct Car*); int paste_car(SDL_Renderer*, int, int, int, int,int,struct Car*);
int move_car(SDL_Renderer* ,struct Row*,SDL_Rect*); int move_car(SDL_Renderer* ,struct Row*);
void free_car(struct Row*); void free_car(struct Row*);
bool kollision(SDL_Rect*,int,int); bool kollision(int,int);
//SDL_Rect charac_init(SDL_Renderer*); //SDL_Rect charac_init(SDL_Renderer*);
void jump(int, SDL_Rect*); void jump(int);
int update_character(int,SDL_Rect*, SDL_Renderer*); int update_character(int,SDL_Renderer*);
bool end_screen(SDL_Renderer*,enum vehicle); bool end_screen(SDL_Renderer*,enum vehicle);
int init(SDL_Renderer*); int init(SDL_Renderer*);
int exitGame(SDL_Renderer*,SDL_Window* window); int exitGame(SDL_Renderer*,SDL_Window* window);
void gameLoop(bool,enum vehicle,SDL_Renderer*); void gameLoop(enum vehicle,SDL_Renderer*);
int title_screen(SDL_Renderer*); int title_screen(SDL_Renderer*);
extern SDL_Rect player;
extern TTF_Font* font; extern TTF_Font* font;
extern SDL_Rect *player;
extern int playerscore; extern int playerscore;
extern int playerhighscore; extern int playerhighscore;
......
...@@ -26,7 +26,10 @@ TTF_Font* font; ...@@ -26,7 +26,10 @@ TTF_Font* font;
int playerscore; int playerscore;
int playerhighscore; int playerhighscore;
int init(SDL_Renderer* renderer) { int init(SDL_Renderer* renderer) {
//Initiiere Text //Initiiere Text
TTF_Init(); TTF_Init();
//this opens a font style and sets a size //this opens a font style and sets a size
......
...@@ -49,7 +49,7 @@ int main(void) { ...@@ -49,7 +49,7 @@ int main(void) {
enum vehicle theme; enum vehicle theme;
bool change_Map = true; bool change_Map = true;
bool ki = false;
while (true) { while (true) {
...@@ -59,7 +59,7 @@ int main(void) { ...@@ -59,7 +59,7 @@ int main(void) {
if (theme == (-1)){ // Spiel wurde geschlossen oder es kam zu einem Fehler if (theme == (-1)){ // Spiel wurde geschlossen oder es kam zu einem Fehler
break; break;
} }
gameLoop(ki,theme,renderer); gameLoop(theme,renderer);
change_Map = end_screen(renderer,theme); change_Map = end_screen(renderer,theme);
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
// Vorbedingung: 0 <= character->y <= 1000, 0 <= character->x <= 900 // Vorbedingung: 0 <= player->y <= 1000, 0 <= player->x <= 900
// Kodierung von enum vehicle: // Kodierung von enum vehicle:
// coin => zufällige Generierung // coin => zufällige Generierung
// car => Straßen werden generiert // car => Straßen werden generiert
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
// WICHTIG: Bei jeder Reihe OHNE cars muss der Wert cars auf NULL // WICHTIG: Bei jeder Reihe OHNE cars muss der Wert cars auf NULL
// gesetzt werde, da es sonts zu Fehlern kommt // gesetzt werde, da es sonts zu Fehlern kommt
struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){ struct LinkedList* init_map(enum vehicle theme){
struct LinkedList *list = malloc(sizeof(*list)); struct LinkedList *list = malloc(sizeof(*list));
...@@ -35,7 +35,7 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){ ...@@ -35,7 +35,7 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){
struct Row *m; struct Row *m;
if (theme == coin){ if (theme == coin){
m = init_row(n, character); m = init_row(n);
}else if(theme == car){ }else if(theme == car){
m = street(i==0, n->y_pos - 100); m = street(i==0, n->y_pos - 100);
...@@ -47,7 +47,7 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){ ...@@ -47,7 +47,7 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){
m = track( n->y_pos - 100); m = track( n->y_pos - 100);
}else if (theme == coin_gathered){ }else if (theme == coin_gathered){
m = grass((i+1)%2,(i*100+character->y/100) % 100 == 99,n->y_pos - 100); m = grass((i+1)%2,(i*100+player->y/100) % 100 == 99,n->y_pos - 100);
} }
n->next = m; n->next = m;
...@@ -62,8 +62,8 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){ ...@@ -62,8 +62,8 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){
// Vorbedingung: // Vorbedingung:
// delta_y mit 0 <= delta_y <= 20, // delta_y mit 0 <= delta_y <= 20,
// 0 <= character->x <= 900, // 0 <= player->x <= 900,
// 0 <= character->y y<= 1000 // 0 <= player->y y<= 1000
// LinkedList enthält 11 Elemente // LinkedList enthält 11 Elemente
// Kodierung von enum vehicle: // Kodierung von enum vehicle:
...@@ -80,7 +80,7 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){ ...@@ -80,7 +80,7 @@ struct LinkedList* init_map(enum vehicle theme,SDL_Rect* character){
// Eine Reihe wurde gelöscht, wenn y_pos >= 1000 // Eine Reihe wurde gelöscht, wenn y_pos >= 1000
// + neue Reihe mit Typ theme wurde an das Ende der Linked Ende hinzugefügt // + neue Reihe mit Typ theme wurde an das Ende der Linked Ende hinzugefügt
int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *character, SDL_Renderer* renderer){ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list, SDL_Renderer* renderer){
struct Row *cur = list->head; struct Row *cur = list->head;
bool newRow = false; bool newRow = false;
...@@ -105,7 +105,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *ch ...@@ -105,7 +105,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *ch
return(-1); return(-1);
if (cur->cars != NULL){ if (cur->cars != NULL){
if (move_car(renderer,cur,character) && cur->y_pos <= character->y && character->y <= cur->y_pos + 100){ if (move_car(renderer,cur) && cur->y_pos <= player->y && player->y <= cur->y_pos + 100){
return(1); return(1);
} }
} }
...@@ -121,7 +121,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *ch ...@@ -121,7 +121,7 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *ch
struct Row *n; struct Row *n;
if (theme == coin){ if (theme == coin){
n = init_row(cur, character); n = init_row(cur);
} }
if (theme == car){ if (theme == car){
n = street(false, cur->y_pos - 100); n = street(false, cur->y_pos - 100);
...@@ -138,9 +138,9 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *ch ...@@ -138,9 +138,9 @@ int move_map(enum vehicle theme,int delta_y,struct LinkedList *list,SDL_Rect *ch
} }
}else if (theme == coin_gathered) { }else if (theme == coin_gathered) {
if (cur->row_type == grassDark || cur->row_type == finishlineDark){ if (cur->row_type == grassDark || cur->row_type == finishlineDark){
n = grass(false,(playerhighscore+character->y/100) % 100 == 98,cur->y_pos - 100); n = grass(false,(playerhighscore+player->y/100) % 100 == 98,cur->y_pos - 100);
}else{ }else{
n = grass(true,(playerhighscore+character->y/100) % 100 == 98,cur->y_pos - 100); n = grass(true,(playerhighscore+player->y/100) % 100 == 98,cur->y_pos - 100);
} }
} }
cur->next = n; cur->next = n;
......
...@@ -7,91 +7,6 @@ ...@@ -7,91 +7,6 @@
# include <SDL.h> # include <SDL.h>
# include <stdio.h> # include <stdio.h>
int start_screen(enum vehicle theme,SDL_Rect *character, struct LinkedList *list, SDL_Renderer* renderer) {
// Print Title screen
// Press Space to start
// SDL_ttf initialisieren
if (TTF_Init() == -1) {
SDL_Log("SDL_ttf konnte nicht initialisiert werden! SDL_ttf Error: %s\n",
TTF_GetError());
return -1;
}
TTF_Font *font = TTF_OpenFont("Go-Mono.ttf", 24);
if (font == NULL) {
SDL_Log("Schriftart konnte nicht geladen werden! SDL_ttf Error: %s\n",
TTF_GetError());
return -1;
}
if (SDL_SetRenderDrawColor(renderer,255,255,255,0) !=0) {
SDL_Log("Farbe konnte nicht gesetzt werden! SDL_Error %s\n",SDL_GetError());
return(-1);
}
// Definiere rect
SDL_Rect rect = {
.x = 0,
.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);
}
SDL_Surface* surfaceMessage = TTF_RenderText_Blended_Wrapped (font, "Leertaste zum Start", (SDL_Color) {217, 163, 0, 255}, 200);
if (surfaceMessage == NULL)
printf("Text Surface loading failed: %s\n", TTF_GetError());
SDL_Texture* Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage);
//SDL_RenderCopy(renderer, Message, NULL, &rect);
SDL_Event e;
int input;
bool quit = false;
//SDL_RenderPresent(renderer);
while (quit == false) {
move_map(theme,0,list,character,renderer);
update_character(0, character, renderer);
if (SDL_SetRenderDrawColor(renderer,255,255,255,120) !=0) {
SDL_Log("Farbe konnte nicht gesetzt werden! SDL_Error %s\n",SDL_GetError());
return(-1);
}
if (SDL_RenderFillRect(renderer,&rect)!=0) {
SDL_Log("Malen des Rechtecks fehlgeschlagen! SDL_Error %s\n",SDL_GetError());
return(-1);
}
SDL_RenderCopy(renderer,Message,NULL,&rect);
while (SDL_PollEvent(&e)) {
switch (e.type) {
case SDL_QUIT:
quit = true;
break;
case SDL_KEYDOWN:
input = e.key.keysym.scancode;
if (input) { //Spiel startet für beliebigen Input
SDL_FreeSurface(surfaceMessage);
SDL_DestroyTexture(Message);
quit = true;
}
}
}
SDL_RenderPresent(renderer);
}
return(0);
}
bool end_screen(SDL_Renderer* renderer,enum vehicle theme) { bool end_screen(SDL_Renderer* renderer,enum vehicle theme) {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
//Vorbedingung: -100<=y_pos<=1000 //Vorbedingung: -200<=y_pos<=1000
//Nachbedinung: eine Gras-Reihe wurde Initialisiert //Nachbedinung: eine Gras-Reihe wurde Initialisiert
struct Row* grass(bool dark,bool gold,int y_pos){ struct Row* grass(bool dark,bool gold,int y_pos){
...@@ -29,7 +29,7 @@ struct Row* grass(bool dark,bool gold,int y_pos){ ...@@ -29,7 +29,7 @@ struct Row* grass(bool dark,bool gold,int y_pos){
return(n); return(n);
} }
//Vorbedingung: -100<=y_pos<=1000 //Vorbedingung: -200<=y_pos<=1000
//Nachbedinung: eine Straßen-Reihe wurde Initialisiert //Nachbedinung: eine Straßen-Reihe wurde Initialisiert
struct Row* street(bool first,int y_pos){ struct Row* street(bool first,int y_pos){
...@@ -52,7 +52,7 @@ struct Row* street(bool first,int y_pos){ ...@@ -52,7 +52,7 @@ struct Row* street(bool first,int y_pos){
n->cars = init_car_list(n->speed,width,height,(900-n->speed) % 900,car); n->cars = init_car_list(n->speed,width,height,(900-n->speed) % 900,car);
return(n); return(n);
} }
//Vorbedingung: -100<=y_pos<=1000 //Vorbedingung: -200<=y_pos<=1000
//Nachbedinung: Initialisiert eine Zug-Reihe //Nachbedinung: Initialisiert eine Zug-Reihe
struct Row* track(int y_pos){ struct Row* track(int y_pos){
...@@ -71,7 +71,7 @@ struct Row* track(int y_pos){ ...@@ -71,7 +71,7 @@ struct Row* track(int y_pos){
return(n); return(n);
} }
// Vorbedingung: -100<=y_pos<=1000 // Vorbedingung: -200<=y_pos<=1000
// Nachbedingung: Initialisiert eine Fluss-Reihe // Nachbedingung: Initialisiert eine Fluss-Reihe
struct Row* water(bool first,bool dark,int y_pos){ struct Row* water(bool first,bool dark,int y_pos){
...@@ -104,19 +104,19 @@ struct Row* water(bool first,bool dark,int y_pos){ ...@@ -104,19 +104,19 @@ struct Row* water(bool first,bool dark,int y_pos){
return(n); return(n);
} }
// Vorbedingung: 0 <= character->x <= 900, // Vorbedingung: 0 <= player->x <= 900,
// 0 <= character->y y<= 1000 // 0 <= player->y y<= 1000
// Nachbedingung: Initalisert alle Werte für eine neu erzeugte Reihe // Nachbedingung: Initalisert alle Werte für eine neu erzeugte Reihe
// WICHTIG: Bei jeder Reihe OHNE Autos muss der Wert autos auf NULL // WICHTIG: Bei jeder Reihe OHNE Autos muss der Wert autos auf NULL
// gesetzt werde, da es sonst zu Fehlern kommt // gesetzt werde, da es sonst zu Fehlern kommt
struct Row* init_row(struct Row *m, SDL_Rect *character){ struct Row* init_row(struct Row *m){
struct Row *n; struct Row *n;
int p; int p;
// Ziellinie erscheint alle 100 Punkte // Ziellinie erscheint alle 100 Punkte
if((playerhighscore + (character->y/100)) % 100 == 98){ if((playerhighscore + (player->y/100)) % 100 == 98){
if (m->row_type != grassDark && m->row_type != waterDarkSingle && m->row_type != waterDarkMultiple){ if (m->row_type != grassDark && m->row_type != waterDarkSingle && m->row_type != waterDarkMultiple){
n = grass(true,true,m->y_pos - 100); n = grass(true,true,m->y_pos - 100);
...@@ -157,7 +157,7 @@ struct Row* init_row(struct Row *m, SDL_Rect *character){ ...@@ -157,7 +157,7 @@ struct Row* init_row(struct Row *m, SDL_Rect *character){
// Es wird verhindert, dass nur eine Flussreihe erzeugt wird, // Es wird verhindert, dass nur eine Flussreihe erzeugt wird,
// da jedes 100. Feld durch eine goldene Grasreihe ersetzt wird // da jedes 100. Feld durch eine goldene Grasreihe ersetzt wird
}else if (p == 2 && ((playerhighscore + (character->y/100)) % 100 != 98)){ }else if (p == 2 && ((playerhighscore + (player->y/100)) % 100 != 98)){
if (m->row_type == grassDark ){ if (m->row_type == grassDark ){
n = water(true,false,m->y_pos - 100); n = water(true,false,m->y_pos - 100);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment