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

Revision:
22:a7619f315c0e
Parent:
21:a554229e884b
Child:
23:861ceaca2518
--- a/main.cpp	Tue Aug 27 18:54:15 2013 +0000
+++ b/main.cpp	Tue Aug 27 20:40:24 2013 +0000
@@ -4,7 +4,8 @@
 #include "GameButton.h"
 #define NUMBER_OF_PIXELS 50
 #define PADDLE_LENGTH    5
-#define STARTING_SPEED   20
+#define START_SPEED   20
+#define SPEED_FACTOR  8
 #define LEFT false
 #define RIGHT true
 
@@ -86,15 +87,15 @@
     uint8_t left_score = 0, right_score = 0;
     pc.baud(115200);
     updater.attach(UpdateLEDstrip, .03);
-    //demopaddlepos.attach(UpdateDemoPaddle, .03);
     ledstrip.format(8,0);        //15 bits, mode '0'
     ledstrip.frequency(1000000); //1MHz clock
     for(ledcounter = 0; ledcounter < NUMBER_OF_PIXELS; ledcounter++) {//turn off leds
         write_led(&totalstrip[ledcounter], 0,0,0);
     }
     paddle.setSize(6);
-    paddle.setSpeed(STARTING_SPEED);
+    paddle.setSpeed(START_SPEED);
     paddle.setColor(255,0,255);
+    paddle.position = NUMBER_OF_PIXELS/2;
     gametimer.start();
     while(1) {
         static uint8_t naglevel1 = 0, naglevel2 = 0;
@@ -114,14 +115,15 @@
                 if(buttonright.pushflag)
                 {
                     //printf("\n\rright pushed"); 
+                    pc.printf("R\n\r");
                     buttonright.pushflag = false;
                     if(buttonright.paddlepos >= NUMBER_OF_PIXELS-1  ) //also count when hit at last pixel = NUMBER_OF_PIXELS-1
                     {
                         paddle.direction = 0;
-                        paddle.setSpeed(25+(buttonright.paddlepos-(NUMBER_OF_PIXELS-1))*8);
+                        paddle.setSpeed(START_SPEED+(buttonright.paddlepos-(NUMBER_OF_PIXELS-1))*SPEED_FACTOR);
                         paddle.position = NUMBER_OF_PIXELS-2;
                     }
-                    pc.printf("\n\rright pushed. Paddle position: %d, registered: %d, speed: %", paddle.position, buttonright.paddlepos,paddle.getSpeed());
+                    //pc.printf("\n\rright pushed. Paddle position: %d, registered: %d, speed: %", paddle.position, buttonright.paddlepos,paddle.getSpeed());
                 }
                 buttonleft.pushflag = false;
             }
@@ -130,14 +132,15 @@
                 if(buttonleft.pushflag)
                 {
                     //printf("\n\rleft pushed");
+                    pc.printf("L\n\r");
                     buttonleft.pushflag = false;
                     if(buttonleft.paddlepos <= 0  )
                     {
                         paddle.direction = 1;
-                        paddle.setSpeed(25+(-buttonleft.paddlepos)*8);
+                        paddle.setSpeed(START_SPEED+(-buttonleft.paddlepos)*SPEED_FACTOR);
                         paddle.position  = 0;
                     }
-                    pc.printf("\n\rleft pushed. Paddle position: %d, registered: %d, speed %d", paddle.position, buttonleft.paddlepos, paddle.getSpeed());
+                    //pc.printf("\n\rleft pushed. Paddle position: %d, registered: %d, speed %d", paddle.position, buttonleft.paddlepos, paddle.getSpeed());
                 }
                 buttonright.pushflag = false;
             }
@@ -146,27 +149,25 @@
         {
             if(paddle.position > ( NUMBER_OF_PIXELS + paddle.getSize() ) && (paddle.direction == 1))
             {
-                pc.printf("\n\rleft player score. Paddle position: %d", paddle.position);
+                //pc.printf("\n\rleft player score. Paddle position: %d", paddle.position);
                 //left player scores!
                 left_score++;
-                HandleScore(&left_score,&right_score,false, &gametimer);
-                paddle.position = -paddle.getSize();
+                pc.printf("S:%2d:%2d\n\r",left_score,right_score);
                 naglevel1=naglevel2 = 0;
-                paddle.setSpeed(30);
                 buttonright.pushflag = false;
                 buttonleft.pushflag  = false;
+                HandleScore(&left_score,&right_score,false, &gametimer);
             }
              if(paddle.position < -paddle.getSize() && (paddle.direction == 0))
              {
-                pc.printf("\n\rlright player score. Paddle position: %d", paddle.position);
+                //pc.printf("\n\rright player score. Paddle position: %d", paddle.position);
                 //right player scores!
                 right_score++;
-                HandleScore(&left_score,&right_score,true, &gametimer);
+                pc.printf("S:%2d:%2d\n\r",left_score,right_score);
                 naglevel1=naglevel2 = 0;
-                paddle.position = NUMBER_OF_PIXELS;
-                paddle.setSpeed(30);
                 buttonright.pushflag = false;
                 buttonleft.pushflag  = false;
+                HandleScore(&left_score,&right_score,true, &gametimer);
              }
          }
          if(gametimer.read()>10 && !naglevel1)
@@ -194,10 +195,13 @@
        *leftscore = 0;
        *rightscore = 0;
        Randomblinks(5,false);
+       pc.printf("EOG\n\r");
     }
     (*(mbed::Timer *)gametimer).reset();
     paddle.setSize(6);
-    paddle.setSpeed(STARTING_SPEED);
+    (rand()%20)>10?paddle.direction = 1:paddle.direction = 0;
+    paddle.setSpeed(START_SPEED);
+    paddle.position = NUMBER_OF_PIXELS/2;
 }
 
 void DrawGamePaddle(void)