#include #include #include "grid.h" #include "snake.h" void debug(char grid[NBL][NBC + 1]) { int i; for (i = 0; i < NBL; i++) { printf("%s\n", grid[i]); } } int compute_size(int w, int h) { int size_width = w / NBC; int size_height = h / NBL; return (size_width < size_height) ? size_width : size_height; } void draw_grid(char grid[NBL][NBC + 1]) { int i, j; int window_width = MLV_get_window_width(); int window_height = MLV_get_window_height(); int cell_size = compute_size(window_width, window_height); MLV_draw_filled_rectangle(0, 0, window_width, window_height, MLV_COLOR_BLACK); for (i = 0; i < NBL; i++) { for (j = 0; j < NBC; j++) { int x = j * cell_size; int y = i * cell_size; switch (grid[i][j]) { case WALL: MLV_draw_filled_rectangle(x, y, cell_size, cell_size, MLV_COLOR_BROWN); break; case EMPTY: MLV_draw_filled_rectangle(x, y, cell_size, cell_size, MLV_COLOR_WHITE); break; case FRUIT: MLV_draw_filled_rectangle(x, y, cell_size, cell_size, MLV_COLOR_RED); break; case SNAKE: MLV_draw_filled_rectangle(x, y, cell_size, cell_size, MLV_COLOR_GREEN); break; default: MLV_draw_filled_rectangle(x, y, cell_size, cell_size, MLV_COLOR_BLACK); break; } } } } void place_snake(char grid[NBL][NBC + 1], Snake *snake) { int i; for (i = 0; i < SNAKE_SIZE; i++) { Coord part = snake->pos[i]; grid[part.y][part.x] = 's'; } } Element move_snake(Snake *snake, char grid[NBL][NBC + 1]) { Coord tail = snake->pos[SNAKE_SIZE - 1]; Coord head; Element element_at_head; grid[tail.y][tail.x] = EMPTY; crawl(snake); head = snake->pos[0]; element_at_head = grid[head.y][head.x]; grid[head.y][head.x] = SNAKE; return element_at_head; }