Initial commit
This commit is contained in:
90
Lab_3/code.c
Normal file
90
Lab_3/code.c
Normal file
@@ -0,0 +1,90 @@
|
||||
#include <ncurses.h>
|
||||
|
||||
struct vec2 {
|
||||
int x;
|
||||
int y;
|
||||
};
|
||||
|
||||
struct borders {
|
||||
int top;
|
||||
int bottom;
|
||||
int left;
|
||||
int right;
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
initscr(); // initialise screen
|
||||
clear(); // clear the empty buffer just in case
|
||||
noecho(); // disable the direct typing to the terminal so it doesn't mess with the application
|
||||
|
||||
// here we define utility variables
|
||||
|
||||
// borders for a pen point
|
||||
struct borders b;
|
||||
b.bottom = LINES;
|
||||
b.top = -1;
|
||||
b.left = -1;
|
||||
b.right = COLS;
|
||||
|
||||
// pen point position
|
||||
struct vec2 position;
|
||||
position.x = COLS;
|
||||
position.y = LINES - 1;
|
||||
|
||||
// pen point direction
|
||||
struct vec2 direction;
|
||||
direction.x = -1;
|
||||
direction.y = 0;
|
||||
|
||||
// here we start the drawing
|
||||
for (int i = 0; i < COLS*LINES; i++)
|
||||
{
|
||||
// move & paint
|
||||
position.x += direction.x;
|
||||
position.y += direction.y;
|
||||
mvaddch(position.y, position.x, '*');
|
||||
|
||||
// flush the buffer to show result on the screen
|
||||
refresh();
|
||||
|
||||
// check if we are about to meet the border
|
||||
if (position.x + direction.x <= b.left) { // if yes, then...
|
||||
// turn right
|
||||
direction.x = 0;
|
||||
direction.y = -1;
|
||||
|
||||
// grab the border and pull it towards us as bit
|
||||
b.bottom--;
|
||||
}
|
||||
// and then repeat for every single border we have...
|
||||
else if (position.y + direction.y <= b.top) {
|
||||
direction.x = 1;
|
||||
direction.y = 0;
|
||||
|
||||
b.left++;
|
||||
}
|
||||
else if (position.x + direction.x >= b.right) {
|
||||
direction.x = 0;
|
||||
direction.y = 1;
|
||||
|
||||
b.top++;
|
||||
}
|
||||
else if (position.y + direction.y >= b.bottom) {
|
||||
direction.x = -1;
|
||||
direction.y = 0;
|
||||
|
||||
b.right--;
|
||||
}
|
||||
|
||||
// and we wait... wait... wait...
|
||||
napms(20);
|
||||
}
|
||||
|
||||
// hold the buffer until the keypress
|
||||
getch();
|
||||
|
||||
// finish & cleanup
|
||||
endwin();
|
||||
return 0;
|
||||
}
|
||||
4
Lab_3/run.sh
Normal file
4
Lab_3/run.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
gcc code.c -o code -l ncurses
|
||||
./code
|
||||
Reference in New Issue
Block a user