![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
asdf
Dependencies: NokiaLCD XMIT_IR mbed
Fork of 4180_mP_WirelessPong_revC by
pong/pong.cpp@20:a74fe4d43ec0, 2012-10-09 (annotated)
- Committer:
- mesdoram
- Date:
- Tue Oct 09 23:28:34 2012 +0000
- Revision:
- 20:a74fe4d43ec0
asdf
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mesdoram | 20:a74fe4d43ec0 | 1 | #include "pong.h" |
mesdoram | 20:a74fe4d43ec0 | 2 | using namespace std; |
mesdoram | 20:a74fe4d43ec0 | 3 | |
mesdoram | 20:a74fe4d43ec0 | 4 | pong::pong() |
mesdoram | 20:a74fe4d43ec0 | 5 | { |
mesdoram | 20:a74fe4d43ec0 | 6 | lcd = new NokiaLCD(p5, p7, p8, p9, NokiaLCD::LCD6610); |
mesdoram | 20:a74fe4d43ec0 | 7 | //for all dimensions: x, y, width, height |
mesdoram | 20:a74fe4d43ec0 | 8 | ball[0] = 65; ball[1] = 65; ball[2] = 3; ball[3] = 3; |
mesdoram | 20:a74fe4d43ec0 | 9 | ballDir[0] = -1; ballDir[1] = 1; |
mesdoram | 20:a74fe4d43ec0 | 10 | rightPaddle[0] = 10; rightPaddle[1] = 55; rightPaddle[2] = 5; rightPaddle[3] = 20; |
mesdoram | 20:a74fe4d43ec0 | 11 | leftPaddle[0] = 115; leftPaddle[1] = 55; leftPaddle[2] = 5; leftPaddle[3] = 20; |
mesdoram | 20:a74fe4d43ec0 | 12 | score[0] = 0; score[1] = 0; |
mesdoram | 20:a74fe4d43ec0 | 13 | |
mesdoram | 20:a74fe4d43ec0 | 14 | } |
mesdoram | 20:a74fe4d43ec0 | 15 | |
mesdoram | 20:a74fe4d43ec0 | 16 | void pong::drawObjects() |
mesdoram | 20:a74fe4d43ec0 | 17 | { |
mesdoram | 20:a74fe4d43ec0 | 18 | lcd->background(0x000000); |
mesdoram | 20:a74fe4d43ec0 | 19 | lcd->fill(leftPaddle[0], leftPaddle[1], leftPaddle[2], leftPaddle[3], 0xFFFFFF); |
mesdoram | 20:a74fe4d43ec0 | 20 | lcd->fill(rightPaddle[0], rightPaddle[1], rightPaddle[2], rightPaddle[3], 0xFFFFFF); |
mesdoram | 20:a74fe4d43ec0 | 21 | lcd->fill(ball[0], ball[1], ball[2], ball[3], 0xFFFFFF); |
mesdoram | 20:a74fe4d43ec0 | 22 | } |
mesdoram | 20:a74fe4d43ec0 | 23 | |
mesdoram | 20:a74fe4d43ec0 | 24 | void pong::update(double left, double right) |
mesdoram | 20:a74fe4d43ec0 | 25 | { |
mesdoram | 20:a74fe4d43ec0 | 26 | leftPaddle[1] = left * 110; |
mesdoram | 20:a74fe4d43ec0 | 27 | rightPaddle[1] = right * 110; |
mesdoram | 20:a74fe4d43ec0 | 28 | |
mesdoram | 20:a74fe4d43ec0 | 29 | //right paddle collision check -- reverse if true |
mesdoram | 20:a74fe4d43ec0 | 30 | if ( (ball[0] + ball[2] -1 + ballDir[0]) == leftPaddle[0] ) { |
mesdoram | 20:a74fe4d43ec0 | 31 | if ( ( (ball[1] + ball[3]-1 + ballDir[1]) >= leftPaddle[1] ) && ( (ball[1] + ballDir[1]) <= (leftPaddle[1] + leftPaddle[3]-1) ) ) |
mesdoram | 20:a74fe4d43ec0 | 32 | ballDir[0] = -1; |
mesdoram | 20:a74fe4d43ec0 | 33 | } |
mesdoram | 20:a74fe4d43ec0 | 34 | |
mesdoram | 20:a74fe4d43ec0 | 35 | //left paddle collision check -- reverse if true |
mesdoram | 20:a74fe4d43ec0 | 36 | if ( (ball[0] + ballDir[0]) == (rightPaddle[0] + rightPaddle[2]-1) ) { |
mesdoram | 20:a74fe4d43ec0 | 37 | if ( ( (ball[1] + ball[3]-1 + ballDir[1]) >= rightPaddle[1] ) && ( (ball[1] + ballDir[1]) <= (rightPaddle[1] + rightPaddle[3]-1) ) ) |
mesdoram | 20:a74fe4d43ec0 | 38 | ballDir[0] = 1; |
mesdoram | 20:a74fe4d43ec0 | 39 | } |
mesdoram | 20:a74fe4d43ec0 | 40 | |
mesdoram | 20:a74fe4d43ec0 | 41 | ball[0] = ball[0] + ballDir[0]; |
mesdoram | 20:a74fe4d43ec0 | 42 | ball[1] = ball[1] + ballDir[1]; |
mesdoram | 20:a74fe4d43ec0 | 43 | |
mesdoram | 20:a74fe4d43ec0 | 44 | //if the ball hits the left wall, increment right player's score and reset |
mesdoram | 20:a74fe4d43ec0 | 45 | if ( ball[0] == 0 ) |
mesdoram | 20:a74fe4d43ec0 | 46 | { |
mesdoram | 20:a74fe4d43ec0 | 47 | score[1]++; |
mesdoram | 20:a74fe4d43ec0 | 48 | ball[0] = 65; ball[1] = 65; ball[2] = 3; ball[3] = 3; |
mesdoram | 20:a74fe4d43ec0 | 49 | ballDir[0] = -1; ballDir[1] = 1; |
mesdoram | 20:a74fe4d43ec0 | 50 | } |
mesdoram | 20:a74fe4d43ec0 | 51 | //if the ball hits the right wall, increment left player's score and reset |
mesdoram | 20:a74fe4d43ec0 | 52 | else if ( (ball[0] + ball[2]-1) == 130 ) |
mesdoram | 20:a74fe4d43ec0 | 53 | { |
mesdoram | 20:a74fe4d43ec0 | 54 | score[0]++; |
mesdoram | 20:a74fe4d43ec0 | 55 | ball[0] = 65; ball[1] = 65; ball[2] = 3; ball[3] = 3; |
mesdoram | 20:a74fe4d43ec0 | 56 | ballDir[0] = 1; ballDir[1] = 1; |
mesdoram | 20:a74fe4d43ec0 | 57 | } |
mesdoram | 20:a74fe4d43ec0 | 58 | |
mesdoram | 20:a74fe4d43ec0 | 59 | if ( (ball[1] + 2 == 130) && (ballDir[1] == 1) ) ballDir[1] = -1; |
mesdoram | 20:a74fe4d43ec0 | 60 | else if ( (ball[1] - 1 == 0) && (ballDir[1] == -1) ) ballDir[1] = 1; |
mesdoram | 20:a74fe4d43ec0 | 61 | |
mesdoram | 20:a74fe4d43ec0 | 62 | } |
mesdoram | 20:a74fe4d43ec0 | 63 | |
mesdoram | 20:a74fe4d43ec0 | 64 | void pong::clear() |
mesdoram | 20:a74fe4d43ec0 | 65 | { |
mesdoram | 20:a74fe4d43ec0 | 66 | lcd->fill(leftPaddle[0], leftPaddle[1], leftPaddle[2], leftPaddle[3], 0x000000); |
mesdoram | 20:a74fe4d43ec0 | 67 | lcd->fill(rightPaddle[0], rightPaddle[1], rightPaddle[2], rightPaddle[3], 0x000000); |
mesdoram | 20:a74fe4d43ec0 | 68 | lcd->fill(ball[0], ball[1], ball[2], ball[3], 0x000000); |
mesdoram | 20:a74fe4d43ec0 | 69 | } |