Skip to content
Snippets Groups Projects
Commit c179df89 authored by Réthelyi Bálint's avatar Réthelyi Bálint :no_mouth:
Browse files

generate platforms, and move them

parent b0f90fa2
No related branches found
No related tags found
1 merge request!4Blint
......@@ -6,21 +6,21 @@
#IncludeRegexTransform:
/home/blint/projects/nhf/main.c
view.h
/home/blint/projects/nhf/view.h
/home/blint/projects/nhf/move.c
move.h
/home/blint/projects/nhf/move.h
SDL2/SDL_image.h
-
SDL2/SDL2_gfxPrimitives.h
view.h
/home/blint/projects/nhf/view.h
SDL.h
-
stdbool.h
-
time.h
math.h
-
/home/blint/projects/nhf/move.h
view.h
/home/blint/projects/nhf/view.h
SDL.h
-
stdbool.h
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -5,79 +5,6 @@
#include <stdbool.h>
#include <time.h>
typedef struct Palyaelem{
int x, y;
int hossz, magassag;
struct Palyaelem *kov;
}Palyaelem;
int H = 600;
int W = 900;
SDL_Window *window;
SDL_Renderer *renderer;
Palyaelem *gen_elem(Palyaelem *elem)
{
Palyaelem *uj = (Palyaelem *) malloc(sizeof(Palyaelem));
uj->kov = NULL;
if (elem == NULL)
{
uj->hossz = rand() % (W / 2);
uj->x = rand() % W;
uj->y = rand() % (H / 2) + (550 - owl);
uj->magassag = 20;
elem = uj;
return elem;
}
Palyaelem *mozgo;
for (mozgo = elem; mozgo->kov != NULL; mozgo = mozgo->kov);
mozgo->kov = uj;
uj->hossz = rand() % (W / 2);
uj->x = rand() % W + (mozgo->x + mozgo->hossz);
uj->y = rand() % (H / 2) + mozgo->y;
uj->magassag = 20;
return elem;
}
Palyaelem *palyamozgat(Palyaelem *eleje, int x)
{
Palyaelem *mozgo;
for (mozgo = eleje; mozgo != NULL; mozgo = mozgo->kov)
{
mozgo->x -= x;
}
return eleje;
}
void palyaelem_kirajzolo(Palyaelem *elem, SDL_Renderer *prenderer)
{
SDL_Rect r;
r.x = elem->x;
r.y = elem->y;
r.w = elem->hossz;
r.h = elem->magassag;
SDL_SetRenderDrawColor( renderer, 0, 255, 0, 255 );
SDL_RenderFillRect( prenderer, &r );
}
void palyakirajzol(SDL_Renderer *prenderer)
{
Palyaelem alap;
alap.x = 0;
alap.y = 550;
alap.hossz = 900;
alap.magassag = 50;
palyaelem_kirajzolo(&alap, prenderer);
}
Uint32 idozit(Uint32 ms, void *param) {
SDL_Event ev;
......@@ -107,6 +34,8 @@ int main(int argc, char *argv[]) {
Palyaelem *elem = NULL;
elem = palya_gen(elem, 20);
while (!quit) {
......@@ -114,17 +43,13 @@ int main(int argc, char *argv[]) {
SDL_WaitEvent(&ev);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
palyakirajzol(renderer, elem);
elem = gen_elem(elem);
Palyaelem *mozgo = elem;
palyaelem_kirajzolo(mozgo, renderer);
palyakirajzol(renderer);
keywatcher(ev, bagoly, elozo_x, elozo_y, &quit, &moving, renderer);
keywatcher(ev, bagoly, elozo_x, elozo_y, &quit, &moving);
if (moving){
move_draw(ev, bagoly, renderer, &elozo_x, &elozo_y);
move_draw(ev, bagoly, &elozo_x, &elozo_y, elem);
}
......
......@@ -10,46 +10,40 @@
int v = 5;
int vx = 0;
int vy = 0;
//int vx = 0;
//int vy = 0;
double g = 9.82;
double pi = 3.14159;
int t = 0;
bool jump = false;
bool jumping = false;
static void move(SDL_Event ev)
static void move(SDL_Event ev, int *x, int *y)
{
switch (ev.type) {
case SDL_MOUSEMOTION:
return;
case SDL_KEYDOWN:
if (ev.key.keysym.sym == SDLK_a) {
vx = -1;
vx *= v;
if (ev.key.keysym.sym == SDLK_a || ev.key.keysym.sym == SDLK_LEFT) {
*x -= v;
break;
}
if (ev.key.keysym.sym == SDLK_d) {
vx = 1;
vx *= v;
if (ev.key.keysym.sym == SDLK_d || ev.key.keysym.sym == SDLK_RIGHT) {
*x += v;
break;
}
if (ev.key.keysym.sym == SDLK_w) {
vy = -1;
vy *= v;
if (ev.key.keysym.sym == SDLK_w || ev.key.keysym.sym == SDLK_UP) {
*y -= v;
break;
}
if (ev.key.keysym.sym == SDLK_s) {
vy = 1;
vy *= v;
if (ev.key.keysym.sym == SDLK_s || ev.key.keysym.sym == SDLK_DOWN) {
*y += v;
break;
}
case SDL_KEYUP:
/*case SDL_KEYUP:
switch (ev.key.keysym.sym) {
case SDLK_a:
......@@ -74,7 +68,7 @@ static void move(SDL_Event ev)
default:
break;
}
break;
break;*/
case SDL_USEREVENT:
......@@ -85,7 +79,7 @@ static void move(SDL_Event ev)
}
void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *moving, SDL_Renderer *renderer)
void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *moving)
{
switch (ev.type) {
case SDL_KEYUP:
......@@ -97,11 +91,6 @@ void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *
case SDLK_ESCAPE:
*quit = true;
break;
case SDLK_r:
kirajzol(renderer, kep, 0, 550 - owl);
*moving = true;
break;
}
break;
......@@ -111,19 +100,39 @@ void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *
}
}
void move_draw(SDL_Event ev, SDL_Texture *kep, SDL_Renderer *renderer, int *x, int *y)
Palyaelem *palyamozgat(Palyaelem *eleje, int x)
{
move(ev);
*x += vx;
*y += vy;
Palyaelem *mozgo;
if (*y >= (550 -owl))
for (mozgo = eleje; mozgo != NULL; mozgo = mozgo->kov)
{
*y = 550 - owl;
mozgo->x -= x;
}
return eleje;
}
/*if (*y == (550 - owl) && !jump)
jumping = false;*/
kirajzol(renderer, kep, *x, *y);
void move_draw(SDL_Event ev, SDL_Texture *kep, int *x, int *y, Palyaelem *eleje)
{
move(ev, x, y);
if (*y >= (H -2*owl))
{
*y = H - 2*owl;
}
if (*x > (W - owl))
{
*x = W - owl;
palyamozgat(eleje, v);
}
if (*x < 0)
{
*x = 0;
palyamozgat(eleje, -v);
}
kirajzol(renderer, kep, *x, *y);
}
\ No newline at end of file
......@@ -5,6 +5,7 @@
#ifndef NHF_MOVE_H
#define NHF_MOVE_H
#include "view.h"
#include <SDL.h>
#include <stdbool.h>
#include <math.h>
......@@ -14,14 +15,14 @@ extern int vx;
extern int vy;
extern double g;
extern double pi;
extern int t;
extern bool jump;
extern bool jumping;
static void move(SDL_Event ev);
void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *moving, SDL_Renderer *renderer);
static void move(SDL_Event ev, int *x, int *y);
void move_draw(SDL_Event ev, SDL_Texture *kep, SDL_Renderer *renderer, int *x, int *y);
void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *moving);
void move_draw(SDL_Event ev, SDL_Texture *kep, int *x, int *y, Palyaelem *eleje);
Palyaelem *palyamozgat(Palyaelem *eleje, int x);
#endif //NHF_MOVE_H
\ No newline at end of file
......@@ -8,9 +8,13 @@
#include <stdlib.h>
#include <stdio.h>
int H = 600;
int W = 900;
int owl = 50;
SDL_Window *window;
SDL_Renderer *renderer;
void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer) {
if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
SDL_Log("Nem indithato az SDL: %s", SDL_GetError());
......@@ -50,3 +54,67 @@ void kirajzol(SDL_Renderer *renderer, SDL_Texture *kep, int x, int y) {
SDL_Rect dest = {x, y, owl, owl};
SDL_RenderCopy(renderer, kep, &src, &dest);
}
Palyaelem *gen_elem(Palyaelem *elem)
{
Palyaelem *uj = (Palyaelem *) malloc(sizeof(Palyaelem));
uj->kov = NULL;
if (elem == NULL)
{
uj->hossz = rand() % (W / 3) + 100;
uj->x = (W/1/3);
uj->y = (H - (3*owl));
uj->magassag = 20;
elem = uj;
return elem;
}
Palyaelem *mozgo;
for (mozgo = elem; mozgo->kov != NULL; mozgo = mozgo->kov);
mozgo->kov = uj;
uj->hossz = rand() % ((W / 2) + 1) + 100;
uj->x = rand() % (W - (mozgo->x + mozgo->hossz)) + (mozgo->x + mozgo->hossz + 2*owl);
uj->y = rand() % (mozgo->magassag + (4*owl)) + (mozgo->y - owl);
if (uj->y >= (H - owl))
uj->y -= (3*owl);
uj->magassag = 20;
return elem;
}
void palyaelem_kirajzolo(Palyaelem *elem, SDL_Renderer *prenderer)
{
SDL_Rect r;
r.x = elem->x;
r.y = elem->y;
r.w = elem->hossz;
r.h = elem->magassag;
SDL_SetRenderDrawColor( renderer, 0, 255, 0, 255 );
SDL_RenderFillRect( prenderer, &r );
}
Palyaelem* palya_gen(Palyaelem *eleje, int hany_elem)
{
for (int i = 0; i < hany_elem; ++i) {
eleje = gen_elem(eleje);
}
return eleje;
}
void palyakirajzol(SDL_Renderer *prenderer, Palyaelem *elem)
{
Palyaelem alap;
alap.x = 0;
alap.y = 550;
alap.hossz = 900;
alap.magassag = 50;
palyaelem_kirajzolo(&alap, prenderer);
Palyaelem * mozgo;
for (mozgo = elem; mozgo != NULL; mozgo = mozgo->kov)
palyaelem_kirajzolo(mozgo, prenderer);
}
\ No newline at end of file
......@@ -10,12 +10,31 @@
#include <stdlib.h>
#include <stdio.h>
typedef struct Palyaelem{
int x, y;
int hossz, magassag;
struct Palyaelem *kov;
}Palyaelem;
extern int H;
extern int W;
extern int owl;
extern SDL_Window *window;
extern SDL_Renderer *renderer;
void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer);
SDL_Texture *kep_betolt(SDL_Renderer *renderer, char *filename);
void kirajzol(SDL_Renderer *renderer, SDL_Texture *kep, int x, int y);
Palyaelem *gen_elem(Palyaelem *elem);
void palyaelem_kirajzolo(Palyaelem *elem, SDL_Renderer *prenderer);
Palyaelem* palya_gen(Palyaelem *eleje, int hany_elem);
void palyakirajzol(SDL_Renderer *prenderer, Palyaelem *elem);
#endif //NHF_VIEW_H
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment