asdf
Dependencies: NokiaLCD XMIT_IR mbed
Fork of 4180_mP_WirelessPong_revC by
Revision 20:a74fe4d43ec0, committed 2012-10-09
- Comitter:
- mesdoram
- Date:
- Tue Oct 09 23:28:34 2012 +0000
- Parent:
- 19:5a4be4519de5
- Commit message:
- asdf
Changed in this revision
--- a/main.cpp Sat Oct 06 17:45:32 2012 +0000 +++ b/main.cpp Tue Oct 09 23:28:34 2012 +0000 @@ -2,6 +2,7 @@ #include "rtos.h" #include "NokiaLCD.h" #include "XMIT_IR.h" +#include "pong.h" #define FPS 15 #define PKT_RATE 15 @@ -20,19 +21,19 @@ ****************************************/ //Function Prototypes -void BlinkAlive(void const* arguments); +/*void BlinkAlive(void const* arguments); void UpdateLCD(void const* arguments); void IRStuff(void const* arguments); void ISR_UARTRX(void); char CheckPacket(char new_data, char* packet_buffer, char* data, int data_len); void MakePacket2(char* data,int len); - -//Pin Setup +*/ +/*//Pin Setup PwmOut led1(LED1); PwmOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); -NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type +//NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type Serial* devicerx; //Serial devicetx(p13,NC); @@ -50,15 +51,32 @@ Thread* threadptr_irstuff; char packet_buff[10]; Mutex data_update_mutex; - +*/ - +AnalogIn paddle(p20); int main() { - + double left = 1.00, right = 0.8; + right = paddle; + pong pongTest; + pongTest.drawObjects(); + while(1) + { + pongTest.clear(); + right = paddle; + pongTest.update(left, right); + pongTest.drawObjects(); + /*lcd.cls(); + lcd.locate(0,1); + lcd.printf("%d", counter); + */ + Thread::wait(1000/FPS); + } +} +/* //LCD init - lcd.background(0x000000); + //lcd.background(0x000000); //PC serial init pc.baud(19200); @@ -78,8 +96,8 @@ threadptr_irstuff = &thread_irstuff; - - while(1) { +*/ + /* while(1) { //Use main loop to set LCD framerate thread_updatelcd.signal_set(0x1); @@ -197,4 +215,4 @@ } - +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pong/pong.cpp Tue Oct 09 23:28:34 2012 +0000 @@ -0,0 +1,69 @@ +#include "pong.h" +using namespace std; + +pong::pong() +{ + lcd = new NokiaLCD(p5, p7, p8, p9, NokiaLCD::LCD6610); + //for all dimensions: x, y, width, height + ball[0] = 65; ball[1] = 65; ball[2] = 3; ball[3] = 3; + ballDir[0] = -1; ballDir[1] = 1; + rightPaddle[0] = 10; rightPaddle[1] = 55; rightPaddle[2] = 5; rightPaddle[3] = 20; + leftPaddle[0] = 115; leftPaddle[1] = 55; leftPaddle[2] = 5; leftPaddle[3] = 20; + score[0] = 0; score[1] = 0; + +} + +void pong::drawObjects() +{ + lcd->background(0x000000); + lcd->fill(leftPaddle[0], leftPaddle[1], leftPaddle[2], leftPaddle[3], 0xFFFFFF); + lcd->fill(rightPaddle[0], rightPaddle[1], rightPaddle[2], rightPaddle[3], 0xFFFFFF); + lcd->fill(ball[0], ball[1], ball[2], ball[3], 0xFFFFFF); +} + +void pong::update(double left, double right) +{ + leftPaddle[1] = left * 110; + rightPaddle[1] = right * 110; + + //right paddle collision check -- reverse if true + if ( (ball[0] + ball[2] -1 + ballDir[0]) == leftPaddle[0] ) { + if ( ( (ball[1] + ball[3]-1 + ballDir[1]) >= leftPaddle[1] ) && ( (ball[1] + ballDir[1]) <= (leftPaddle[1] + leftPaddle[3]-1) ) ) + ballDir[0] = -1; + } + + //left paddle collision check -- reverse if true + if ( (ball[0] + ballDir[0]) == (rightPaddle[0] + rightPaddle[2]-1) ) { + if ( ( (ball[1] + ball[3]-1 + ballDir[1]) >= rightPaddle[1] ) && ( (ball[1] + ballDir[1]) <= (rightPaddle[1] + rightPaddle[3]-1) ) ) + ballDir[0] = 1; + } + + ball[0] = ball[0] + ballDir[0]; + ball[1] = ball[1] + ballDir[1]; + + //if the ball hits the left wall, increment right player's score and reset + if ( ball[0] == 0 ) + { + score[1]++; + ball[0] = 65; ball[1] = 65; ball[2] = 3; ball[3] = 3; + ballDir[0] = -1; ballDir[1] = 1; + } + //if the ball hits the right wall, increment left player's score and reset + else if ( (ball[0] + ball[2]-1) == 130 ) + { + score[0]++; + ball[0] = 65; ball[1] = 65; ball[2] = 3; ball[3] = 3; + ballDir[0] = 1; ballDir[1] = 1; + } + + if ( (ball[1] + 2 == 130) && (ballDir[1] == 1) ) ballDir[1] = -1; + else if ( (ball[1] - 1 == 0) && (ballDir[1] == -1) ) ballDir[1] = 1; + +} + +void pong::clear() +{ + lcd->fill(leftPaddle[0], leftPaddle[1], leftPaddle[2], leftPaddle[3], 0x000000); + lcd->fill(rightPaddle[0], rightPaddle[1], rightPaddle[2], rightPaddle[3], 0x000000); + lcd->fill(ball[0], ball[1], ball[2], ball[3], 0x000000); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pong/pong.h Tue Oct 09 23:28:34 2012 +0000 @@ -0,0 +1,19 @@ +#include "mbed.h" +#include "NokiaLCD.h" + +class pong +{ +private: + NokiaLCD *lcd; + int ball[4]; + int ballDir[2]; + int leftPaddle[4]; + int rightPaddle[4]; + int score[2]; + +public: + pong(); + void drawObjects(); + void update(double, double); + void clear(); +}; \ No newline at end of file