diff --git a/grid_square.c b/grid_square.c new file mode 100644 index 0000000000000000000000000000000000000000..b5ae8ee639eb07fa2c7627711195018acdd5055a --- /dev/null +++ b/grid_square.c @@ -0,0 +1,101 @@ +#include <stdio.h> +#include <stdlib.h> +#include <graphics.h> +#include <math.h> + +#define GRID 5 +int maxx, maxy; +int kbhit() { + struct timeval tv; + fd_set fds; + tv.tv_sec = 0; + tv.tv_usec = 0; + FD_ZERO(&fds); + FD_SET(STDIN_FILENO, &fds); //STDIN_FILENO is 0 + select(STDIN_FILENO+1, &fds, NULL, NULL, &tv); + return FD_ISSET(STDIN_FILENO, &fds); +} +void setpixel(int x, int y) { + int xp, yp; + if(x>0) { + xp = (x*GRID) + 2 + (maxx/2); + } else { + xp = (maxx/2) + (x*GRID) - 2 + GRID; + } + if(y>0) { + yp = maxy - ((y*GRID) + 2 + (maxy/2)); + } else { + yp = maxy - ((maxy/2) + (y*GRID) - 2 + GRID); + } + + // setfillstyle(SOLID_FILL, c); + floodfill(xp, yp, YELLOW); + // setfillstyle(SOLID_FILL, WHITE); +} +void drawlineBLD(int x1,int y1, int x2, int y2){ + int dx, dy, p, x, y; + + dx = x2 - x1; + dy = y2 - y1; + + x = x1; + y = y1; + + p=2*dy-dx; + + while(x<x2) + { + setpixel(x,y); + if(p>=0) { + y=y+1; + p=p+2*dy-2*dx; + } else { + p=p+2*dy; + } + x=x+1; + } +} +void drawgrid() { + int i, j; + setcolor(GREEN); + line(maxx/2, 0, maxx/2, maxy); + line(0, maxy/2, maxx, maxy/2); + setcolor(YELLOW); + for (i=maxx/2; i<maxx; i+=GRID) { + line(i, 0, i, maxy); + line(maxx-i, 0, maxx-i, maxy); + } + for (j=maxy/2; j < maxy; j+=GRID) { + line(0, j, maxx, j); + line(0, maxy-j, maxx, maxy-j); + } + setcolor(WHITE); +} +void drawcar(int xc, int yc) { + drawlineBLD(xc,yc,xc+5,yc); +} +int main() { + int gd = DETECT, gm; + int x, y; + initgraph(&gd, &gm, ""); + maxx = getmaxx(); + maxy = getmaxy(); + x = -5; + y = 5; + while(!kbhit()) { + if(x < 5) { + x++; + } else { + break; + } + drawgrid(); + drawcar(x,y); + + delay(1000); + cleardevice(); + } + + + getch(); + return 0; +} \ No newline at end of file