diff options
author | Benjamin Cohen <bencoh@notk.org> | 2011-12-12 17:21:25 +0100 |
---|---|---|
committer | Benjamin Cohen <bencoh@notk.org> | 2011-12-12 17:21:25 +0100 |
commit | edfdf6bec9f6ca37b6357ecb7c52a0be47e80cab (patch) | |
tree | 80b4022f3dc6e4570a0d1ebf56d07bf157533482 | |
parent | bd149cc44cf2c0d5c9158641797d994377d30f22 (diff) |
Game: Init
InputCtrl: min/max
-rw-r--r-- | pong.c | 40 | ||||
-rw-r--r-- | pong.h | 12 |
2 files changed, 37 insertions, 15 deletions
@@ -108,7 +108,20 @@ void main (void) { void InitGame() { memset(&NextGame, 0, sizeof(NextGame)); - memset(&OldGame, 0, sizeof(OldGame)); + + NextGame.player1 = (X_MAX + SPLAYERHEIGHT)/ 2; + NextGame.player2 = (X_MAX + SPLAYERHEIGHT)/ 2; + NextGame.ball.x = X_MAX/ 2; + NextGame.ball.y = Y_MAX/ 2; + NextGame.velocity.x = KEYINC; + NextGame.velocity.y = KEYINC; + + memcpy(&OldGame, &NextGame, sizeof(NextGame)); +} + +void GameEngine() +{ + } void hscanf(char* str, unsigned char* a, unsigned char* b, unsigned char* c) { @@ -192,25 +205,25 @@ void KbdHandler (void) // Called by KbdHandler void InputCtrl (unsigned char kbd) { - if (KB_TEST(kbd, KUP1)) + if (KB_TEST(kbd, KUP1) && NextGame.player1 < X_MAX - SPLAYERHEIGHT) { - NextGame.player1++; - printf("KUP1 pressed : %x %d\n\r", kbd, NextGame.player1); + NextGame.player1 += KEYINC; + printf("KUP1 pressed : %x %u\n\r", kbd, NextGame.player1); } - if (KB_TEST(kbd, KDOWN1)) + if (KB_TEST(kbd, KDOWN1) && NextGame.player1 > 0) { - NextGame.player1--; - printf("KDOWN1 pressed : %x %d\n\r", kbd, NextGame.player1); + NextGame.player1 -= KEYINC; + printf("KDOWN1 pressed : %x %u\n\r", kbd, NextGame.player1); } - if (KB_TEST(kbd, KUP2)) + if (KB_TEST(kbd, KUP2) && NextGame.player2 < X_MAX - SPLAYERHEIGHT) { - NextGame.player2++; - printf("KUP2 pressed : %x %d\n\r", kbd, NextGame.player2); + NextGame.player2 += KEYINC; + printf("KUP2 pressed : %x %u\n\r", kbd, NextGame.player2); } - if (KB_TEST(kbd, KDOWN2)) + if (KB_TEST(kbd, KDOWN2) && NextGame.player2 > 0) { - NextGame.player2--; - printf("KDOWN2 pressed : %x %d\n\r", kbd, NextGame.player2); + NextGame.player2 -= KEYINC; + printf("KDOWN2 pressed : %x %u\n\r", kbd, NextGame.player2); } } @@ -237,6 +250,7 @@ void Timer2_ISR (void) __interrupt 5 } KbdHandler(); + GameEngine(); } void SW_ISR (void) __interrupt 2 { @@ -29,12 +29,20 @@ typedef struct Game } Game; // values for position precision -#define X_SHIFT 10 -#define Y_SHIFT 10 +#define X_SHIFT 11 +#define Y_SHIFT 11 #define X_MAX (64 << X_SHIFT -1) #define Y_MAX (64 << Y_SHIFT -1) +#define PLAYERHEIGHT 8 +#define PLAYERWIDTH 2 +#define SPLAYERHEIGHT (PLAYERHEIGHT << X_SHIFT) +#define SPLAYERWIDTH (PLAYERWIDTH << X_SHIFT) + +#define KEYINC (1 << 9) + void InitGame(); +void GameEngine(); void Timer2_ISR (void) __interrupt 5; void UART0_ISR (void) __interrupt 4; |