From 7914bae789029ca775ebb182831746e1d60dedc3 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Thu, 23 May 2013 12:33:59 -0400 Subject: Generalize paddle struct and code. --- diff --git a/src/paddle.c b/src/paddle.c index 0028892..1492ede 100644 --- a/src/paddle.c +++ b/src/paddle.c @@ -6,37 +6,29 @@ void update_paddle(struct paddle *pad) { - int min; - int max; - - pad->pos += pad->speed * pad->dir; - if (pad->type == PADDLE_TYPE_H) { - min = 3; - max = BOARD_WIDTH - 2; - } else { - min = 2; - max = BOARD_HEIGHT - 2; + *pad->pos += pad->speed * pad->dir; + if (*pad->pos < pad->min_pos + *pad->size / 2) { + *pad->pos = pad->min_pos + *pad->size / 2; + } + if (*pad->pos > pad->max_pos - *pad->size / 2) { + *pad->pos = pad->max_pos - *pad->size / 2; } - if (pad->pos < min + pad->size / 2) pad->pos = min + pad->size / 2; - if (pad->pos > max - pad->size / 2) pad->pos = max - pad->size / 2; } void clear_paddle(struct paddle *pad) { - int off; - int pos; + int x_off; + int y_off; + int x; + int y; - off = pad->pos; - off -= pad->size / 2; + x_off = pad->x - pad->width / 2; + y_off = pad->y - pad->height / 2; - if (pad->type == PADDLE_TYPE_H) { - for (pos = 0; pos < pad->size; ++pos) { - mvprintw(pad->track, off + pos, " "); - } - } else { - for (pos = 0; pos < pad->size; ++pos) { - mvprintw(off + pos, pad->track, " "); + for (x = 0; x < pad->width; ++x) { + for (y = 0; y < pad->height; ++y) { + mvprintw(y_off + y, x_off + x, " "); } } } @@ -44,23 +36,19 @@ clear_paddle(struct paddle *pad) void draw_paddle(struct paddle *pad) { - int off; - int pos; + int x_off; + int y_off; + int x; + int y; - off = pad->pos; - off -= pad->size / 2; + x_off = pad->x - pad->width / 2; + y_off = pad->y - pad->height / 2; attr_on(WA_REVERSE, NULL); - - if (pad->type == PADDLE_TYPE_H) { - for (pos = 0; pos < pad->size; ++pos) { - mvprintw(pad->track, off + pos, " "); - } - } else { - for (pos = 0; pos < pad->size; ++pos) { - mvprintw(off + pos, pad->track, " "); + for (x = 0; x < pad->width; ++x) { + for (y = 0; y < pad->height; ++y) { + mvprintw(y_off + y, x_off + x, " "); } } - attr_off(WA_REVERSE, NULL); } diff --git a/src/paddle.h b/src/paddle.h index 8d885b0..8d0e69d 100644 --- a/src/paddle.h +++ b/src/paddle.h @@ -13,12 +13,16 @@ enum paddle_type { }; struct paddle { - int pos; - int size; + int x; + int y; + int width; + int height; + int *pos; + int *size; int speed; int dir; - int type; - int track; + int min_pos; + int max_pos; }; void clear_paddle(struct paddle *pad); diff --git a/src/player.c b/src/player.c index 09b1596..8e9f07c 100644 --- a/src/player.c +++ b/src/player.c @@ -15,23 +15,35 @@ new_player(int id) } p->score = 0; - p->paddle_h.pos = PADDLE_H_POS_START; - p->paddle_v.pos = PADDLE_V_POS_START; - p->paddle_h.size = PADDLE_H_SIZE_NORMAL; - p->paddle_v.size = PADDLE_V_SIZE_NORMAL; + + p->paddle_h.x = PADDLE_H_POS_START; + p->paddle_v.y = PADDLE_V_POS_START; + if (id == 0) { + p->paddle_h.y = BOARD_HEIGHT - 2; + p->paddle_v.x = 2; + } else { + p->paddle_h.y = 1; + p->paddle_v.x = BOARD_WIDTH - 2; + } + p->paddle_h.width = PADDLE_H_SIZE_NORMAL; + p->paddle_h.height = 1; + p->paddle_v.height = PADDLE_V_SIZE_NORMAL; + p->paddle_v.width = 1; + + p->paddle_h.pos = &p->paddle_h.x; + p->paddle_v.pos = &p->paddle_v.y; + p->paddle_h.size = &p->paddle_h.width; + p->paddle_v.size = &p->paddle_v.height; + p->paddle_h.speed = PADDLE_H_SPEED_NORMAL; p->paddle_v.speed = PADDLE_V_SPEED_NORMAL; p->paddle_h.dir = 0; p->paddle_v.dir = 0; - p->paddle_h.type = PADDLE_TYPE_H; - p->paddle_v.type = PADDLE_TYPE_V; - if (id == 0) { - p->paddle_h.track = BOARD_HEIGHT - 2; - p->paddle_v.track = 2; - } else { - p->paddle_h.track = 1; - p->paddle_v.track = BOARD_WIDTH - 2; - } + + p->paddle_h.min_pos = 3; + p->paddle_h.max_pos = BOARD_WIDTH - 2; + p->paddle_v.min_pos = 2; + p->paddle_v.max_pos = BOARD_HEIGHT - 2; return p; } -- cgit v0.9.1