Rendu tp3
This commit is contained in:
76
grid.c
76
grid.c
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user