The complete class and app for this chapter is listed below for reference. Please compare this with your own result.
De class movingCircle:
class movingCircle
{
Circle c ;
Vec2 speed;
5 Color color;
void create(float radius, Vec2 pos, Vec2 speed, Color color)
{
c.r = radius;
10 c.pos = pos ;
T.speed = speed ;
T.color = color ;
}
15 bool move()
{
Vec2 newPos = c.pos + speed * Time.d();
if(Cuts(newPos, D.viewRect()))
{
20 c.pos = newPos;
return true;
} else return false;
}
25 Vec2 getPos()
{
return c.pos;
}
30 void setPos(Vec2 pos)
{
c.pos = pos;
}
35 void reset()
{
c.pos = 0;
}
40 void draw()
{
c.draw(color);
}
}
45
The application:
Memc<movingCircle> circles;
void InitPre()
{
5 EE_INIT();
}
bool Init()
{
10 return true;
}
void Shut() {}
15bool Update()
{
if(Kb.bp(KB_ESC)) return false;
if(Kb.bp(KB_SPACE))
20 {
circles.New().create(RandomF(0.05, 0.1),
Vec2(0),
Vec2(RandomF(-1, 1), RandomF(-1, 1)),
Color(Random(255), Random(255), Random(255))
25 );
}
if(Kb.bp(KB_F1))
{
30 REPA(circles)
{
circles[i].setPos(Vec2(RandomF(-D.w(), D.w()), RandomF(-D.h(), D.h())));
}
}
35
REPA(circles)
{
if(!circles[i].move()) circles[i].reset();
}
40
return true;
}
void Draw()
45{
D.clear(BLACK);
REPA(circles)
{
50 circles[i].draw();
}
}