diff --git a/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache b/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache
index 6c406a360f832d31c7b4cb1dd6c264e8a86eb5f1..658cf5a07ba427d42d04adb82e7057d98d2309fa 100644
--- a/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache
+++ b/cmake-build-debug/CMakeFiles/nhf.dir/C.includecache
@@ -6,20 +6,6 @@
 
 #IncludeRegexTransform: 
 
-/home/blint/projects/nhf/main.c
-view.h
-/home/blint/projects/nhf/view.h
-move.h
-/home/blint/projects/nhf/move.h
-SDL2/SDL_image.h
--
-SDL2/SDL2_gfxPrimitives.h
--
-stdbool.h
--
-time.h
--
-
 /home/blint/projects/nhf/move.c
 move.h
 /home/blint/projects/nhf/move.h
diff --git a/cmake-build-debug/CMakeFiles/nhf.dir/main.c.o b/cmake-build-debug/CMakeFiles/nhf.dir/main.c.o
index 9aa1369685dab0f9b7f77db2f76d008563bf353a..8b52a65b93f44a3a850405dd0cfac82e5b8ee818 100644
Binary files a/cmake-build-debug/CMakeFiles/nhf.dir/main.c.o and b/cmake-build-debug/CMakeFiles/nhf.dir/main.c.o differ
diff --git a/cmake-build-debug/CMakeFiles/nhf.dir/move.c.o b/cmake-build-debug/CMakeFiles/nhf.dir/move.c.o
index 6f37d5fcef15346ac4c9566d5257e469bd7dd0a8..69dc93454eeda6d5e55f9930ef2af70f4e8ad2fb 100644
Binary files a/cmake-build-debug/CMakeFiles/nhf.dir/move.c.o and b/cmake-build-debug/CMakeFiles/nhf.dir/move.c.o differ
diff --git a/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o b/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o
index bf77b6e2bf01e700c7d93ed91eec7a05583f5b12..3e4334d10c551c4746c56b253c2b36c329c92f4e 100644
Binary files a/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o and b/cmake-build-debug/CMakeFiles/nhf.dir/view.c.o differ
diff --git a/cmake-build-debug/nhf b/cmake-build-debug/nhf
index 76f49be00cfdda8883bef1dd2b1d79c0f8a956b6..b8b7a15247bcbef475c63577413dff7991cdbf73 100755
Binary files a/cmake-build-debug/nhf and b/cmake-build-debug/nhf differ
diff --git a/main.c b/main.c
index 3e413bd3131de8de286074829b74688f122054d2..40de94224484a81e062cce1e27d30557ba62ec65 100644
--- a/main.c
+++ b/main.c
@@ -27,11 +27,11 @@ int main(int argc, char *argv[]) {
 
     srand(time(NULL));
 
-    sdl_init(W, H, &window, &renderer);
+    sdl_init(W, H);
 
-    SDL_Texture *bagoly = kep_betolt(renderer, "infoc.png");
+    SDL_Texture *bagoly = kep_betolt("infoc.png");
 
-    SDL_TimerID timer_id = SDL_AddTimer(1000/120, idozit, NULL);
+    SDL_TimerID timer_id = SDL_AddTimer(1000/240, idozit, NULL);
 
     SDL_RenderPresent(renderer);
 
@@ -40,11 +40,11 @@ int main(int argc, char *argv[]) {
     bool reset = false;
 
     int elozo_x = 0;
-    int elozo_y = 550 - owl;
+    int elozo_y = W - 2*owl;
 
     Palyaelem *elem = NULL;
 
-    elem = palya_gen(elem, 20);
+    elem = palya_gen(elem, platform,50);
 
 
     while (!quit) {
@@ -53,7 +53,7 @@ int main(int argc, char *argv[]) {
         SDL_WaitEvent(&ev);
         SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
         SDL_RenderClear(renderer);
-        palyakirajzol(renderer, elem);
+        palyakirajzol(elem);
 
 
         keywatcher(ev, bagoly, elozo_x, elozo_y,  &quit, &moving);
diff --git a/move.c b/move.c
index b16a7082faca14be07ddb0690c64df2ec7763f1e..e0637c3da5bbfb292e1272306229a22b524d88d4 100644
--- a/move.c
+++ b/move.c
@@ -8,21 +8,13 @@
 #include <stdbool.h>
 
 
-int v = 5;
-int vj = 25;
-int vx = 0, vy = 0;
-int t = 0;
-int ipszilon = 0;
-double g = 5; //saját gravitáció, mivel a 9.82 túl nehéz lenne... :'(
+double v = 2;
+double vj = 10;
+double vx = 0, vy = 0;
+double g = 0.3; //saját gravitáció, mivel a 9.82 túl nehéz lenne... :'(
 int jump_t = 0;
-bool jump = false;
 
 
-int VPos(int y0){
-    int time = t/4;
-    return y0 - vj*time + ((int)g/2)*time*time;
-}
-
 static bool move(SDL_Event ev, int *x, const int *y)
 {
 
@@ -45,9 +37,7 @@ static bool move(SDL_Event ev, int *x, const int *y)
 
                 if (jump_t < 2)
                 {
-                    t = 0;
-                    ipszilon = *y;
-                    jump = true;
+                    vy = -vj;
                 }
                 jump_t++;
 
@@ -58,11 +48,13 @@ static bool move(SDL_Event ev, int *x, const int *y)
             switch (ev.key.keysym.sym) {
 
                 case SDLK_a:
+                case SDLK_LEFT:
                     if (vx < 0)
                         vx = 0;
                     break;
 
                 case SDLK_d:
+                case SDLK_RIGHT:
                     if (vx > 0)
                         vx = 0;
                     break;
@@ -73,7 +65,7 @@ static bool move(SDL_Event ev, int *x, const int *y)
 
 
         case SDL_USEREVENT:
-            t++;
+            vy += g;
             break;
 
         default:
@@ -90,9 +82,7 @@ void keywatcher(SDL_Event ev, SDL_Texture *kep, int x, int y, bool *quit, bool *
         case SDL_KEYUP:
             switch (ev.key.keysym.sym) {
                 case SDLK_i:
-                    kirajzol(renderer, kep, x, y);
-                    t = 0;
-                    ipszilon = 500;
+                    kirajzol(kep, x, y);
                     *moving = true;
                     break;
                 case SDLK_ESCAPE:
@@ -122,38 +112,33 @@ Palyaelem *palyamozgat(Palyaelem *eleje, int x)
 void move_draw(SDL_Event ev, SDL_Texture *kep, int *x, int *y, Palyaelem *eleje)
 {
     if(move(ev, x, y)){
-        *x += vx;
-        *y += vy;
+        *x += (int)vx;
+        *y += (int)vy;
     }
 
+    //platformokon ott marad
     Palyaelem *mozgo;
     for (mozgo = eleje; mozgo != NULL; mozgo = mozgo->kov)
     {
-        if ((*x <= mozgo->x && (*x + owl) > (mozgo->x) ) || (*x >= mozgo->x && (*x + owl) <= (mozgo->x + mozgo->hossz)))
+        if ((*x <= mozgo->x && (*x + owl) > (mozgo->x) ) || (*x >= mozgo->x && *x <= (mozgo->x + mozgo->hossz)))
         {
-            if ((*y + owl) <= mozgo->y + mozgo->magassag && (*y + owl) >= mozgo->y)
+            if ((*y + owl) <= mozgo->y + mozgo->magassag && (*y + owl) >= mozgo->y && vy>=0)
             {
                  *y = mozgo->y - owl;
-                 jump = false;
+                 vy = 0;
                  jump_t = 0;
                  if (ev.key.keysym.sym == SDLK_w || ev.key.keysym.sym == SDLK_UP || ev.key.keysym.sym == SDLK_SPACE)
                  {
-                     jump = true;
                      jump_t++;
                  }
 
             }
         }
     }
-    if (jump)
-    {
-        *y = VPos(ipszilon);
-    }
 
-    jump = true;
 
     //talajszintnél lejjebb nem ugrik
-    if (*y >= (H -2*owl))
+    if (*y >= (H - 2*owl))
     {
         *y = H - 2*owl;
         jump_t = 0;
@@ -162,19 +147,19 @@ void move_draw(SDL_Event ev, SDL_Texture *kep, int *x, int *y, Palyaelem *eleje)
 
 
     //pálya bal szélénél eltolja a koordinátákat
-    if (*x > (W - owl))
+    if (*x > (W - 5*owl))
     {
-        *x = W - owl;
-        palyamozgat(eleje, v);
+        *x = W - 5*owl;
+        palyamozgat(eleje, (int)v);
     }
 
     //pálya jobb szélénél tolja el a koordinátákat
     if (*x < 0)
     {
         *x = 0;
-        palyamozgat(eleje, -v);
+        palyamozgat(eleje, (int)-v);
     }
 
 
-    kirajzol(renderer, kep, *x, *y);
+    kirajzol(kep, *x, *y);
 }
\ No newline at end of file
diff --git a/move.h b/move.h
index f956ebd5c7ce9ccd55672c66a09caa5a564e1825..abc1048f043d04e37a4a35e2b3bd53e869ceaf56 100644
--- a/move.h
+++ b/move.h
@@ -10,11 +10,10 @@
 #include <stdbool.h>
 #include <math.h>
 
-extern int v;
-extern int vx;
-extern int vy;
+extern double v;
+extern double vx;
+extern double vy;
 extern double g;
-extern double pi;
 
 
 //static void move(SDL_Event ev, int *x, int *y);
diff --git a/view.c b/view.c
index e66865aef508164868108b46225a35608f321200..f81e5716b023f75397d6b7a20f89636d00b23a02 100644
--- a/view.c
+++ b/view.c
@@ -15,28 +15,25 @@ int owl = 50;
 SDL_Window *window;
 SDL_Renderer *renderer;
 
-void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer) {
+void sdl_init(int szeles, int magas) {
     if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
         SDL_Log("Nem indithato az SDL: %s", SDL_GetError());
         exit(1);
     }
-    SDL_Window *window = SDL_CreateWindow("InfoC Mario nhf", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, szeles, magas, 0);
+    window = SDL_CreateWindow("InfoC Mario nhf", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, szeles, magas, 0);
     if (window == NULL) {
         SDL_Log("Nem hozhato letre az ablak: %s", SDL_GetError());
         exit(1);
     }
-    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
+    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
     if (renderer == NULL) {
         SDL_Log("Nem hozhato letre a megjelenito: %s", SDL_GetError());
         exit(1);
     }
     SDL_RenderClear(renderer);
-
-    *pwindow = window;
-    *prenderer = renderer;
 }
 
-SDL_Texture *kep_betolt(SDL_Renderer *renderer, char *filename)
+SDL_Texture *kep_betolt(char *filename)
 {
     SDL_Texture *kep = IMG_LoadTexture(renderer, filename);
     if (kep == NULL)
@@ -48,14 +45,14 @@ SDL_Texture *kep_betolt(SDL_Renderer *renderer, char *filename)
     return kep;
 }
 
-void kirajzol(SDL_Renderer *renderer, SDL_Texture *kep, int x, int y) {
+void kirajzol(SDL_Texture *kep, int x, int y) {
 
     SDL_Rect src = {0, 0, 128, 128};
     SDL_Rect dest = {x, y, owl, owl};
     SDL_RenderCopy(renderer, kep, &src, &dest);
 }
 
-Palyaelem *gen_elem(Palyaelem *elem)
+Palyaelem *gen_elem(Palyaelem *elem, Type type)
 {
     Palyaelem *uj = (Palyaelem *) malloc(sizeof(Palyaelem));
     uj->kov = NULL;
@@ -66,6 +63,32 @@ Palyaelem *gen_elem(Palyaelem *elem)
         uj->x = (W/1/3);
         uj->y = (H - (3*owl));
         uj->magassag = 20;
+        uj->type = type;
+
+        switch (type){
+            case ground:
+            {
+                uj->color.R = 101;
+                uj->color.G = 67;
+                uj->color.B = 33;
+                break;
+            }
+            case platform:
+            {
+                uj->color.R = 0;
+                uj->color.G = 255;
+                uj->color.B = 0;
+                break;
+            }
+            case item:
+                uj->color.R = 255;
+                uj->color.G = 0;
+                uj->color.B = 0;
+                break;
+            default:
+                break;
+
+        }
         elem = uj;
         return  elem;
     }
@@ -74,17 +97,49 @@ Palyaelem *gen_elem(Palyaelem *elem)
     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);
+    uj->hossz = rand() % (W / 3) + 2*owl;
+
+    int xmin = mozgo->x + mozgo->hossz + owl;
+    int xmax = mozgo->x + mozgo->hossz + owl*3;
+    uj->x = rand() % (xmax - xmin) + xmin;
+
+    int ymin = (mozgo->y - owl) < (H - 3*owl) ? (mozgo->y - owl) : (H - 3*owl);
+    int ymax = mozgo->magassag + (4*owl);
+    uj->y = rand() % (ymax - ymin) + ymin;
     if (uj->y >= (H - owl))
         uj->y -= (3*owl);
     uj->magassag = 20;
+    uj->type = type;
+
+    switch (type){
+        case ground:
+        {
+            uj->color.R = 101;
+            uj->color.G = 67;
+            uj->color.B = 33;
+            break;
+        }
+        case platform:
+        {
+            uj->color.R = 0;
+            uj->color.G = 255;
+            uj->color.B = 0;
+            break;
+        }
+        case item:
+            uj->color.R = 255;
+            uj->color.G = 0;
+            uj->color.B = 0;
+            break;
+        default:
+            break;
+
+    }
 
     return elem;
 }
 
-void palyaelem_kirajzolo(Palyaelem *elem, SDL_Renderer *prenderer)
+void palyaelem_kirajzolo(Palyaelem *elem)
 {
     SDL_Rect r;
     r.x = elem->x;
@@ -92,29 +147,32 @@ void palyaelem_kirajzolo(Palyaelem *elem, SDL_Renderer *prenderer)
     r.w = elem->hossz;
     r.h = elem->magassag;
 
-    SDL_SetRenderDrawColor( renderer, 0, 255, 0, 255 );
-    SDL_RenderFillRect( prenderer, &r );
+    SDL_SetRenderDrawColor( renderer, elem->color.R, elem->color.G, elem->color.B, 255);
+    SDL_RenderFillRect(renderer, &r );
 }
 
-Palyaelem* palya_gen(Palyaelem *eleje, int hany_elem)
+Palyaelem* palya_gen(Palyaelem *eleje, Type type, int hany_elem)
 {
     for (int i = 0; i < hany_elem; ++i) {
-        eleje = gen_elem(eleje);
+        eleje = gen_elem(eleje, type);
     }
     return eleje;
 }
 
-void palyakirajzol(SDL_Renderer *prenderer, Palyaelem *elem)
+void palyakirajzol(Palyaelem *elem)
 {
     Palyaelem alap;
     alap.x = 0;
     alap.y = 550;
     alap.hossz = 900;
     alap.magassag = 50;
+    alap.color.R = 101;
+    alap.color.G = 67;
+    alap.color.B = 33;
 
-    palyaelem_kirajzolo(&alap, prenderer);
+    palyaelem_kirajzolo(&alap);
     Palyaelem * mozgo;
     for (mozgo = elem; mozgo != NULL; mozgo = mozgo->kov)
-        palyaelem_kirajzolo(mozgo, prenderer);
+        palyaelem_kirajzolo(mozgo);
 
 }
\ No newline at end of file
diff --git a/view.h b/view.h
index 6199da11ceeb64a524304a3f4e00f591085144e1..8ec68e8e706ad147ca37d36a437bdeff82609616 100644
--- a/view.h
+++ b/view.h
@@ -10,9 +10,19 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+typedef enum{
+    ground,
+    platform,
+    item
+}Type;
+
 typedef struct Palyaelem{
     int x, y;
     int hossz,  magassag;
+    struct {
+        int R, G, B;
+    } color;
+    Type type;
     struct Palyaelem *kov;
 }Palyaelem;
 
@@ -23,18 +33,18 @@ extern int owl;
 extern SDL_Window *window;
 extern SDL_Renderer *renderer;
 
-void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer);
+void sdl_init(int szeles, int magas);
 
-SDL_Texture *kep_betolt(SDL_Renderer *renderer, char *filename);
+SDL_Texture *kep_betolt(char *filename);
 
-void kirajzol(SDL_Renderer *renderer, SDL_Texture *kep, int x, int y);
+void kirajzol(SDL_Texture *kep, int x, int y);
 
-Palyaelem *gen_elem(Palyaelem *elem);
+Palyaelem *gen_elem(Palyaelem *elem, Type type);
 
-void palyaelem_kirajzolo(Palyaelem *elem, SDL_Renderer *prenderer);
+void palyaelem_kirajzolo(Palyaelem *elem);
 
-Palyaelem* palya_gen(Palyaelem *eleje, int hany_elem);
+Palyaelem* palya_gen(Palyaelem *eleje, Type type, int hany_elem);
 
-void palyakirajzol(SDL_Renderer *prenderer, Palyaelem *elem);
+void palyakirajzol(Palyaelem *elem);
 
 #endif //NHF_VIEW_H
\ No newline at end of file