1D-Pong game based on a LED strip with 150 LPD6803-controlled pixels. Game keeps score for 'best-of-21' game. Written for KL25Z
Diff: main.cpp
- 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)