Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //this version fixed deleting problem
- /*
- *Notes might be a bit scattered or maybe wrong to some extent*
- how to play:
- #start game in full terminal. it will look funny is u dont
- #use arrow keys to move
- #press 'o' to place barrier
- #to delete barrier piece stand by it ans press w,a,s,d. ex: stand under the barrer u wanna delete and press w
- #if you get stuck in a barrier and cant move (this is a bug) press 'r' to go to (0,0)
- #press 'q' to end the game
- #to save the game u are on, while in the terminal copy all the blue area. now go make a copy of this file here. see that big open space printw? well u need to replace all the stuff it is printing with the screen u copied. then put \n after every 'o' and it should work
- */
- #include <curses.h>//header for all this ncurses stuff
- #include <unistd.h>//used for sleep command
- int main()//used in every program
- {
- //start of gui
- initscr();//makes the screen
- start_color();//says we can have color
- noecho();//keeps from pressing other characters
- nodelay(stdscr, TRUE);//keeps it from delaying :P
- keypad(stdscr, TRUE);//lets me use arrow keys
- init_pair(1, COLOR_RED, COLOR_CYAN);//1 is the name of the pair, white is the text, cyan is the background.kind of like setting a varriable
- attron(COLOR_PAIR(1));//initiating color pair 1
- printw(" o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\n o\nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n");//makes it show color background
- move(0,0);//sets cursor position to here so the next printw will print at this position (not really needed anymore but here)
- //end of gui
- //start of arrow keys input (moving person)
- for( ; ; ) {//loop
- char wall = inch();//defines wall as something on screen
- int y, x;//some varriables
- int ch = getch();//sets varriable ch(input) as getch to be used specially
- switch (ch) {//changes that getch varriable to the special keys below
- case KEY_DOWN://special key
- getyx(stdscr , y, x);//recieves the current curser position
- move(y+1,x);//moves cursor accordingly based on current position
- refresh();//refreshes the screen to show that the cursor moved
- getch();//recieves input or something. needed but not sure exactly what it does
- }
- switch (ch) { //the other arrows...
- case KEY_UP:
- getyx(stdscr , y, x);
- move(y-1,x);
- refresh();
- getch();
- }
- switch (ch) {
- case KEY_LEFT:
- getyx(stdscr , y, x);
- move(y,x-1);
- refresh();
- getch();
- }
- switch (ch) {
- case KEY_RIGHT:
- getyx(stdscr , y, x);
- move(y , x+1 );
- refresh();
- getch();
- } //end of arrow keys input (moving person)
- if(ch=='z') {
- //THE STUFF I NEED HELP WITH WILL MOST LIKELY GO HERE
- }
- //barrier
- if(ch=='o') {//checks to see if u press o
- printw("o");//makes a barrier
- refresh();//shows changes
- } //deleting barriers (buggy. may not be compatabe with how the barrier are not able to go thru)
- if(ch=='w') {//checks to see if u press d
- wall=='b';//sets the barrier to b instead of o for a sec because o is the barrier o it changes b to the barrier
- getyx(stdscr,y,x);
- move(y-1,x);// mover cursor up onto the barrier to replace it with space then back one cuz the spaces pushes it forward
- printw(" ");//prints the space
- getyx(stdscr,y,x);
- move(y+1,x-1);
- refresh();//refreshes the screen to show the changes
- }
- if(ch=='a') {//checks to see if u press d
- wall=='b';//sets the barrier to b instead of o for a sec because o is the barrier o it changes b to the barrier
- getyx(stdscr,y,x);
- move(y,x-1);// mover cursor up onto the barrier to replace it with space then back one cuz the spaces pushes it forward
- printw(" ");//prints the space
- getyx(stdscr,y,x);
- move(y,x);
- refresh();//refreshes the screen to show the changes
- }
- if(ch=='s') {//checks to see if u press d
- wall=='b';//sets the barrier to b instead of o for a sec because o is the barrier o it changes b to the barrier
- getyx(stdscr,y,x);
- move(y+1,x);// mover cursor up onto the barrier to replace it with space then back one cuz the spaces pushes it forward
- printw(" ");//prints the space
- getyx(stdscr,y,x);
- move(y-1,x-1);
- refresh();//refreshes the screen to show the changes
- }
- if(ch=='d') {//checks to see if u press d
- wall=='b';//sets the barrier to b instead of o for a sec because o is the barrier o it changes b to the barrier
- getyx(stdscr,y,x);
- move(y,x+1);// mover cursor up onto the barrier to replace it with space then back one cuz the spaces pushes it forward
- printw(" ");//prints the space
- getyx(stdscr,y,x);
- move(y,x-2);
- refresh();//refreshes the screen to show the changes
- } //quitting the game
- if(ch=='q') {//checks to see if u press q
- endwin();//ends the window. screws up the termnal if u retrn 0 without this
- return 0;//ends program
- } //classification of barrier
- if (wall=='o') {//asking is wall = 'o' (wall is defines as inch earlier in program so it is inside terminal not user input)
- move(y,x);//moves cursor to its last known coordinates (notice i didnt getxy. this would make it move to the spot on the barrier)
- refresh();//shows changes
- getch();//tell that the input has been done (i think)
- } //in case of glitch this resets the cursor to (0,0)
- if (ch=='r') {//checks to see if u pressed r
- move(0,0);//moves u to (0,0)
- refresh();//shows changes
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement