Annotation of sbbs/killbots/killbots.c, revision 1.1.1.1

1.1       root        1: /* KILLBOTS.C */
                      2: 
                      3: #include <stdio.h>
                      4: #include <stdlib.h>
                      5: 
                      6: #define GOTOXY(x,y) printf("\x1b[%d;%dH",y,x)
                      7: 
                      8: main(int argc, char **argv)
                      9: {
                     10:        char str[81],name[31],chainpath[129],done=0,c
                     11:                ,crx,cry,cgd,cbx[5],cby[5],cbd[5],urx,ury,ugd,ubx[5],uby[5],ubd[5];
                     12:        FILE *stream;
                     13: 
                     14: if(argc!=2) {
                     15:        printf("\r\nUsage: KILLBOTS <path to chain.txt>\r\n");
                     16:        getch();
                     17:        return(1); }
                     18: strcpy(chainpath,argv[1]);
                     19: strupr(chainpath);
                     20: if(!strstr(chainpath,"CHAIN.TXT")) {
                     21:        if(chainpath[strlen(chainpath)-1]!='\\');
                     22:                strcat(chainpath,"\\");
                     23:        strcat(chainpath,"CHAIN.TXT"); }
                     24: if((stream=fopen(chainpath,"rb"))==NULL) {
                     25:        printf("\7\r\nError opening %s\r\n",chainpath);
                     26:        getch();
                     27:        return(1); }
                     28: fgets(str,81,stream);  /* user number */
                     29: fgets(str,81,stream);  /* user name */
                     30: str[strlen(str)-2]=0;  /* chop off CRLF */
                     31: sprintf(name,"%-.30s",str);
                     32: fclose(stream);
                     33: randomize();
                     34: printf("\x1b[2JWelcome to KILLBOTS, %s!\r\n",name);
                     35: getch();
                     36: printf("\x1b[2J");
                     37: putchar('�');
                     38: for(c=0;c<78;c++)
                     39:        putchar('�');
                     40: putchar('�');
                     41: for(c=0;c<19;c++)
                     42:        printf("�\x1b[78C�");
                     43: putchar('�');
                     44: for(c=0;c<78;c++)
                     45:        putchar('�');
                     46: putchar('�');
                     47: for(c=0;c<2;c++)
                     48:        printf("�\x1b[78C�");
                     49: putchar('�');
                     50: for(c=0;c<78;c++)
                     51:        putchar('�');
                     52: putchar('�');
                     53: crx=cry=3;
                     54: cgd='R';
                     55: for(c=0;c<5;c++)
                     56:        cbx[c]=cby[c]=cbd[c]=0;
                     57: urx=78;
                     58: ury=19;
                     59: ugd='L';
                     60: for(c=0;c<5;c++)
                     61:        ubx[c]=uby[c]=ubd[c]=0;
                     62: while(!done) {
                     63:        for(c=0;c<5;c++)
                     64:                if(cbd[c]) {
                     65:                        GOTOXY(cbx[c],cby[c]);
                     66:                        putch(' ');
                     67:                        switch(cbd[c]) {
                     68:                                case 'L':
                     69:                                        cbx[c]-=4;
                     70:                                        break;
                     71:                                case 'R':
                     72:                                        cbx[c]+=4;
                     73:                                        break;
                     74:                                case 'U':
                     75:                                        cby[c]-=2;
                     76:                                        break;
                     77:                                case 'D':
                     78:                                        cby[c]+=2;
                     79:                                        break; }
                     80:                        if((cbx[c]==urx && cby[c]==ury) ||
                     81:                                (cbd[c]=='R' && cby[c]==ury && (cbx[c]>urx && cbx[c]-4<urx)) ||
                     82:                                (cbd[c]=='L' && cby[c]==ury && (cbx[c]<urx && cbx[c]+4>urx)) ||
                     83:                                (cbd[c]=='U' && cbx[c]==urx && (cby[c]<ury && cby[c]+2>ury)) ||
                     84:                                (cbd[c]=='D' && cbx[c]==urx && (cby[c]>ury && cby[c]-2<ury))) {
                     85:                                GOTOXY(urx,ury);
                     86:                                putchar('#');
                     87:                                GOTOXY(3,23);
                     88:                                printf("You're dead!");
                     89:                                getch();
                     90:                                done=1; }
                     91:                        if(cbx[c]>79 || cbx[c]<2 || cby[c]>19 || cby[c]<2)
                     92:                                cbd[c]=0;
                     93:                        else {
                     94:                 GOTOXY(cbx[c],cby[c]);
                     95:                                putchar('*'); } }
                     96:        for(c=0;c<5;c++)
                     97:                if(ubd[c]) {
                     98:                        GOTOXY(ubx[c],uby[c]);
                     99:                        putch(' ');
                    100:                        switch(ubd[c]) {
                    101:                                case 'L':
                    102:                                        ubx[c]-=4;
                    103:                                        break;
                    104:                                case 'R':
                    105:                                        ubx[c]+=4;
                    106:                                        break;
                    107:                                case 'U':
                    108:                                        uby[c]-=2;
                    109:                                        break;
                    110:                                case 'D':
                    111:                                        uby[c]+=2;
                    112:                                        break; }
                    113:             if((ubx[c]==crx && uby[c]==cry) ||
                    114:                                (ubd[c]=='R' && uby[c]==cry && (ubx[c]>crx && ubx[c]-4<crx)) ||
                    115:                                (ubd[c]=='L' && uby[c]==cry && (ubx[c]<crx && ubx[c]+4>crx)) ||
                    116:                                (ubd[c]=='U' && ubx[c]==crx && (uby[c]<cry && uby[c]+2>cry)) ||
                    117:                                (ubd[c]=='D' && ubx[c]==crx && (uby[c]>cry && uby[c]-2<cry))) {
                    118:                                GOTOXY(crx,cry);
                    119:                                putchar('#');
                    120:                                GOTOXY(3,23);
                    121:                                printf("Got 'em!");
                    122:                                getch();
                    123:                                done=1; }
                    124:                        if(ubx[c]>79 || ubx[c]<2 || uby[c]>19 || uby[c]<2)
                    125:                                ubd[c]=0;
                    126:                        else {
                    127:                 GOTOXY(ubx[c],uby[c]);
                    128:                                putchar('+'); } }
                    129:        if(!random(4)) {
                    130:                GOTOXY(crx,cry);
                    131:                putchar(' ');   /* erase man */
                    132:                switch(cgd) {   /* computer robot gun dirrection */
                    133:                        case 'L':
                    134:                                printf("\b\b");
                    135:                                break;
                    136:                        case 'U':
                    137:                                GOTOXY(crx,cry-1);
                    138:                                break;
                    139:                        case 'D':
                    140:                                GOTOXY(crx,cry+1);
                    141:                                break; }
                    142:                putchar(' ');   /* erase gun */
                    143:                switch(random(9)) {
                    144:                        case 1:
                    145:                                if(crx>3)
                    146:                                        crx--;
                    147:                                break;
                    148:                        case 2:
                    149:                                if(cry>3)
                    150:                                        cry--;
                    151:                                break;
                    152:                        case 3:
                    153:                                if(crx<78)
                    154:                                        crx++;
                    155:                                break;
                    156:                        case 4:
                    157:                                if(cry<19)
                    158:                                        cry++;
                    159:                                break;
                    160:                        case 5:
                    161:                                if(cry>3 && crx>3) {
                    162:                                        crx--;
                    163:                                        cry--; }
                    164:                                break;
                    165:                        case 6:
                    166:                                if(cry<19 && crx>3) {
                    167:                                        crx--;
                    168:                                        cry++; }
                    169:                                break;
                    170:                        case 7:
                    171:                                if(cry<19 && crx<78) {
                    172:                                        crx++;
                    173:                                        cry++; }
                    174:                                break;
                    175:                        case 8:
                    176:                                if(cry>3 && crx<78) {
                    177:                                        crx++;
                    178:                                        cry--; }
                    179:                                break; }
                    180:                GOTOXY(crx,cry);
                    181:                putchar(2);
                    182:                switch(random(4)) {
                    183:                        case 0:
                    184:                                cgd='R';
                    185:                                break;
                    186:                        case 1:
                    187:                                cgd='L';
                    188:                                break;
                    189:                        case 2:
                    190:                                cgd='U';
                    191:                                break;
                    192:                        case 3:
                    193:                                cgd='D';
                    194:                                break; }
                    195:                for(c=0;c<5;c++)
                    196:                        if(!cbd[c])
                    197:                                break;
                    198:                switch(cgd) {   /* computer robot gun dirrection */
                    199:                        case 'L':
                    200:                                GOTOXY(crx-1,cry);
                    201:                                putchar(17);
                    202:                                if(c==5)
                    203:                                        break;
                    204:                                if(ury+1>=cry && ury-1<=cry && urx<crx) {
                    205:                                        cbx[c]=crx-2;
                    206:                                        cby[c]=cry;
                    207:                                        cbd[c]='L'; }
                    208:                                break;
                    209:                        case 'R':
                    210:                                putchar(16);
                    211:                                if(c==5)
                    212:                                        break;
                    213:                                if(ury+1>=cry && ury-1<=cry && urx>crx) {
                    214:                                        cbx[c]=crx+2;
                    215:                                        cby[c]=cry;
                    216:                                        cbd[c]='R'; }
                    217:                                break;
                    218:                        case 'U':
                    219:                                GOTOXY(crx,cry-1);
                    220:                                putchar(30);
                    221:                                if(c==5)
                    222:                                        break;
                    223:                                if(urx+1>=crx && urx-1<=crx && ury<cry) {
                    224:                                        cbx[c]=crx;
                    225:                                        cby[c]=cry-2;
                    226:                                        cbd[c]='U'; }
                    227:                                break;
                    228:                        case 'D':
                    229:                                GOTOXY(crx,cry+1);
                    230:                                putchar(31);
                    231:                                if(c==5)
                    232:                                        break;
                    233:                                if(urx+1>=crx && urx-1<=crx && ury>cry) {
                    234:                                        cbx[c]=crx;
                    235:                                        cby[c]=cry+2;
                    236:                                        cbd[c]='D'; }
                    237:                                break; } }
                    238:        /*
                    239:        for(c=0;c<5;c++)
                    240:                if(cbd[c]) {
                    241:                        GOTOXY(cbx[c],cby[c]);
                    242:                        putchar('%'); }
                    243:        */
                    244:        if(kbhit()) {
                    245:                GOTOXY(urx,ury);
                    246:                putchar(' ');
                    247:                switch(ugd) {   /* computer robot gun dirrection */
                    248:                        case 'L':
                    249:                                printf("\b\b");
                    250:                                break;
                    251:                        case 'U':
                    252:                                GOTOXY(urx,ury-1);
                    253:                                break;
                    254:                        case 'D':
                    255:                                GOTOXY(urx,ury+1);
                    256:                                break; }
                    257:                putchar(' ');   /* erase gun */
                    258:                switch(toupper(getch())) {
                    259:                        case 'Q':
                    260:                                done=1;
                    261:                                break;
                    262:                        case 'J':
                    263:                                if(urx>3)
                    264:                                        urx--;
                    265:                                break;
                    266:                        case 'I':
                    267:                                if(ury>3)
                    268:                                        ury--;
                    269:                                break;
                    270:                        case 'K':
                    271:                                if(urx<78)
                    272:                                        urx++;
                    273:                                break;
                    274:                        case 'M':
                    275:                                if(ury<19)
                    276:                                        ury++;
                    277:                                break;
                    278:                        case 'U':
                    279:                                if(ury>3 && urx>3) {
                    280:                                        urx--;
                    281:                                        ury--; }
                    282:                                break;
                    283:                        case 'N':
                    284:                                if(ury<19 && urx>3) {
                    285:                                        urx--;
                    286:                                        ury++; }
                    287:                                break;
                    288:                        case ',':
                    289:                                if(ury<19 && urx<78) {
                    290:                                        urx++;
                    291:                                        ury++; }
                    292:                                break;
                    293:                        case 'O':
                    294:                                if(ury>3 && urx<78) {
                    295:                                        urx++;
                    296:                                        ury--; }
                    297:                                break;
                    298:                        case 'C':
                    299:                                ugd='D';
                    300:                                break;
                    301:                        case 'R':
                    302:                                ugd='U';
                    303:                                break;
                    304:                        case 'F':
                    305:                                ugd='R';
                    306:                                break;
                    307:                        case 'D':
                    308:                                ugd='L';
                    309:                                break;
                    310:                        case ' ':       /* fire */
                    311:                                for(c=0;c<5;c++)
                    312:                                        if(!ubd[c])
                    313:                                                break;
                    314:                                if(c==5)
                    315:                                        break;
                    316:                                ubd[c]=ugd;
                    317:                                switch(ugd) {
                    318:                                        case 'R':
                    319:                                                ubx[c]=urx+2;
                    320:                                                uby[c]=ury;
                    321:                                                break;
                    322:                                        case 'L':
                    323:                                                ubx[c]=urx-2;
                    324:                                                uby[c]=ury;
                    325:                                                break;
                    326:                                        case 'U':
                    327:                                                ubx[c]=urx;
                    328:                                                uby[c]=ury-2;
                    329:                                                break;
                    330:                                        case 'D':
                    331:                                                ubx[c]=urx;
                    332:                                                uby[c]=ury+2;
                    333:                                                break; } }
                    334:                GOTOXY(urx,ury);
                    335:                putchar(1);
                    336:                switch(ugd) {   /* user robot gun dirrection */
                    337:                        case 'L':
                    338:                                GOTOXY(urx-1,ury);
                    339:                                putchar(17);
                    340:                                break;
                    341:                        case 'R':
                    342:                                putchar(16);
                    343:                                break;
                    344:                        case 'U':
                    345:                                GOTOXY(urx,ury-1);
                    346:                                putchar(30);
                    347:                                break;
                    348:                        case 'D':
                    349:                                GOTOXY(urx,ury+1);
                    350:                                putchar(31);
                    351:                                break; } }
                    352:        /*
                    353:        for(c=0;c<5;c++)
                    354:                if(ubd[c]) {
                    355:                        GOTOXY(ubx[c],uby[c]);
                    356:                        putchar('@'); }
                    357:        */
                    358:        delay(150);     }
                    359: delay(2000);
                    360: printf("\x1b[2J");
                    361: }
                    362: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.