This is game.c in view mode; [Download] [Up]
/* ** Written by Stephan Dasia. ** ** permission is granted to freely distribute this code provided that you: ** ** 1) don't charge for it ** 2) leave my name and header on it ** 3) clearly document your changes and place your name on them ** 4) and please send the changes to me ** */ /* Shuffle: game() This is main game loop */ /* */ /* end_game() This procedure is called when a level */ /* is ended. It quits if you did it in to */ /* many turns. */ /* */ #include "shuffle.h" game(row,level) int *row[],level; { int nbr ,counter; char c; do { counter=0; screen(); switch_row(row,level); draw_row(row,level,counter); if(counter==0) { move(18,20); printw("Wich switch ? "); mvcur(0,0,18,35); } refresh(); do { do { c=getch(); c&=0x7f; nbr=0; if(c>='1' && c<='4') { counter++; nbr=1; mvcur(0,0,18,35); printw("%c",c); } if(c=='\022') { clear(); screen(); draw_row(row,level,counter); refresh(); } if(c=='?' || c=='h' || c=='H') { clear(); help(); refresh(); while((c=getch()) != ' '); clear(); screen(); draw_row(row,level,counter); refresh(); } } while( nbr!=1 && c!='?' && c!='h' && c!='H' && c!='q' && c!='Q'); do_switch(row,c-'0'); draw_row(row,level,counter); refresh(); } while(test_row(row) ==0 && c!='q' && c!='Q'); if(c!='q' && c!='Q') end_game(counter,level); level++; } while(c!='q' && c!='Q' && counter<test_level(level) && level<=MAXLEVEL); if(c=='q' || c=='Q') { clear(); refresh(); } } end_game(cntr,lvl) /* gives a next level if you did it ok, and */ int cntr,lvl; /* stops it if you did it in to many turns */ { move(20,2); if(cntr<=test_level(lvl)) { printw("You did it in %d switches.",cntr); move(20,42); printw("press <space> to continue"); refresh(); move(20,2); clrtoeol(); while(getch() !=' '); } else { printw("You did it in %d switches and",cntr); printw(" it could be done in %d switches.\n\n",lvl*FAC1); refresh(); Exit(0); } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.