|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 3901 (0xf3d) Types: TextFile Names: »stuff.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Cent/stuff.c«
#include "cent.h" rnd(n) register int n; { double rn(); register int i; i = n * rn(); return(i); } printpic(pic,len,y,x) char **pic; int len, y, x; { register int i; for (i = 0; i < len; i++) mvaddstr(i + y,x,pic[i]); } PEDE *getpede(y,x) { register PEDE *pede; for (pede = centipede; pede != NULL; pede = pede->next) if (pede->pos.y == y && pede->pos.x == x) return(pede); return(NULL); } addscore(n) { score += n; mvprintw(2,67,"%s",addcommas(score)); if (score >= nextman) { mvprintw(21,67,"%s",addcommas(nextman += FREEMAN)); extramen++; displaymen(); mvaddstr(12,66,"You've won"); mvaddstr(13,65,"a free man!!"); refresh(); sleep(2); move(12,66); clrtoeol(); move(13,65); clrtoeol(); } } displaymen() { static char men[15]; register int i; for (i = 0; i < 6 && i < extramen; i++) men[i] = YOU; if (extramen > 6) sprintf(men + 6," (%s)",addcommas(extramen)); else men[i] = 0; move(23,60); clrtoeol(); addstr(men); } char *addcommas(num) int num; { static char str[14]; register char *spot = str; register int p10; for (p10 = 1000; num / p10 > 0; p10 *= 1000); p10 /= 1000; sprintf(spot,"%d",num / p10); while (p10 > 1) { num -= (num / p10) * p10; p10 /= 1000; spot += strlen(spot); *spot++ = ','; sprintf(spot,"%03d",num / p10); } return(str); } drawpic(pic,len,wid,y,x) char **pic; int len,wid,y,x; { register int yy,xx,start,end,pos; start = (x < 1) ? 1 - x : 0; end = (x > 56 - wid) ? 56 - x : wid; for (yy = 0; yy < len; yy++) for (pos = start, xx = (x < 1) ? 1 : x; pos < end; pos ++, xx++) if (pic[yy][pos] != ' ') mvaddch(y + yy,xx,pic[yy][pos]); } erasepic(len,wid,y,x) int len,wid,y,x; { register int xx,yy,twid,newx; twid = ((x > 56 - wid) ? 56 - x : wid) - ((x < 1) ? 1 - x : 0); newx = (x < 1) ? 1 : x; for (yy = 0; yy < len; yy++) for (xx = newx; xx < newx + twid; xx++) ERASE(y + yy,xx); } showla() { register double la[3]; static int ol = -1,exceeded = 0; register int l; loadav(la); l = la[1] * 100; if (l != ol) { ol = l; mvprintw(0,67,"%.2f",l / 100.0); } #ifdef WIZARD if (l > 100 * maxload && !author) #else if (l > 100 * maxload) #endif { if (!exceeded) { mvaddstr(10,60,"Load av exceeded."); mvaddstr(11,60,"You have 2 minutes."); exceeded = 1; alarm(120); } } else if (exceeded) { alarm(0); mvaddstr(10,60,"The load av dropped."); mvaddstr(11,60,"You have a repreive."); exceeded = 0; } } toohigh() { double la[3]; loadav(la); #ifdef WIZARD return(la[1] > maxload && !author); #else return(la[1] > maxload); #endif } addshroom(y,x) int y,x; { if (y == 22) { mvaddstr(15,60,"Mushroom on last row"); return; } mvaddch(y,x,UNSHOTMUSHROOM); mushw[y][x] = UNSHOTMUSHROOM; if (y >= 18) nummushrooms++; } #ifdef WIZARD setname() { int i = 0; char ch; if (!author) return; mvaddstr(15,60,"New name(8 chars):"); move(16,60); refresh(); while ((ch = getch()) != '\n' && i < 9) { if (ch == '\010' || ch == '\177') { if (i > 0) { i--; printw("\010 \010"); } } else addch(name[i++] = ch); refresh(); } name[(i < 8) ? i : 8] = 0; move(16,60); clrtoeol(); move(15,60); clrtoeol(); addstr("Ok"); move(3,60); clrtoeol(); addstr(name); refresh(); } #endif instructions() { char ch, cmd[90]; printf("Welcome to Centipede version %.1f!\n",version); printf("Would you like instructions(y/n)?"); crmode(); if ((ch = getchar()) != 'y' && ch != 'Y') return; sprintf(cmd,"/usr/ucb/more %s",helpfile); system(cmd); printf("[Hit return to start the game]"); while (getchar() != '\n'); }