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@23:861ceaca2518, 2013-08-27 (annotated)
- Committer:
- vsluiter
- Date:
- Tue Aug 27 21:22:14 2013 +0000
- Revision:
- 23:861ceaca2518
- Parent:
- 21:a554229e884b
Updated scoring (indicates who's winning) and updated EOG / scoring with new game
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vsluiter | 21:a554229e884b | 1 | #include "paddle.h" |
vsluiter | 21:a554229e884b | 2 | |
vsluiter | 21:a554229e884b | 3 | Paddle::Paddle() |
vsluiter | 21:a554229e884b | 4 | { |
vsluiter | 21:a554229e884b | 5 | setColor(255,255,255); |
vsluiter | 21:a554229e884b | 6 | setSize(4); |
vsluiter | 21:a554229e884b | 7 | position = -getSize(); |
vsluiter | 21:a554229e884b | 8 | direction = 1; |
vsluiter | 21:a554229e884b | 9 | setSpeed(50); |
vsluiter | 21:a554229e884b | 10 | } |
vsluiter | 21:a554229e884b | 11 | |
vsluiter | 21:a554229e884b | 12 | void Paddle::setSpeed(float speed) |
vsluiter | 21:a554229e884b | 13 | { |
vsluiter | 21:a554229e884b | 14 | //truncate |
vsluiter | 21:a554229e884b | 15 | float time; |
vsluiter | 21:a554229e884b | 16 | if(speed > 100000) |
vsluiter | 21:a554229e884b | 17 | speed = 100000; |
vsluiter | 21:a554229e884b | 18 | if(speed <= 0) |
vsluiter | 21:a554229e884b | 19 | speed = 0.001; |
vsluiter | 21:a554229e884b | 20 | m_speed = speed; |
vsluiter | 21:a554229e884b | 21 | time = 1/m_speed; |
vsluiter | 21:a554229e884b | 22 | UpdatePosition.detach(); |
vsluiter | 21:a554229e884b | 23 | UpdatePosition.attach(this,&Paddle::PositionUpdater, time); |
vsluiter | 21:a554229e884b | 24 | } |
vsluiter | 21:a554229e884b | 25 | |
vsluiter | 21:a554229e884b | 26 | void Paddle::PositionUpdater(void) |
vsluiter | 21:a554229e884b | 27 | { |
vsluiter | 21:a554229e884b | 28 | if(direction == 1) |
vsluiter | 21:a554229e884b | 29 | position++; |
vsluiter | 21:a554229e884b | 30 | else |
vsluiter | 21:a554229e884b | 31 | position--; |
vsluiter | 21:a554229e884b | 32 | } |
vsluiter | 21:a554229e884b | 33 | |
vsluiter | 21:a554229e884b | 34 | uint8_t Paddle::getColor(uint8_t pixel, uint8_t color) |
vsluiter | 21:a554229e884b | 35 | { |
vsluiter | 21:a554229e884b | 36 | if(pixel<MAX_PADDLE_SIZE && color < 3) |
vsluiter | 21:a554229e884b | 37 | return m_paddle[pixel][color]; |
vsluiter | 21:a554229e884b | 38 | else |
vsluiter | 21:a554229e884b | 39 | return 0; |
vsluiter | 21:a554229e884b | 40 | } |
vsluiter | 21:a554229e884b | 41 | |
vsluiter | 21:a554229e884b | 42 | uint8_t Paddle::getSize(void) |
vsluiter | 21:a554229e884b | 43 | { |
vsluiter | 21:a554229e884b | 44 | return m_size; |
vsluiter | 21:a554229e884b | 45 | } |
vsluiter | 21:a554229e884b | 46 | |
vsluiter | 21:a554229e884b | 47 | void Paddle::setSize(uint8_t size) |
vsluiter | 21:a554229e884b | 48 | { |
vsluiter | 21:a554229e884b | 49 | if(size > MAX_PADDLE_SIZE) |
vsluiter | 21:a554229e884b | 50 | size = MAX_PADDLE_SIZE; |
vsluiter | 21:a554229e884b | 51 | m_size = size; |
vsluiter | 21:a554229e884b | 52 | setColor(m_red, m_green, m_blue); |
vsluiter | 21:a554229e884b | 53 | } |
vsluiter | 21:a554229e884b | 54 | |
vsluiter | 21:a554229e884b | 55 | void Paddle::setColor(uint8_t red, uint8_t green, uint8_t blue) |
vsluiter | 21:a554229e884b | 56 | { |
vsluiter | 21:a554229e884b | 57 | uint8_t paddlepixel; |
vsluiter | 21:a554229e884b | 58 | m_red = red; |
vsluiter | 21:a554229e884b | 59 | m_green = green; |
vsluiter | 21:a554229e884b | 60 | m_blue = blue; |
vsluiter | 21:a554229e884b | 61 | for(paddlepixel = 0 ; paddlepixel < MAX_PADDLE_SIZE ; paddlepixel++) |
vsluiter | 21:a554229e884b | 62 | { |
vsluiter | 21:a554229e884b | 63 | float factor; |
vsluiter | 21:a554229e884b | 64 | factor = 1.0*paddlepixel/(m_size*1.0); |
vsluiter | 21:a554229e884b | 65 | if (factor > 1) |
vsluiter | 21:a554229e884b | 66 | factor = 1; |
vsluiter | 21:a554229e884b | 67 | factor = factor*factor*factor;// make the effect more dramatic |
vsluiter | 21:a554229e884b | 68 | m_paddle[paddlepixel][0] = (float)m_red * factor; |
vsluiter | 21:a554229e884b | 69 | m_paddle[paddlepixel][1] = (float)m_green * factor; |
vsluiter | 21:a554229e884b | 70 | m_paddle[paddlepixel][2] = (float)m_blue * factor; |
vsluiter | 21:a554229e884b | 71 | } |
vsluiter | 21:a554229e884b | 72 | } |