1D-Pong game based on a LED strip with 150 LPD6803-controlled pixels. Game keeps score for 'best-of-21' game. Written for KL25Z

Dependencies:   MODSERIAL mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers paddle.cpp Source File

paddle.cpp

00001 #include "paddle.h"
00002 
00003 Paddle::Paddle()
00004 {
00005     setColor(255,255,255);
00006     setSize(4);
00007     position = -getSize();
00008     direction = 1;
00009     setSpeed(50);
00010 }
00011 
00012 void Paddle::setSpeed(float speed)
00013 {
00014 //truncate
00015     float time;
00016     if(speed > 100000)
00017         speed = 100000;
00018     if(speed <= 0)
00019         speed = 0.001;
00020     m_speed = speed;
00021     time = 1/m_speed;
00022     UpdatePosition.detach();
00023     UpdatePosition.attach(this,&Paddle::PositionUpdater, time);
00024 }
00025 
00026 void Paddle::PositionUpdater(void)
00027 {
00028     if(direction == 1)
00029         position++;
00030     else
00031         position--;
00032 }
00033 
00034 uint8_t Paddle::getColor(uint8_t pixel, uint8_t color)
00035 {
00036     if(pixel<MAX_PADDLE_SIZE && color < 3)
00037         return m_paddle[pixel][color];
00038     else
00039         return 0;
00040 }
00041 
00042 uint8_t Paddle::getSize(void)
00043 {
00044     return m_size;
00045 }
00046 
00047 void Paddle::setSize(uint8_t size)
00048 {
00049     if(size > MAX_PADDLE_SIZE)
00050         size = MAX_PADDLE_SIZE;
00051     m_size = size;
00052     setColor(m_red, m_green, m_blue);
00053 }
00054 
00055 void Paddle::setColor(uint8_t red, uint8_t green, uint8_t blue)
00056 {
00057     uint8_t paddlepixel;
00058     m_red = red;
00059     m_green = green;
00060     m_blue = blue;
00061     for(paddlepixel = 0 ; paddlepixel < MAX_PADDLE_SIZE ; paddlepixel++)
00062     {
00063         float factor;
00064         factor = 1.0*paddlepixel/(m_size*1.0);
00065         if (factor > 1)
00066             factor = 1;
00067         factor = factor*factor*factor;// make the effect more dramatic
00068         m_paddle[paddlepixel][0] = (float)m_red * factor; 
00069         m_paddle[paddlepixel][1] = (float)m_green * factor;
00070         m_paddle[paddlepixel][2] = (float)m_blue * factor;
00071     }
00072 }