Add some fancy colors and interaction
This commit is contained in:
parent
5b4847d15c
commit
e13cc36bee
2 changed files with 32 additions and 4 deletions
17
src/draw.c
17
src/draw.c
|
@ -78,8 +78,6 @@ void drawCircle(int x, int y, int radius, int color, bool filled) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int* generateTerrain(float peakheight, float flatness) {
|
int* generateTerrain(float peakheight, float flatness) {
|
||||||
time_t start; srand(start);
|
|
||||||
|
|
||||||
float offset = (float)SCREEN_HEIGHT/2;
|
float offset = (float)SCREEN_HEIGHT/2;
|
||||||
float r1 = _random(1.0, 5.0);
|
float r1 = _random(1.0, 5.0);
|
||||||
float r2 = _random(1.0, 5.0);
|
float r2 = _random(1.0, 5.0);
|
||||||
|
@ -100,7 +98,18 @@ int* generateTerrain(float peakheight, float flatness) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawScreen() {
|
void drawScreen() {
|
||||||
Uint32 white = SDL_MapRGB(screen->format, 255, 255, 255);
|
Uint32 sky = SDL_MapRGB(screen->format, 186, 215, 217);
|
||||||
for (int x=0; x<SCREEN_WIDTH; x++) drawLine(x, terrain[x], x, SCREEN_HEIGHT, white);
|
Uint32 green = SDL_MapRGB(screen->format, 101, 200, 21);
|
||||||
|
Uint32 darkGreen = SDL_MapRGB(screen->format, 52, 99, 14);
|
||||||
|
Uint32 ground = SDL_MapRGB(screen->format, 124, 88, 10);
|
||||||
|
|
||||||
|
for (int x=0; x<SCREEN_WIDTH; x++) {
|
||||||
|
int y = terrain[x];
|
||||||
|
|
||||||
|
drawLine(x, 0, x, y, sky);
|
||||||
|
if (y <= SCREEN_HEIGHT-15) drawLine(x, y, x, y+15, green);
|
||||||
|
if (y <= SCREEN_HEIGHT-20) drawLine(x, y+15, x, y+20, darkGreen);
|
||||||
|
if (y <= SCREEN_HEIGHT-21) drawLine(x, y+20, x, SCREEN_HEIGHT, ground);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
19
src/main.c
19
src/main.c
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "draw.h"
|
#include "draw.h"
|
||||||
|
@ -11,6 +12,7 @@ int main(int argc, char **argv) {
|
||||||
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
|
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
|
||||||
|
|
||||||
// Initialize internal game state
|
// Initialize internal game state
|
||||||
|
srand(time(NULL));
|
||||||
terrain = generateTerrain(150.0, 180.0);
|
terrain = generateTerrain(150.0, 180.0);
|
||||||
|
|
||||||
// the main game loop
|
// the main game loop
|
||||||
|
@ -19,6 +21,23 @@ int main(int argc, char **argv) {
|
||||||
if (SDL_PollEvent(&event)) {
|
if (SDL_PollEvent(&event)) {
|
||||||
// Make it possible to close the game window
|
// Make it possible to close the game window
|
||||||
if (event.type == SDL_QUIT) gameRunning = false;
|
if (event.type == SDL_QUIT) gameRunning = false;
|
||||||
|
|
||||||
|
// Keyboard interaction
|
||||||
|
if (event.type == SDL_KEYDOWN) {
|
||||||
|
switch (event.key.keysym.sym) {
|
||||||
|
case SDLK_RETURN:
|
||||||
|
free(terrain);
|
||||||
|
terrain = generateTerrain(150.0, 180.0);
|
||||||
|
printf("New terrain generated.\n");
|
||||||
|
break;
|
||||||
|
case SDLK_ESCAPE:
|
||||||
|
case SDLK_F10:
|
||||||
|
gameRunning = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the stuff on the screen and "flip" th the next frame
|
// Draw the stuff on the screen and "flip" th the next frame
|
||||||
|
|
Loading…
Reference in a new issue