From 9e82b1296b4d969d787028a61e7acdfa81909e6e Mon Sep 17 00:00:00 2001 From: Oleksandr Hryshchenko Date: Tue, 11 May 2021 17:55:34 +0200 Subject: [PATCH] maze --- du7/snake/game | Bin 21408 -> 22406 bytes du7/snake/snake.c | 79 +++++- du7/snake/snake.o | Bin 3636 -> 4736 bytes final/Makefile | 13 + final/program | Bin 0 -> 24122 bytes final/program.c | 670 ++++++++++++++++++++++++++++++++++++++++++++++ final/program.o | Bin 0 -> 25352 bytes 7 files changed, 759 insertions(+), 3 deletions(-) create mode 100644 final/Makefile create mode 100755 final/program create mode 100644 final/program.c create mode 100644 final/program.o diff --git a/du7/snake/game b/du7/snake/game index 8fd45891d9fdf90b1d0e1b99bee897ab3a7d0b98..f44eaa638b932e3b0251165ffb17a97676153650 100755 GIT binary patch delta 7868 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 delta 6854 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 N2L=s}>}*y diff --git a/du7/snake/snake.c b/du7/snake/snake.c index 7038cdb..ab59ce6 100644 --- a/du7/snake/snake.c +++ b/du7/snake/snake.c @@ -2,22 +2,95 @@ #include struct snake* add_snake(struct snake* snake,int x,int y){ - return NULL; + struct snake* newHead = (struct snake*) malloc(sizeof(struct snake)); + newHead->x = x; + newHead->y = y; + newHead->next = snake; + + /*struct snake* temp = snake; + int myX, myY; + + while(temp->next != NULL){ + myX = temp->x; // + myY = temp->y; + temp->x = temp->next->x; //указатель на позицию следующего элемента по Х + temp->y = temp->next->y;//указатель на позицию следующего элемента по У + temp = temp->next; + } + + //temp->next = (struct snake*) calloc(1, sizeof(struct snake)); + temp->next->x = temp->x - (myX - temp->x); + temp->next->y = temp->y - (myY - temp->y); + temp->next->next = NULL;*/ + + return newHead; } struct snake* remove_snake(struct snake* snake){ - return NULL; + struct snake* temp = snake; + + while(temp->next->next != NULL){ + temp = temp->next; // проход до последнего кусочка + } + + temp->next = NULL; + + return snake; } void free_snake(struct snake* sn){ + struct snake* temp = sn; + + while(sn != NULL){ + temp = sn; + sn = sn->next; + temp->next = NULL; + } } int is_snake(struct snake* snake,int x,int y){ + struct snake* temp = snake; + + while(temp->next != NULL){ + if(x == temp->x && y == temp->y){ + return 1; + } + temp = temp->next; + } + return 0; } int step_state(struct state* st){ - int nx = (st->snake->x + st->sx); + int nx = (st->snake->x + st->sx); int ny = (st->snake->y + st->sy); + + for(int i = 0; i < FOOD_COUNT; i++){ + if(nx == st->foodx[i] && ny == st->foody[i]){ + st->snake = add_snake(st->snake, st->foodx[i], st->foody[i]); + st->foodx[i] = -1; + st->foody[i] = -1; + for(int j = 0; j < FOOD_COUNT; j++){ + if(st->foodx[i] != -1 || st->foody[i] != -1){ + break; + } + else if(st->foodx[i] == -1 && st->foody[i] == -1 && j == FOOD_COUNT - 1){ + return END_FOOD; + } + } + return END_CONTINUE; + } + } + + for(struct snake* temp = st->snake->next; temp != NULL; temp = temp->next){ + if((nx == temp->x && ny == temp->y) || (nx < 0 || nx >= st->width || ny < 0 || ny >= st->height)){ + return END_SNAKE; + } + } + + st->snake = add_snake(st->snake, nx, ny); + remove_snake(st->snake); + return END_CONTINUE; } + diff --git a/du7/snake/snake.o b/du7/snake/snake.o index 2b3efb3790a89265f00448774895a6a1705f7a4f..694649126be1d59b6cd033d3eae1b4dc33fab277 100644 GIT binary patch literal 4736 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%0A#;SMzFd(S=~oU@?4Y? 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 literal 0 HcmV?d00001 diff --git a/final/program.c b/final/program.c new file mode 100644 index 0000000..98ffea7 --- /dev/null +++ b/final/program.c @@ -0,0 +1,670 @@ +#include +#include +#include +#include +#include +#include +#include + +int position[2] = {22, 1}; + +char labyrith[24][80] = { + "###############################################################################", //1 + "# ###### ############## # #", //2 + "# ############################ ### # ## #### #### # #", //3 + "# # # # # ############ ### ## # ##### # #", //4 + "# # # # ###################### ### ## # #### #", //5 + "# # # # # # ####### ## ###### ###### # ########### #", //6 + "# # #### # #### # # #### ## #### # # # #", //7 + "# # #### ####### # # # # #### # # ### # ######## #", //8 + "# ############ # #### # # ##### # #### # # # # # # #", //9 + "# # # # # # # #### ###### ##### # #", //10 + "# # ########## # ############################## # # #X # #", //11 + "# # ##### # ###### ## ### # ######## #", //12 + "# ###### # ############ ############# # # # # # #", //13 + "### ######### # # ## ####### # # # # # # ##### #", //14 + "# # # # ##################### # # # # # # # # # #", //15 + "# ######### #### # ##### ######### # # # # #### # # # # #", //16 + "# # # # # ###### # # # #### #", //17 + "# ### # # # ######################## # # ####### ### # # #", //18 + "# # # ####### # ###### # ## ################ #", //19 + "# # # # ######## # ###### ###### ## # #", //20 + "# # ##### ####### ########### ### ######### ########## # # #", //21 + "# ################ ## ######## #", //22 + "# ######################################### # #", //23 + "###############################################################################" //24 +}; + +char maze[24][80] = { + "###############################################################################", //1 + "# ##### # # #", //2 + "# # # ### # # ################## ####### # ### #### # ########", //3 + "# # ######### # # # # # # # # # # # @#", //4 + "# # ### # # ##### # ######## # # ### # #### #### #####", //5 + "# #### ######### # # ## # ## # # # # # # # ## #", //6 + "# ## #### #### ## # ## # # # ### # #### # # #O ## #", //7 + "# ## ######### # ##### ## # # ## # # # ######## #", //8 + "######### # * # ######## # # # # # ########@ # #", //9 + "# # # ###### # ######## # ## # # # ####### ### #", //10 + "# ######### # # # # # # # # # ## # #< # # #", //11 + "# # # # # # # # # ######## ## #### # ## ####### ### # #", //12 + "### ####### # # # # # # # # # @# ## ### # # #", //13 + "# # # # # # # # # # ## ### ############# # # # ###", //14 + "# #### ####### # # # # # # # # # # # # ## #", //15 + "# # # # # # # ## #### # ## ### # # ########## @# ##########", //16 + "# # #### ####### # # # ## # # # # # #### # X#", //17 + "# # #### # # # # ###### #### ####### # # # ###### # # # ### #", //18 + "# # # # # # # # # # # # O# # # # #", //19 + "# ####### # ####### # # ####### # # ##### # # ######## ####### # # #", //20 + "# # # # # # # # # # X # # # # O # # #", //21 + "#*################ ### # #### # ######@ @####*######################## ###", //22 + "#O@ # # # #", //23 + "###############################################################################" //24 +}; + +void setPosition(int y, int x){ + position[0] = y; + position[1] = x; +} + +int getHorizontal(){ + return position[1]; +} + +int getVertical(){ + return position[0]; +} + +void lose(){ + clear(); + mvprintw(LINES/2, COLS/2 - 5, "YOU LOST!"); + refresh(); +} + +void won(){ + clear(); + mvprintw(LINES/2, COLS/2, "YOU WON!"); + refresh(); +} + +void generate_map(){ + struct timespec ts = { + .tv_sec = 0, // nr of secs + .tv_nsec = (long)(0.001 * 1000000000L) // nr of nanosecs + }; + for(int i = 0; i < 80; i++){ + for(int j = 0; j < 24; j++){ + if(j == 12 && i == 1){ + init_pair(1, COLOR_BLACK, COLOR_GREEN); + attron(COLOR_PAIR(1)); + mvaddch(j, i, '1'); + attroff(COLOR_PAIR(1)); + nanosleep(&ts, NULL); + refresh(); + } + else if(j == 22 && i == 1){ + init_pair(3, COLOR_WHITE, COLOR_BLUE); + attron(COLOR_PAIR(3)); + mvaddch(j, i, '^'); + attroff(COLOR_PAIR(3)); + nanosleep(&ts, NULL); + refresh(); + } + else if(j == 10 && i == 69){ + init_pair(2, COLOR_BLACK, COLOR_RED); + attron(COLOR_PAIR(2)); + mvaddch(j, i, 'X'); + attroff(COLOR_PAIR(2)); + nanosleep(&ts, NULL); + refresh(); + } + else{ + if(labyrith[j][i] == ' '){ + mvprintw(j, i, &labyrith[j][i]); + } + else{ + init_pair(15, COLOR_WHITE, COLOR_WHITE); + attron(COLOR_PAIR(15)); + mvaddch(j, i, ' '); + attroff(COLOR_PAIR(15)); + } + + nanosleep(&ts, NULL); + refresh(); + } + } + } + refresh(); +} + +void generate_second(){ + struct timespec ts = { + .tv_sec = 0, // nr of secs + .tv_nsec = (long)(0.001 * 1000000000L) // nr of nanosecs + }; + for(int i = 0; i < 80; i++){ + for(int j = 0; j < 24; j++){ + if((j == 10 && i == 67) || (j == 20 && i == 77)){ + init_pair(1, COLOR_BLACK, COLOR_GREEN); + attron(COLOR_PAIR(1)); + mvaddch(j, i, '1'); + attroff(COLOR_PAIR(1)); + nanosleep(&ts, NULL); + refresh(); + } + else if(j == getVertical() && i == getHorizontal()){ + init_pair(3, COLOR_WHITE, COLOR_BLUE); + attron(COLOR_PAIR(3)); + mvaddch(j, i, '<'); + attroff(COLOR_PAIR(3)); + nanosleep(&ts, NULL); + refresh(); + } + else if((j == 16 && i == 77) || (j == 20 && i == 43)){ + init_pair(2, COLOR_BLACK, COLOR_RED); + attron(COLOR_PAIR(2)); + mvaddch(j, i, 'X'); + attroff(COLOR_PAIR(2)); + nanosleep(&ts, NULL); + refresh(); + } + else{ + if(maze[j][i] == ' '){ + mvprintw(j, i, &maze[j][i]); + } + else if(maze[j][i] == '#'){ + init_pair(16, COLOR_WHITE, COLOR_WHITE); + attron(COLOR_PAIR(16)); + mvaddch(j, i, ' '); + attroff(COLOR_PAIR(16)); + } + else if (maze[j][i] == 'O'){ + init_pair(17, COLOR_WHITE, COLOR_MAGENTA); + attron(COLOR_PAIR(17)); + mvaddch(j, i, 'O'); + attroff(COLOR_PAIR(17)); + } + + else if (maze[j][i] == '@'){ + init_pair(18, COLOR_BLACK, COLOR_YELLOW); + attron(COLOR_PAIR(18)); + mvaddch(j, i, '@'); + attroff(COLOR_PAIR(18)); + } + + else if (maze[j][i] == '*'){ + init_pair(19, COLOR_YELLOW, COLOR_WHITE); + attron(COLOR_PAIR(19)); + mvaddch(j, i, '*'); + attroff(COLOR_PAIR(19)); + } + + nanosleep(&ts, NULL); + refresh(); + } + } + } + refresh(); +} + +int main(){ + srand( (unsigned int) time(NULL) ); + initscr(); + start_color(); + init_pair(3, COLOR_BLACK, COLOR_WHITE); + cbreak(); + noecho(); + keypad(stdscr, TRUE); + curs_set(false); + nodelay(stdscr, TRUE); + refresh(); + int win = 0; + int beeper = 0; + generate_map(); + refresh(); + int input;; + while(!win){ + input = getch(); + switch(input){ + case KEY_UP: + if((!(labyrith[getVertical()-1][getHorizontal()] == '#')) && (!(labyrith[getVertical()-1][getHorizontal()] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()-1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + } + if(getVertical() == 12 && getHorizontal() == 1){ + beeper = 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if(getVertical() == 10 && getHorizontal() == 69){ + win = 1; + beeper = 0; + init_pair(3, COLOR_BLACK, COLOR_WHITE); + } + break; + case KEY_DOWN: + if((!(labyrith[getVertical()+1][getHorizontal()] == '#')) && (!(labyrith[getVertical()+1][getHorizontal()] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()+1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), 'v'); + attroff(COLOR_PAIR(3)); + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), 'v'); + attroff(COLOR_PAIR(3)); + } + if(getVertical() == 12 && getHorizontal() == 1){ + beeper = 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if(getVertical() == 10 && getHorizontal() == 69){ + win = 1; + beeper = 0; + init_pair(3, COLOR_BLACK, COLOR_WHITE); + } + break; + case KEY_LEFT: + if((!(labyrith[getVertical()][getHorizontal()-1] == '#')) && (!(labyrith[getVertical()][getHorizontal()-1] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical(), getHorizontal()-1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + } + if(getVertical() == 12 && getHorizontal() == 1){ + beeper = 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if(getVertical() == 10 && getHorizontal() == 69){ + win = 1; + beeper = 0; + init_pair(3, COLOR_BLACK, COLOR_WHITE); + } + break; + case KEY_RIGHT: + if((!(labyrith[getVertical()][getHorizontal()+1] == '#')) && (!(labyrith[getVertical()][getHorizontal()+1] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical(), getHorizontal()+1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '>'); + attroff(COLOR_PAIR(3)); + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '>'); + attroff(COLOR_PAIR(3)); + } + if(getVertical() == 12 && getHorizontal() == 1){ + beeper = 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if(getVertical() == 10 && getHorizontal() == 69){ + win = 1; + beeper = 0; + init_pair(3, COLOR_BLACK, COLOR_WHITE); + } + break; + } + input = '0'; + } + win = 0; + int first = 0; int second = 0; + int put = 0; + generate_second(); + refresh(); + while(!win){ + input = getch(); + switch(input){ + case KEY_UP: + if(maze[getVertical()-1][getHorizontal()] == '@'){ + mvaddch(getVertical(), getHorizontal(), ' '); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + // win=1; + lose(); + break; + } + if(maze[getVertical()-1][getHorizontal()] == 'O'){ + mvaddch(getVertical(), getHorizontal(), ' '); + if(getVertical()-1 == 22 && getHorizontal() == 1){ + setPosition(19, 71); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical()-1 == 20 && getHorizontal() == 71){ + setPosition(21, 1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical()-1 == 18 && getHorizontal() == 60){ + setPosition(5, 72); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical()-1 == 6 && getHorizontal() == 72){ + setPosition(18, 59); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + break; + } + } + if((!(maze[getVertical()-1][getHorizontal()] == '#')) && (!(maze[getVertical()-1][getHorizontal()] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()-1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + } + if((getVertical() == 10 && getHorizontal() == 67) || (getVertical() == 20 && getHorizontal() == 77)){ + beeper += 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if((getVertical() == 16 && getHorizontal() == 77 && first == 0)){ + beeper -= 1; + maze[16][77] = ' '; + first = 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + put += 1; + if(put == 2){ + won(); + win = 1; + } + } + if(getVertical() == 20 && getHorizontal() == 43 && second == 0){ + beeper -= 1; + maze[20][43] = ' '; + second = 1; + put += 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + if(put == 2){ + won(); + win = 1; + } + } + break; + case KEY_DOWN: + if(maze[getVertical()+1][getHorizontal()] == '@'){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()-1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + lose(); + break; + } + if(maze[getVertical()+1][getHorizontal()] == 'O'){ + mvaddch(getVertical(), getHorizontal(), ' '); + if(getVertical()+1 == 22 && getHorizontal() == 1){ + setPosition(19, 71); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical()+1 == 20 && getHorizontal() == 71){ + setPosition(21, 1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical()+1 == 18 && getHorizontal() == 60){ + setPosition(5, 72); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical()+1 == 6 && getHorizontal() == 72){ + setPosition(18, 59); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + break; + } + } + if((!(maze[getVertical()+1][getHorizontal()] == '#')) && (!(maze[getVertical()+1][getHorizontal()] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()+1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), 'v'); + attroff(COLOR_PAIR(3)); + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), 'v'); + attroff(COLOR_PAIR(3)); + } + if((getVertical() == 10 && getHorizontal() == 67) || (getVertical() == 20 && getHorizontal() == 77)){ + beeper += 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if((getVertical() == 16 && getHorizontal() == 77 && first == 0)){ + beeper -= 1; + maze[16][77] = ' '; + first = 1; + put += 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + if(put == 2){ + won(); + win = 1; + } + } + if(getVertical() == 20 && getHorizontal() == 43 && second == 0){ + beeper -= 1; + maze[20][43] = ' '; + second = 1; + put += 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + if(put == 2){ + won(); + win = 1; + } + } + break; + case KEY_LEFT: + if(maze[getVertical()][getHorizontal()-1] == '@'){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()-1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + lose(); + break; + } + if(maze[getVertical()][getHorizontal()-1] == 'O'){ + mvaddch(getVertical(), getHorizontal(), ' '); + if(getVertical() == 22 && getHorizontal()-1 == 1){ + setPosition(19, 71); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical() == 20 && getHorizontal()-1 == 71){ + setPosition(21, 1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical() == 18 && getHorizontal()-1 == 60){ + setPosition(5, 72); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical() == 6 && getHorizontal()-1 == 72){ + setPosition(18, 59); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + break; + } + } + if((!(maze[getVertical()][getHorizontal()-1] == '#')) && (!(maze[getVertical()][getHorizontal()-1] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical(), getHorizontal()-1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + } + if((getVertical() == 10 && getHorizontal() == 67) || (getVertical() == 20 && getHorizontal() == 77)){ + beeper += 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + /*if((getVertical() == 16 && getHorizontal() == 77) || (getVertical() == 20 && getHorizontal() == 43)){ + beeper -= 1; + maze[16][77] = ' '; + put += 1; + if(beeper == 0) init_pair(3, COLOR_BLACK, COLOR_WHITE); + if(put == 2){ + won(); + win = 1; + } + }*/ + if((getVertical() == 16 && getHorizontal() == 77 && first == 0)){ + beeper -= 1; + maze[16][77] = ' '; + first = 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + put += 1; + if(put == 2){ + won(); + win = 1; + } + } + if(getVertical() == 20 && getHorizontal() == 43 && second == 0){ + beeper -= 1; + second = 1; + put += 1; + if(put == 2){ + won(); + win = 1; + } + } + break; + case KEY_RIGHT: + if(maze[getVertical()][getHorizontal()+1] == '@'){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical()+1, getHorizontal()); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + lose(); + break; + } + if(maze[getVertical()][getHorizontal()+1] == 'O'){ + mvaddch(getVertical(), getHorizontal(), ' '); + if(getVertical() == 22 && getHorizontal()+1 == 1){ + setPosition(19, 71); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical() == 20 && getHorizontal()+1 == 71){ + setPosition(21, 1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical() == 18 && getHorizontal()+1 == 60){ + setPosition(5, 72); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '^'); + attroff(COLOR_PAIR(3)); + break; + } + else if(getVertical() == 6 && getHorizontal()+1 == 72){ + setPosition(18, 59); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '<'); + attroff(COLOR_PAIR(3)); + break; + } + } + if((!(maze[getVertical()][getHorizontal()+1] == '#')) && (!(maze[getVertical()][getHorizontal()+1] == 'X' && beeper == 0))){ + mvaddch(getVertical(), getHorizontal(), ' '); + setPosition(getVertical(), getHorizontal()+1); + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '>'); + attroff(COLOR_PAIR(3)); + } + else{ + attron(COLOR_PAIR(3)); + mvaddch(getVertical(), getHorizontal(), '>'); + attroff(COLOR_PAIR(3)); + } + if((getVertical() == 10 && getHorizontal() == 67) || (getVertical() == 20 && getHorizontal() == 77)){ + beeper += 1; + init_pair(3, COLOR_BLACK, COLOR_GREEN); + } + if((getVertical() == 16 && getHorizontal() == 77 && first == 0)){ + beeper -= 1; + maze[16][77] = ' '; + first = 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + put += 1; + if(put == 2){ + won(); + win = 1; + } + } + if(getVertical() == 20 && getHorizontal() == 43 && second == 0){ + beeper -= 1; + maze[20][43] = ' '; + second = 1; + if(beeper == 0) init_pair(3, COLOR_WHITE, COLOR_BLUE); + put += 1; + if(put == 2){ + won(); + win = 1; + } + } + break; + } + input = '0'; + } + + getchar(); + delwin(stdscr); + endwin(); +} + diff --git a/final/program.o b/final/program.o new file mode 100644 index 0000000000000000000000000000000000000000..6c37fcd19bdfd745a21320e33bd13012e4e1827f GIT binary patch literal 25352 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 literal 0 HcmV?d00001