mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-04-21 21:51:22 +02:00
Finished 25_sdl_input_app.txt.
This commit is contained in:
parent
077ef3a504
commit
def6dbf383
@ -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
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user