summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Cohen <bencoh@notk.org>2011-12-12 17:21:25 +0100
committerBenjamin Cohen <bencoh@notk.org>2011-12-12 17:21:25 +0100
commitedfdf6bec9f6ca37b6357ecb7c52a0be47e80cab (patch)
tree80b4022f3dc6e4570a0d1ebf56d07bf157533482
parentbd149cc44cf2c0d5c9158641797d994377d30f22 (diff)
Game: Init
InputCtrl: min/max
-rw-r--r--pong.c40
-rw-r--r--pong.h12
2 files changed, 37 insertions, 15 deletions
diff --git a/pong.c b/pong.c
index 873370a..dad891e 100644
--- a/pong.c
+++ b/pong.c
@@ -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 {
diff --git a/pong.h b/pong.h
index c244f2f..ee1e17f 100644
--- a/pong.h
+++ b/pong.h
@@ -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;