aboutsummaryrefslogtreecommitdiff
path: root/player.c
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeff@approximatrix.com>2020-02-15 12:53:35 -0500
committerJeffrey Armstrong <jeff@approximatrix.com>2020-02-15 12:53:35 -0500
commitec5e20c1ac12213ce543c3eefa1eec1032ebbd1a (patch)
treef049890bbf8c74818fbc3c31003b9b4319b53a00 /player.c
parent950dccf203a561a2748941a3addc5cca25b77b99 (diff)
downloadgemworm-ec5e20c1ac12213ce543c3eefa1eec1032ebbd1a.zip
gemworm-ec5e20c1ac12213ce543c3eefa1eec1032ebbd1a.tar.gz
Added a score to the game that redraws nicely!
Diffstat (limited to 'player.c')
-rw-r--r--player.c159
1 files changed, 80 insertions, 79 deletions
diff --git a/player.c b/player.c
index 5ba510e..40ef003 100644
--- a/player.c
+++ b/player.c
@@ -25,21 +25,21 @@
void move_player(WPLAYER *player, char dir)
{
- player->dir = dir;
+ player->dir = dir;
}
void swap(char *i, char *j)
{
char s;
- s = *i;
- *i = *j;
- *j = s;
+ s = *i;
+ *i = *j;
+ *j = s;
}
void grow(WPLAYER *player, int count)
{
- player->grow += count;
+ player->grow += count;
}
int update_player(WPLAYER *player, int *tailx, int *taily)
@@ -48,53 +48,53 @@ WUNIT *walker;
char lastx, lasty;
int alive;
- walker = player->head;
- lastx = walker->c_x;
- lasty = walker->c_y;
-
- switch(player->dir) {
- case WUP:
- lasty--;
- break;
- case WDOWN:
- lasty++;
- break;
- case WLEFT:
- lastx--;
- break;
- case WRIGHT:
- lastx++;
- break;
- }
-
- while(walker != NULL) {
- swap(&lastx, &walker->c_x);
- swap(&lasty, &walker->c_y);
-
- if(walker->next == NULL && player->grow > 0) {
- walker->next =(WUNIT *)malloc(sizeof(WUNIT));
- ((WUNIT *)walker->next)->next = NULL;
- ((WUNIT *)walker->next)->c_x = lastx;
- ((WUNIT *)walker->next)->c_y = lasty;
- player->grow--;
- }
-
- walker = (WUNIT *)walker->next;
- }
-
+ walker = player->head;
+ lastx = walker->c_x;
+ lasty = walker->c_y;
+
+ switch(player->dir) {
+ case WUP:
+ lasty--;
+ break;
+ case WDOWN:
+ lasty++;
+ break;
+ case WLEFT:
+ lastx--;
+ break;
+ case WRIGHT:
+ lastx++;
+ break;
+ }
+
+ while(walker != NULL) {
+ swap(&lastx, &walker->c_x);
+ swap(&lasty, &walker->c_y);
+
+ if(walker->next == NULL && player->grow > 0) {
+ walker->next =(WUNIT *)malloc(sizeof(WUNIT));
+ ((WUNIT *)walker->next)->next = NULL;
+ ((WUNIT *)walker->next)->c_x = lastx;
+ ((WUNIT *)walker->next)->c_y = lasty;
+ player->grow--;
+ }
+
+ walker = (WUNIT *)walker->next;
+ }
+
*tailx = lastx;
*taily = lasty;
- walker = (WUNIT *)player->head->next;
- alive = ALIVE;
- while(walker != NULL) {
- if(walker->c_x == player->head->c_x && walker->c_y == player->head->c_y) {
- alive = DEAD;
- break;
- }
- walker = (WUNIT *)walker->next;
- }
- return alive;
+ walker = (WUNIT *)player->head->next;
+ alive = ALIVE;
+ while(walker != NULL) {
+ if(walker->c_x == player->head->c_x && walker->c_y == player->head->c_y) {
+ alive = DEAD;
+ break;
+ }
+ walker = (WUNIT *)walker->next;
+ }
+ return alive;
}
WUNIT *reset_body(WUNIT *head)
@@ -104,45 +104,46 @@ WUNIT *tmp;
int i;
char lastx;
- walker = head;
- while(walker != NULL) {
- tmp = walker;
- walker = (WUNIT *)walker->next;
- tmp->next = NULL;
- free(tmp);
- }
-
- walker = (WUNIT *)malloc(sizeof(WUNIT));
- walker->c_x = CELLW/3*2;
- walker->c_y = CELLH/2;
- tmp = walker;
- for(i=1;i<STARTLENGTH;i++) {
- lastx = walker->c_x;
- walker->next = (WUNIT *)malloc(sizeof(WUNIT));
- walker = (WUNIT *)walker->next;
- walker->c_y = CELLH/2;
- walker->c_x = lastx+1;
- walker->next = NULL;
- }
-
- return tmp;
+ walker = head;
+ while(walker != NULL) {
+ tmp = walker;
+ walker = (WUNIT *)walker->next;
+ tmp->next = NULL;
+ free(tmp);
+ }
+
+ walker = (WUNIT *)malloc(sizeof(WUNIT));
+ walker->c_x = CELLW/3*2;
+ walker->c_y = CELLH/2;
+ tmp = walker;
+ for(i=1;i<STARTLENGTH;i++) {
+ lastx = walker->c_x;
+ walker->next = (WUNIT *)malloc(sizeof(WUNIT));
+ walker = (WUNIT *)walker->next;
+ walker->c_y = CELLH/2;
+ walker->c_x = lastx+1;
+ walker->next = NULL;
+ }
+
+ return tmp;
}
void reset_player(WPLAYER *player)
{
- player->length = STARTLENGTH;
- player->dir = WLEFT;
- player->head = reset_body(player->head);
+ player->length = STARTLENGTH;
+ player->dir = WLEFT;
+ player->head = reset_body(player->head);
}
WPLAYER *init_player()
{
WPLAYER *player;
- player = (WPLAYER *)malloc(sizeof(WPLAYER));
- player->head = NULL;
- reset_player(player);
- player->grow = 0;
- return player;
+ player = (WPLAYER *)malloc(sizeof(WPLAYER));
+ player->head = NULL;
+ reset_player(player);
+ player->grow = 0;
+ player->score = 0;
+ return player;
}