-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRender.m
101 lines (94 loc) · 2.66 KB
/
Render.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
function [handle, frame] = Render(nrows, snake, food, status, handle)
if ~exist('status', 'var')
status = 1;
end
if status
multiplier = 700/nrows;
if multiplier<3
multiplier=3;
end
multiplier = floor(multiplier);
border = floor(multiplier/3);
backcolor = [0,0,0];
snakecolor = [0,1,1];
foodcolor = [1,0,0];
headcolor = [1,0.5,0];
% create background
img = zeros(nrows*multiplier, nrows*multiplier, 3, 'double');
img(:,:,1) = backcolor(1);
img(:,:,2) = backcolor(2);
img(:,:,3) = backcolor(3);
% % put a thin grid
% img(1:multiplier:end, :,2)=0.5;
% img(1:multiplier:end, :,2)=0.5;
% img(:,1:multiplier:end,2)=0.5;
% img(:,1:multiplier:end,2)=0.5;
% draw food
ux= (food(1)-1)*multiplier+1;
uy = (food(2)-1)*multiplier+1;
dx = food(1)*multiplier;
dy = food(2)*multiplier;
img(ux:dx, uy:dy,1) = foodcolor(1);
img(ux:dx, uy:dy,2) = foodcolor(2);
img(ux:dx, uy:dy, 3) = foodcolor(3);
% draw snake
m4 = floor(multiplier/4);
ux = (snake(1,1)-1)*multiplier + m4;
uy = (snake(1,2)-1)*multiplier + m4;
dx = snake(1,1)*multiplier - m4 + 1;
dy = snake(1,2)*multiplier -m4 + 1;
img(ux:dx, uy:dy,1) = headcolor(1);
img(ux:dx, uy:dy, 2) = headcolor(2);
img(ux:dx, uy:dy, 3) = headcolor(3);
for ii = 2:size(snake,1)
ux = (snake(ii,1)-1)*multiplier+border;
uy = (snake(ii,2)-1)*multiplier+border;
dx = snake(ii,1)*multiplier-border+1;
dy = snake(ii,2)*multiplier-border+1;
pux = ux;
puy = uy;
pdx = dx;
pdy = dy;
if ii<size(snake,1)
if snake(ii,1)==snake(ii+1,1)
if snake(ii,2)<snake(ii+1,2)
dy = snake(ii,2)*multiplier;
else
uy = (snake(ii,2)-1)*multiplier+1;
end
else
if snake(ii,1)<snake(ii+1,1)
dx = snake(ii,1)*multiplier;
else
ux = (snake(ii,1)-1)*multiplier+1;
end
end
end
if snake(ii,1)==snake(ii-1,1)
if snake(ii,2)<snake(ii-1,2)
pdy = snake(ii,2)*multiplier;
else
puy = (snake(ii,2)-1)*multiplier +1;
end
else
if snake(ii,1)<snake(ii-1,1)
pdx = snake(ii,1)*multiplier;
else
pux = (snake(ii,1)-1)*multiplier;
end
end
img(ux:dx, uy:dy, 1) = snakecolor(1);
img(ux:dx, uy:dy, 2) = snakecolor(2);
img(ux:dx, uy:dy, 3) = snakecolor(3);
img(pux:pdx, puy:pdy,1) = snakecolor(1);
img(pux:pdx, puy:pdy,2) = snakecolor(2);
img(pux:pdx, puy:pdy, 3) = snakecolor(3);
end
% draw everything
if ~exist('handle','var')
handle= figure;
end
imshow(img);
%pause(0.001)
frame = img;
end