1D-Pong game based on a LED strip with 150 LPD6803-controlled pixels. Game keeps score for 'best-of-21' game. Written for KL25Z
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 }
Generated on Tue Jul 12 2022 23:30:18 by 1.7.2