|
@ -1,4 +1,4 @@ |
|
|
/*Copyright (c) 2010 Jan Lieven
|
|
|
/* Copyright (c) 2010 Jan Lieven
|
|
|
* |
|
|
* |
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy |
|
|
* of this software and associated documentation files (the "Software"), to |
|
|
* of this software and associated documentation files (the "Software"), to |
|
@ -29,11 +29,12 @@ void ltn_ant() { |
|
|
clear_screen(0); |
|
|
clear_screen(0); |
|
|
|
|
|
|
|
|
struct { |
|
|
struct { |
|
|
char x, y; |
|
|
char x , y; |
|
|
char dx, dy; /* Vector can only be: (0,1),(1,0),(0,-1),(-1,0) */ |
|
|
char dx, dy; /* Vector can only be: (0,1),(1,0),(0,-1),(-1,0) */ |
|
|
|
|
|
char ox, oy; /* Used to set old pixels so brightness 2 */ |
|
|
} ant; |
|
|
} ant; |
|
|
|
|
|
|
|
|
int temp; |
|
|
char temp, i = 0; |
|
|
|
|
|
|
|
|
/* Random startposition and direction */ |
|
|
/* Random startposition and direction */ |
|
|
ant.x = random8() % NUM_COLS; |
|
|
ant.x = random8() % NUM_COLS; |
|
@ -53,23 +54,36 @@ void ltn_ant() { |
|
|
do { |
|
|
do { |
|
|
if(get_pixel((pixel) {ant.x, ant.y}) == 0) { /* If the pixel is not set turn it on */ |
|
|
if(get_pixel((pixel) {ant.x, ant.y}) == 0) { /* If the pixel is not set turn it on */ |
|
|
setpixel((pixel) {ant.x, ant.y}, 3); |
|
|
setpixel((pixel) {ant.x, ant.y}, 3); |
|
|
|
|
|
|
|
|
temp = ant.dx; |
|
|
temp = ant.dx; |
|
|
ant.dx = ant.dy; |
|
|
ant.dx = ant.dy; |
|
|
ant.dy = -temp; /* Turn 90 degrees to the right */ |
|
|
ant.dy = -temp; /* Turn 90 degrees to the right */ |
|
|
|
|
|
|
|
|
|
|
|
/* Lets the last pixel be darker than the latest */ |
|
|
|
|
|
if(i == 1) |
|
|
|
|
|
setpixel((pixel) {ant.ox, ant.oy}, 2); |
|
|
|
|
|
i = 1; |
|
|
|
|
|
ant.ox = ant.x; |
|
|
|
|
|
ant.oy = ant.y; |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
setpixel((pixel) {ant.x, ant.y}, 0); |
|
|
setpixel((pixel) {ant.x, ant.y}, 0); |
|
|
|
|
|
|
|
|
temp = ant.dy; |
|
|
temp = ant.dy; |
|
|
ant.dy = ant.dx; |
|
|
ant.dy = ant.dx; |
|
|
ant.dx = -temp; /* Turn 90 degrees to the left */ |
|
|
ant.dx = -temp; /* Turn 90 degrees to the left */ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
wait(100); |
|
|
wait(100); |
|
|
|
|
|
|
|
|
ant.x = ant.x + ant.dx; |
|
|
ant.x += ant.dx; |
|
|
ant.y = ant.y + ant.dy; |
|
|
ant.y += ant.dy; |
|
|
|
|
|
|
|
|
|
|
|
} while(ant.x >= 0 && |
|
|
|
|
|
ant.x < NUM_COLS && |
|
|
|
|
|
ant.y >= 0 && |
|
|
|
|
|
ant.y < NUM_ROWS); /* Make sure we won't leave the matrix. (Mr. Smith hates it outside the matrix, you know?) */ |
|
|
|
|
|
|
|
|
} while (ant.x >= 0 && ant.x < NUM_COLS && ant.y >= 0 && ant.y < NUM_ROWS); /* Make sure we won't leave the matrix
|
|
|
wait(300); |
|
|
* (Mr. Smith hates it outside the matrix, you know?) |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|