Rendu tp3

This commit is contained in:
2025-05-14 14:15:45 +02:00
parent a9ed5e2e01
commit cb05d9710b
6 changed files with 179 additions and 37 deletions

76
grid.c
View File

@@ -1,47 +1,81 @@
#include <stdio.h>
#include <MLV/MLV_all.h>
#include "grid.h"
#include "snake.h"
void debug(char grid[NBL][NBC+1]) {
void debug(char grid[NBL][NBC + 1])
{
int i;
for (i = 0; i < NBL; i++) {
for (i = 0; i < NBL; i++)
{
printf("%s\n", grid[i]);
}
}
int compute_size(int w, int h) {
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]) {
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);
for (i = 0; i < NBL; i++) {
for (j = 0; j < NBC; j++) {
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_YELLOW);
break;
default:
break;
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;
}