Animação Simples - Galeria de Exemplos

Animação Simples

Descrição: Este exemplo demonstra como criar uma animação simples de uma bola na tela.

Autor: Edirlei Soares de Lima

Download: Exemplos02.zip

 

Código Fonte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "Graphics.h"
#include <stdio.h>
Graphics graphics;
 
float px = 100;    //Posicao da bola no eixo X.
float py = 100;    //Posicao da bola no eixo y.
float speed = 150; //Velocidade da bola.
int dir = 1;       //Variavel para controle da direcao do movimento da bola.
bool pause = false;//Variavel para definir quando a animacao esta em pause.
 
//Funcao que controla a animacao do retangulo.
void Animate()
{
    if (!pause)
    {
        if (dir == 1)
        {
            //Calcula o deslocamento X e Y de forma independente da taxa de frames por segundo.
            px += speed * graphics.GetElapsedTime();
            py += speed * graphics.GetElapsedTime();
        }
        else if (dir == 2)
        {
            px += speed * graphics.GetElapsedTime();
            py -= speed * graphics.GetElapsedTime();
        }
        else if (dir == 3)
        {
            px -= speed * graphics.GetElapsedTime();
            py -= speed * graphics.GetElapsedTime();
        }
        else if (dir == 4)
        {
            px -= speed * graphics.GetElapsedTime();
            py += speed * graphics.GetElapsedTime();
        }
 
        //Controla a direcao do movimento da bola
        if (px+50 > graphics.GetScreenWidth())
        {
            if (dir == 1)
                dir = 4;
            else if (dir == 2)
                dir = 3;
        }
        else if (px < 50)
        {
            if (dir == 3)
                dir = 2;
            else if (dir == 4)
                dir = 1;
        }
        else if (py+50 > graphics.GetScreenHeight())
        {
            if (dir == 1)
                dir = 2;
            else if (dir == 4)
                dir = 3;
        }
        else if (py < 50)
        {
            if (dir == 3)
                dir = 4;
            else if (dir == 2)
                dir = 1;
        }
    }
}
 
void KeyboardInput(int key, int state, int x, int y)
{
    if (((key == 'p')||(key == 'P'))&&(state == KEY_STATE_DOWN))
    {
        pause = !pause;
    }
}
 
void MainLoop()
    Animate();
    graphics.SetColor(35, 191, 27);
    graphics.FillCircle2D(px, py, 50, 32); //Desenha a bola na tela.
}
 
int main(void)
{
    graphics.CreateMainWindow(800, 600, "Exemplo 02 - Animação Simples");
    graphics.SetBackgroundColor(0, 0, 0);
    graphics.SetKeyboardInput(KeyboardInput);
    graphics.SetMainLoop(MainLoop);
    graphics.StartMainLoop();
    return 0;
}