]> git.armaanb.net Git - pong.git/blobdiff - pong.c
Reset y value of ball after point
[pong.git] / pong.c
diff --git a/pong.c b/pong.c
index 58a93d562ef15882ae4c4969d72d639eae3a2d70..a61bc0d68bc5986ced25f223cf274c9e275d97e4 100644 (file)
--- a/pong.c
+++ b/pong.c
@@ -38,10 +38,7 @@ randsign(void)
 int
 main(void) {
        srand((unsigned int)time(NULL));
-       int aoff = 0, boff = 0;
-       int max_y, max_x;
-       int max_y_new = 0, max_x_new = 0;
-       int pad_h = 5;
+       int max_y, max_x, max_y_new, max_x_new;
        int a_score = 0, b_score = 0;
        int slope_x = randslope();
        int index_dir = randsign();
@@ -59,6 +56,9 @@ main(void) {
        --max_y;
        int y = max_y/2;
        int x = max_x/2;
+       int pad_h = 0.2 * max_y;
+       int aoff = max_y / 2 - pad_h;
+       int boff = max_y / 2 - pad_h;
 
        gettimeofday(&start, NULL);
        while(1) {
@@ -78,13 +78,13 @@ main(void) {
                if (key == 'q') {
                        die(0);
                } else if (key == 'k') {
-                       if (boff < max_y - pad_h) boff += 1;
+                       if (boff < max_y - pad_h) boff += 2;
                } else if (key == 'i') {
-                       if (boff > 0) boff -= 1;
+                       if (boff > 0) boff -= 2;
                } else if (key == 's') {
-                       if (aoff < max_y - pad_h) aoff += 1;
+                       if (aoff < max_y - pad_h) aoff += 2;
                } else if (key == 'w') {
-                       if (aoff > 0) aoff -= 1;
+                       if (aoff > 0) aoff -= 2;
                } else if (key == 27) {
                        while(1) {
                                key = getch();
@@ -151,16 +151,26 @@ main(void) {
                        speed *= 0.9;
                } else if (x >= max_x - 1 || x <= 1) {
                        // Ball goes out of bounds
-                       if (x <=1) {
+                       if (x <= 1) {
                                b_score += 1;
+                               mvprintw(0, 0, "PLAYER B SCORES");
                        } else {
                                a_score += 1;
+                               mvprintw(0, 0, "PLAYER A SCORES");
                        }
+                       refresh();
+
+                       // Reset to default values
                        x = max_x/2;
+                       y = max_y / 2;
                        slope_x = randslope();
                        index_dir = randsign();
                        speed = randspeed();
+                       aoff = max_y / 2 - pad_h;
+                       boff = max_y / 2 - pad_h;
+
                        sleep(1);
+                       clear();
                } else if (y == 0 || y == max_y) {
                        // Ball hits top or bottom wall
                        index_dir *= -1;