Finished 25_sdl_input_app.txt.

This commit is contained in:
Relintai 2021-04-10 11:54:43 +02:00
parent 077ef3a504
commit def6dbf383

View File

@ -1,4 +1,9 @@
Készítsünk egy újat / fejlesszük tovább a MainScene osztályt, amely a benne tárolt
Sprite-ot w, a, s, d gombok lenyomására képes a megfelelő irányogba mozgatni,
és a kamerát is átméretezi, az ablak átméretezésekor.
Az UML diagram:
|---------------------------------------------------------------------------------------|
| class MainScene : public Scene |
@ -21,17 +26,13 @@
| + bool _right |
|---------------------------------------------------------------------------------------|
A függvények pszeudokódja:
#include "main_scene.h"
#include "renderer.h"
#include "rect2.h"
#include <SDL.h>
----------------------------------------------------------------------------
void event(const SDL_Event &ev):
switch (ev.type):
case SDL_WINDOWEVENT::
case SDL_WINDOWEVENT:
switch (ev.window.event):
case SDL_WINDOWEVENT_SIZE_CHANGED::
int width = ev.window.data1
@ -40,13 +41,9 @@ void event(const SDL_Event &ev):
_camera->viewport = Rect2(0, 0, width, height)
break
break
case SDL_KEYDOWN::
case SDL_KEYDOWN:
if (ev.key.keysym.scancode == SDL_SCANCODE_A):
_left = true
else if (ev.key.keysym.scancode == SDL_SCANCODE_W):
@ -56,10 +53,9 @@ void event(const SDL_Event &ev):
else if (ev.key.keysym.scancode == SDL_SCANCODE_D):
_right = true
break
case SDL_KEYUP::
case SDL_KEYUP:
if (ev.key.keysym.scancode == SDL_SCANCODE_A):
_left = false
@ -70,29 +66,28 @@ void event(const SDL_Event &ev):
else if (ev.key.keysym.scancode == SDL_SCANCODE_D):
_right = false
break
Itt csak letároljuk, hogy mely gombok vannak ép lenyomva.
----------------------------------------------------------------------------
void update(float delta):
if (_up):
_sprite->set_y(_sprite->get_y() - 50 * delta)
if (_down):
_sprite->set_y(_sprite->get_y() + 50 * delta)
if (_left):
_sprite->set_x(_sprite->get_x() - 50 * delta)
if (_right):
_sprite->set_x(_sprite->get_x() + 50 * delta)
Itt mozgatjuk a sprite-ot.
----------------------------------------------------------------------------
void render():
Renderer::get_singleton()->clear()
@ -101,6 +96,7 @@ void render():
Renderer::get_singleton()->draw_sprite(_sprite)
----------------------------------------------------------------------------
MainScene():
_camera = new Camera()
@ -113,6 +109,7 @@ MainScene():
_left = false
_right = false
----------------------------------------------------------------------------
~MainScene():
_texture->free()
@ -123,3 +120,4 @@ MainScene():
delete _image
delete _camera
----------------------------------------------------------------------------