mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-04-21 21:51:22 +02:00
78 lines
2.3 KiB
Plaintext
78 lines
2.3 KiB
Plaintext
|
|
Implementájunk egy Scene-t, ami kirajzol valamit a képernyőre. Például az esetünkben egy Sprite-ot.
|
|
|
|
Az ApplicationImpl már kész, az fog ebből egyet csinálni, és beállítani aktívnak.
|
|
|
|
Itt az UML diagram:
|
|
|
|
|---------------------------------------------------------------------------------------|
|
|
| class MainScene : public Scene |
|
|
|---------------------------------------------------------------------------------------|
|
|
| + void event(const SDL_Event &ev) |
|
|
| + void update(float delta) |
|
|
| + void render() |
|
|
| |
|
|
| + MainScene() |
|
|
| + ~MainScene() |
|
|
| |
|
|
| + Camera *_camera |
|
|
| + Image *_image |
|
|
| + Texture *_texture |
|
|
| + Sprite *_sprite |
|
|
| + int _dir |
|
|
|---------------------------------------------------------------------------------------|
|
|
|
|
A függvények pszeudokódja:
|
|
|
|
-----------
|
|
|
|
void event(const SDL_Event &ev):
|
|
return
|
|
|
|
-----------
|
|
|
|
void update(float delta):
|
|
return
|
|
|
|
-----------
|
|
|
|
void render():
|
|
Renderer::get_singleton()->clear()
|
|
|
|
_camera->viewport.x += _dir
|
|
|
|
if (_camera->viewport.x <= -100)
|
|
_dir = 1
|
|
else if (_camera->viewport.x >= 100)
|
|
_dir = -1
|
|
|
|
_camera->bind()
|
|
|
|
_sprite->draw()
|
|
|
|
-----------
|
|
|
|
MainScene():
|
|
_camera = new Camera()
|
|
_image = new Image("ti.bmp")
|
|
_texture = new Texture(_image)
|
|
_sprite = new Sprite(_texture)
|
|
|
|
_sprite->set_x(30)
|
|
_sprite->set_y(30)
|
|
|
|
_dir = 1
|
|
|
|
-----------
|
|
|
|
~MainScene():
|
|
_texture->free()
|
|
_image->free()
|
|
|
|
delete _sprite
|
|
delete _texture
|
|
delete _image
|
|
delete _camera
|
|
|
|
-----------
|