Files
snake2025/grid.c
2025-05-14 14:15:45 +02:00

81 lines
2.0 KiB
C

#include <stdio.h>
#include <MLV/MLV_all.h>
#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';
}
}
void move_snake(Snake *snake, char grid[NBL][NBC + 1])
{
Coord tail = snake->pos[SNAKE_SIZE - 1];
Coord head;
grid[tail.y][tail.x] = EMPTY;
crawl(snake);
head = snake->pos[0];
grid[head.y][head.x] = SNAKE;
}