81 lines
2.0 KiB
C
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;
|
|
} |