snake.c 907 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "snake.h"
  4. extern char board[BRD_SIZE_Y][BRD_SIZE_X];
  5. void addSnakePart(snakePart* head) {
  6. snakePart* tail = head;
  7. while (tail->next != NULL)
  8. tail = tail->next;
  9. snakePart* newTail = (snakePart*) malloc(sizeof(snakePart));
  10. newTail->visChar = '#';
  11. newTail->dir = tail->dir;
  12. switch (newTail->dir) {
  13. case 'w':
  14. newTail->x = tail->x;
  15. newTail->y = tail->y + 1;
  16. break;
  17. case 's':
  18. newTail->x = tail->x - 1;
  19. newTail->y = tail->y;
  20. break;
  21. case 'a':
  22. newTail->x = tail->x - 1;
  23. newTail->y = tail->y;
  24. break;
  25. case 'd':
  26. newTail->x = tail->x;
  27. newTail->y = tail->y - 1;
  28. break;
  29. default:
  30. printf("Invalid direction in func addSnakePart\n");
  31. exit(1);
  32. }
  33. newTail->next = NULL;
  34. tail->next = newTail;
  35. board[newTail->y][newTail->x] = newTail->visChar;
  36. }