From 24bbf84853c21e74fa8169cd608216d7dac6c5bb Mon Sep 17 00:00:00 2001 From: Atsutane Date: Mon, 4 May 2009 22:01:47 +0200 Subject: Wrote p2_ai function --- src/pong.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/pong.c b/src/pong.c index 5c0056c..441543b 100644 --- a/src/pong.c +++ b/src/pong.c @@ -141,6 +141,7 @@ struct game_data *init_game_data(void) { return gd; } + /* Controls the movement of the ball */ void ball_movement(struct game_data *gd) { if (gd == NULL) { @@ -245,6 +246,46 @@ void ball_movement(struct game_data *gd) { mvaddch(gd->ball->y, gd->ball->x, '0'); } + +/* Controls the pad of p2 */ +void p2_ai(struct game_data *gd) { + if (gd == NULL) { + return; + } + + /* Clear current position of the pad */ + mvaddch(gd->p2->y-2, gd->p2->x, ' '); + mvaddch(gd->p2->y-1, gd->p2->x, ' '); + mvaddch(gd->p2->y, gd->p2->x, ' '); + mvaddch(gd->p2->y+1, gd->p2->x, ' '); + mvaddch(gd->p2->y+2, gd->p2->x, ' '); + + /* Correct the position if the size of the terminal was changed */ + gd->p2->x = gd->max_field_x; + while(gd->p2->y+2 > gd->max_field_y-1) { + gd->p2->y--; + } + + /* If that's too hard, add a if ((rand()%3)==1) or so at this point */ + if ((gd->ball->y > gd->p2->y+2) && + (gd->p2->y+2 < gd->max_field_y-1)) { + gd->p2->y++; + } + else if ((gd->ball->y < gd->p2->y-2) && + (gd->p2->y-2 > 0)) { + gd->p2->y--; + } + + /* Draw pad */ + mvaddch(gd->p2->y-2, gd->p2->x, '|'); + mvaddch(gd->p2->y-1, gd->p2->x, '|'); + mvaddch(gd->p2->y, gd->p2->x, '|'); + mvaddch(gd->p2->y+1, gd->p2->x, '|'); + mvaddch(gd->p2->y+2, gd->p2->x, '|'); +} + + + void quit(void) { endwin(); } -- cgit v1.2.3-70-g09d2