|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)player2.c 1.2 83/05/20"; ! 3: #endif ! 4: ! 5: #include "player.h" ! 6: ! 7: #define turnfirst(buf) (*buf == 'r' || *buf == 'l') ! 8: ! 9: lost() ! 10: { ! 11: if (scene[game].ship[player].file -> struck) ! 12: leave(0); ! 13: if (scene[game].ship[player].file -> captured > -1) ! 14: leave(1); ! 15: if (windspeed == 7) ! 16: leave(3); ! 17: if(scene[game].ship[player].file -> FS && (!specs[scene[game].ship[player].shipnum].rig1 || windspeed == 6)) ! 18: Write(FILES + player, 0, 230, 0); ! 19: } ! 20: ! 21: ! 22: acceptmove(ma, ta, af) ! 23: int ma, ta, af; ! 24: { ! 25: register int n; ! 26: int moved = 0; ! 27: int full, vma, dir, ch; ! 28: char buf[60], last = '\0'; ! 29: ! 30: if (scroll >= 22) scroll = 18; ! 31: move(scroll++, 0); ! 32: clearline(); ! 33: printw("move (%d,%c%d): ", ma, (af ? '\'' : ' '), ta); ! 34: refresh(); ! 35: n = 0; ! 36: while((ch = getch()) != '\n'){ ! 37: if (ch != EOF){ ! 38: buf[n++] = ch; ! 39: addch(ch); ! 40: refresh(); ! 41: } ! 42: if(ch == '' && n > 1) ! 43: n -= 2; ! 44: } ! 45: buf[n] = '\0'; ! 46: buf[9] = '\0'; ! 47: dir = pos[player].dir; ! 48: vma = ma; ! 49: for (n = 0; buf[n]; n++) ! 50: if (!(buf[n] == 'r' || buf[n] == '\n' || buf[n] == 'l' || (buf[n] == '0' && !n) || isdigit(buf[n]) || buf[n] == 'b' || (buf[n] == 'd' && !n))){ ! 51: if (isspace(buf[n])){ ! 52: strcpy(buf+n, buf+n+1); ! 53: n--; ! 54: } else { ! 55: Signal("Syntax error.",0,0); ! 56: buf[n--] = '\0'; ! 57: } ! 58: } ! 59: else ! 60: switch(buf[n]){ ! 61: case 'l': ! 62: dir -= 2; ! 63: case 'r': ! 64: dir++; ! 65: if (!dir) dir = 8; ! 66: if (dir == 9) dir = 1; ! 67: if (last == 't'){ ! 68: Signal("Error; ship can't turn that fast.", 0, 0); ! 69: buf[n--] = '\0'; ! 70: } ! 71: last = 't'; ! 72: ma--; ! 73: ta--; ! 74: vma = min(ma, maxmove(player, dir, 0)); ! 75: if (ta < 0 && moved || vma < 0 && moved) ! 76: buf[n--] = '\0'; ! 77: break; ! 78: ! 79: case 'b': ! 80: ma--; ! 81: vma--; ! 82: last = 'b'; ! 83: if (ta < 0 && moved || vma < 0 && moved) ! 84: buf[n--] = '\0'; ! 85: break; ! 86: ! 87: case '0': ! 88: case 'd': ! 89: buf[n--] = '\0'; ! 90: break; ! 91: ! 92: case '\n': ! 93: buf[n] = '\0'; ! 94: break; ! 95: ! 96: case '1': ! 97: case '2': ! 98: case '3': ! 99: case '4': ! 100: case '5': ! 101: case '6': ! 102: case '7': ! 103: if (last == '0'){ ! 104: Signal("Error; value out of range.", 0, 0); ! 105: buf[n--] = '\0'; ! 106: } ! 107: last = '0'; ! 108: moved = 1; ! 109: ma -= buf[n] - '0'; ! 110: vma -= buf[n] - '0'; ! 111: if (ta < 0 && moved || vma < 0 && moved) ! 112: buf[n--] = '\0'; ! 113: break; ! 114: ! 115: } /* end switch and else and for */ ! 116: if (ta < 0 && moved || vma < 0 && moved || af && turnfirst(buf) && moved){ ! 117: Signal("Movement error.", 0, 0); ! 118: if (ta < 0 && moved){ ! 119: if (scene[game].ship[player].file -> FS == 1){ ! 120: Write(FILES + player, 0, 230, 0); ! 121: Signal("No hands to set full sails.", 0, 0); ! 122: } ! 123: } ! 124: else if (ma >= 0) ! 125: buf[1] = '\0'; ! 126: } ! 127: if (af && !moved){ ! 128: if (scene[game].ship[player].file -> FS == 1){ ! 129: Write(FILES + player, 0, 230, 0); ! 130: Signal("No hands to set full sails.", 0, 0); ! 131: } ! 132: } ! 133: strcpy(movebuf, buf); ! 134: if (!*movebuf) strcpy(movebuf, "d"); ! 135: Write(FILES + player, 1, 72, movebuf); ! 136: Signal("Helm: %s.", -1, movebuf); ! 137: } ! 138: ! 139: boarding() ! 140: { ! 141: register int n; ! 142: int crew[3]; ! 143: int captured, men = 0; ! 144: struct shipspecs *ptr; ! 145: ! 146: ptr = &specs[scene[game].ship[player].shipnum]; ! 147: crew[0] = ptr -> crew1; ! 148: crew[1] = ptr -> crew2; ! 149: crew[2] = ptr -> crew3; ! 150: for(n=0; n < 3; n++){ ! 151: if (scene[game].ship[player].file -> OBP[n].turnsent) ! 152: men += scene[game].ship[player].file -> OBP[n].turnsent; ! 153: } ! 154: for(n=0; n < 3; n++){ ! 155: if (scene[game].ship[player].file -> DBP[n].turnsent) ! 156: men += scene[game].ship[player].file -> DBP[n].turnsent; ! 157: } ! 158: if (men){ ! 159: crew[0] = men/100 ? 0 : crew[0] != 0; ! 160: crew[1] = (men%100)/10 ? 0 : crew[1] != 0; ! 161: crew[2] = men%10 ? 0 : crew[2] != 0; ! 162: } else { ! 163: crew[0] = crew[0] != 0; ! 164: crew[1] = crew[1] != 0; ! 165: crew[2] = crew[2] != 0; ! 166: } ! 167: for (n=0; n < scene[game].vessels; n++){ ! 168: if ((captured = scene[game].ship[n].file -> captured) < 0) ! 169: captured = n; ! 170: if (n != player && pos[n].dir && range(player, n) <= 1 && scene[game].ship[player].nationality != scene[game].ship[captured].nationality){ ! 171: if (meleeing(player, n) && crew[2]){ ! 172: Signal("How many more to board the %s (%c%c)? ",n,0); ! 173: parties(crew, n, 200); ! 174: } ! 175: else if ((foul(player, n) || grapple(player, n)) && crew[2]){ ! 176: Signal("Crew sections to board the %s (%c%c) (3 max) ?", n, 0); ! 177: parties(crew, n, 200); ! 178: } ! 179: } ! 180: } ! 181: if (crew[2]){ ! 182: Signal("How many sections to repel boarders? ", 0, 0); ! 183: parties(crew, player, 260); ! 184: } ! 185: } ! 186: ! 187: parties(crew, n, offset) ! 188: int crew[3], n, offset; ! 189: { ! 190: register int k, j, men; ! 191: struct BP * ptr; ! 192: int buf; ! 193: int temp[3]; ! 194: ! 195: for (k=0; k < 3; k++) ! 196: temp[k] = crew[k]; ! 197: while((buf = getch()) == EOF); ! 198: addch(buf); ! 199: if (isdigit(buf)){ ! 200: ptr = offset == 200 ? scene[game].ship[player].file -> OBP : scene[game].ship[player].file -> DBP ; ! 201: for (j = 0; j < 3 && ptr[j].turnsent; j++); ! 202: if (!ptr[j].turnsent && buf > '0'){ ! 203: men = 0; ! 204: for (k=0; k < 3 && buf > '0'; k++){ ! 205: men += crew[k]*power(10, 2-k); ! 206: crew[k] = 0; ! 207: if (men) buf -= 1; ! 208: } ! 209: if (buf > '0') ! 210: Signal("Sending all crew sections.", 0, 0); ! 211: Write(FILES + player, 0, 30 + (offset > 200)*18 + 6*j, turn); ! 212: Write(FILES + player, 0, 30 + (offset > 200)*18 + 6*j + 2, n); ! 213: Write(FILES + player, 0, 30 + (offset > 200)*18 + 6*j + 4, men); ! 214: switch(offset){ ! 215: case 200: ! 216: wmove(slot, 0, 0); ! 217: for (k=0; k < 3; k++) ! 218: if (temp[k] && !crew[k]) ! 219: waddch(slot, k + '1'); ! 220: else ! 221: wmove(slot, 0, 1 + k); ! 222: wmove(slot, 1, 0); ! 223: waddstr(slot, "OBP"); ! 224: makesignal("boarding the %s (%c%c)", n, player); ! 225: break; ! 226: case 260: ! 227: wmove(slot, 2, 0); ! 228: for (k=0; k < 3; k++) ! 229: if (temp[k] && !crew[k]) ! 230: waddch(slot, k + '1'); ! 231: else ! 232: wmove(slot, 2, 1 + k); ! 233: wmove(slot, 3, 0); ! 234: waddstr(slot, "DBP"); ! 235: makesignal("repelling boarders", 0, player); ! 236: break; ! 237: } ! 238: wrefresh(slot); ! 239: } ! 240: else ! 241: Signal("Sending no crew sections.", 0, 0); ! 242: } ! 243: } ! 244: ! 245: power(base, exp) ! 246: int base, exp; ! 247: { ! 248: switch(exp){ ! 249: case 0: ! 250: return(1); ! 251: case 1: ! 252: return(base); ! 253: case 2: ! 254: return(base * base); ! 255: } ! 256: return(0); ! 257: } ! 258: ! 259: repair() ! 260: { ! 261: int buf; ! 262: int *repairs; ! 263: struct shipspecs *ptr; ! 264: ! 265: if (!repaired && !loaded && !fired && !changed && !turned()){ ! 266: ptr = &specs[scene[game].ship[player].shipnum]; ! 267: Signal("Repair (hull, guns, rigging)? ", 0, 0); ! 268: while((buf = getch()) == EOF); ! 269: addch(buf); ! 270: switch(buf){ ! 271: case 'h': ! 272: repairs = &scene[game].ship[player].file -> RH; ! 273: break; ! 274: case 'g': ! 275: repairs = &scene[game].ship[player].file -> RG; ! 276: break; ! 277: case 'r': ! 278: repairs = &scene[game].ship[player].file -> RR; ! 279: break; ! 280: default: ! 281: Signal("Avast heaving!", 0, 0); ! 282: return; ! 283: } ! 284: repaired = 1; ! 285: *repairs += 1; ! 286: if (*repairs >= 3){ ! 287: *repairs = 0; ! 288: } ! 289: if (!*repairs){ ! 290: switch(buf){ ! 291: case 'h': ! 292: if (ptr -> hull < ptr -> guns/4) ! 293: Write(SPECS + player, 0, 10, ptr -> hull + 2); ! 294: else buf = 0; ! 295: break; ! 296: case 'g': ! 297: if (ptr -> gunL < ptr -> gunR){ ! 298: if (ptr -> gunL + ptr -> carL < ptr -> guns/5) ! 299: Write(SPECS + player, 0, 20, ptr -> gunL + 2); ! 300: else buf = 0; ! 301: } else ! 302: if (ptr -> gunR + ptr -> carR < ptr -> guns/5) ! 303: Write(SPECS + player, 0, 22, ptr -> gunR + 2); ! 304: else buf = 0; ! 305: break; ! 306: case 'r': ! 307: if (!ptr -> rig4) ! 308: Write(SPECS + player, 0, 34, ptr -> rig4 + 2); ! 309: else if (!ptr -> rig3) ! 310: Write(SPECS + player, 0, 32, 2); ! 311: else if (!ptr -> rig2) ! 312: Write(SPECS + player, 0, 30, 2); ! 313: else if (ptr -> rig1 < 4) ! 314: Write(SPECS + player, 0, 28, 2); ! 315: else buf = 0; ! 316: break; ! 317: } ! 318: if (!buf) ! 319: Signal("Repairs completed.", 0, 0); ! 320: } ! 321: } ! 322: else ! 323: Signal("No hands free to repair",0,0); ! 324: } ! 325: ! 326: turned() ! 327: { ! 328: register int n; ! 329: ! 330: for (n=0; movebuf[n]; n++) ! 331: if (movebuf[n] == 'r' || movebuf[n] == 'l') ! 332: return(1); ! 333: return(0); ! 334: } ! 335: ! 336: loadplayer() ! 337: { ! 338: int buf; ! 339: int loadL, loadR, ready, load, *Ready, *Load; ! 340: ! 341: if (!specs[scene[game].ship[player].shipnum].crew3){ ! 342: Signal("out of crew",0,0); ! 343: return(0); ! 344: } ! 345: Load = &scene[game].ship[player].file -> loadL; ! 346: Ready = &scene[game].ship[player].file -> readyL; ! 347: loadL = *Load; ! 348: loadR = *(Load + 1); ! 349: if (!loadL && !loadR){ ! 350: Signal("Load which broadside (left or right)? ", 0, 0); ! 351: while((buf = getch()) == EOF); ! 352: addch(buf); ! 353: if (buf == 'r') ! 354: loadL = 1; ! 355: else ! 356: loadR = 1; ! 357: } ! 358: if ((!loadL && loadR || loadL && !loadR)){ ! 359: Signal("Reload with (round, double, chain, grape)? ", 0, 0); ! 360: while((buf = getch()) == EOF); ! 361: addch(buf); ! 362: switch(buf){ ! 363: case 'r': ! 364: load = ROUND; ! 365: ready = 1; ! 366: break; ! 367: case 'd': ! 368: load = DOUBLE; ! 369: ready = 2; ! 370: break; ! 371: case 'c': ! 372: load = CHAIN; ! 373: ready = 1; ! 374: break; ! 375: case 'g': ! 376: load = GRAPE; ! 377: ready = 1; ! 378: break; ! 379: default: ! 380: Signal("Broadside not loaded.", 0, 0); ! 381: return; ! 382: } ! 383: if (!loadR){ ! 384: *(Load + 1) = load; ! 385: *(Ready + 1) = ready; ! 386: } ! 387: else { ! 388: *Load = load; ! 389: *Ready = ready; ! 390: } ! 391: loaded = 1; ! 392: } ! 393: } ! 394: ! 395: changesail() ! 396: { ! 397: int buf; ! 398: int rig, full; ! 399: ! 400: rig = specs[scene[game].ship[player].shipnum].rig1; ! 401: full = scene[game].ship[player].file -> FS; ! 402: if ((windspeed == 6) || (windspeed == 5 && specs[scene[game].ship[player].shipnum].class > 4)) ! 403: rig = 0; ! 404: if (specs[scene[game].ship[player].shipnum].crew3 && rig){ ! 405: if (!full){ ! 406: Signal("Increase to Full sails? ", 0, 0); ! 407: while((buf = getch()) == EOF); ! 408: addch(buf); ! 409: if (buf == 'y'){ ! 410: changed = 1; ! 411: Write(FILES + player, 0, 230, 1); ! 412: } ! 413: } ! 414: else { ! 415: Signal("Reduce to Battle sails? ", 0, 0); ! 416: while((buf = getch()) == EOF); ! 417: addch(buf); ! 418: if (buf == 'y'){ ! 419: Write(FILES + player, 0, 230, 0); ! 420: changed = 1; ! 421: } ! 422: } ! 423: } ! 424: else if (!rig) ! 425: Signal("Sails rent to pieces",0,0); ! 426: } ! 427: ! 428: ! 429: signalflags() ! 430: { ! 431: register int n; ! 432: ! 433: for(n=0; n < scene[game].vessels; n++){ ! 434: if (*scene[game].ship[n].file -> signal){ ! 435: putchar('\7'); ! 436: Signal("%s (%c%c): %s",n,scene[game].ship[n].file -> signal); ! 437: *scene[game].ship[n].file -> signal = '\0'; ! 438: } ! 439: } ! 440: } ! 441: ! 442: iplotships() /* new turn; also plot-ships */ ! 443: { ! 444: repaired = loaded = fired = changed = 0; ! 445: plotships(); ! 446: } ! 447: ! 448: ! 449: plotships() /* uses ken's package */ ! 450: { ! 451: register int n; ! 452: char ch; ! 453: int sternr,sternc; ! 454: ! 455: getyx(stdscr, ylast, xlast); ! 456: screen(); ! 457: readpos(); ! 458: werase(view); ! 459: if (pos[player].row < viewrow + 5) ! 460: viewrow = pos[player].row - ROWSINVIEW + 5; ! 461: else if (pos[player].row > viewrow + ROWSINVIEW - 5) ! 462: viewrow = pos[player].row - 5; ! 463: if (pos[player].col < viewcol + 10) ! 464: viewcol = pos[player].col - COLSINVIEW + 10; ! 465: else if (pos[player].col > viewcol + COLSINVIEW - 10) ! 466: viewcol = pos[player].col - 10; ! 467: for (n=0; n < scene[game].vessels; n++) ! 468: if (pos[n].dir && pos[n].row > viewrow && pos[n].row < viewrow + ROWSINVIEW && pos[n].col > viewcol && pos[n].col < viewcol + COLSINVIEW){ ! 469: wmove(view, pos[n].row - viewrow, pos[n].col - viewcol); ! 470: waddch(view, colours(n)); ! 471: ch = sterncolor(n, &sternr, &sternc); ! 472: wmove(view, sternr - viewrow, sternc - viewcol); ! 473: waddch(view, ch); ! 474: } ! 475: wrefresh(view); ! 476: move(ylast, xlast); ! 477: refresh(); ! 478: } ! 479: ! 480: acceptsignal() ! 481: { ! 482: int ch; ! 483: char buf[60]; ! 484: register int n; ! 485: ! 486: if(scroll == 23) scroll = 18; ! 487: Signal("Message? ",0,0); ! 488: buf[0] = 34; ! 489: n = 1; ! 490: while((ch = getch()) != '\n'){ ! 491: if (ch != EOF){ ! 492: buf[n++] = ch; ! 493: addch(ch); ! 494: refresh(); ! 495: } ! 496: if (ch == '' && n > 1) ! 497: n -= 2; ! 498: } ! 499: buf[n] = 34; ! 500: buf[n+1] = '\0'; ! 501: buf[59] = '\0'; ! 502: Write(FILES + player, 1, 164, buf); ! 503: } ! 504: ! 505: ! 506: board() ! 507: { ! 508: register int n; ! 509: char *name; ! 510: int class, junk; ! 511: ! 512: clear(); ! 513: werase(view); ! 514: werase(slot); ! 515: move(1,0); ! 516: for (n=0; n < 80; n++) ! 517: addch('-'); ! 518: move(17,0); ! 519: for (n=0; n < 80; n++) ! 520: addch('-'); ! 521: for (n=2; n < 17; n++){ ! 522: mvaddch(n, 0,'|'); ! 523: mvaddch(n, 79, '|'); ! 524: } ! 525: mvaddch(1,0,'+'); ! 526: mvaddch(17,0,'+'); ! 527: mvaddch(1,79,'+'); ! 528: mvaddch(17,79,'+'); ! 529: wmove(view, 2, 27); ! 530: waddstr(view, "Wooden Ships & Iron Men"); ! 531: wmove(view, 4, (77 - lengthof(scene[game].name))/2); ! 532: waddstr(view, scene[game].name); ! 533: refresh(); ! 534: wrefresh(view); ! 535: switch((class = specs[scene[game].ship[player].shipnum].class)){ ! 536: case 2: ! 537: case 1: ! 538: name = "SOL"; ! 539: break; ! 540: case 3: ! 541: case 4: ! 542: name = "Frigate"; ! 543: break; ! 544: case 5: ! 545: case 6: ! 546: name = "Sloop"; ! 547: break; ! 548: } ! 549: move(0,0); ! 550: printw("Class %d %s (%d guns) '%s' (%c%c)", class, name, specs[scene[game].ship[player].shipnum].guns, scene[game].ship[player].shipname, colours(player), sterncolor(player, &junk, &junk)); ! 551: } ! 552: ! 553: clearline() ! 554: { ! 555: register int n; ! 556: ! 557: move(scroll-1, 0); ! 558: for (n=0; n < 59; n++) ! 559: addch(' '); ! 560: move(scroll-1, 0); ! 561: } ! 562: ! 563: ! 564: ! 565: Signal(fmt, shipnum, string) ! 566: int shipnum; ! 567: char *fmt, *string; ! 568: { ! 569: int junk; ! 570: ! 571: move(scroll++, 0); ! 572: clearline(); ! 573: if (scroll > 23) scroll = 18; ! 574: if (shipnum == -1) ! 575: printw(fmt, string); ! 576: else if (*string == '*') ! 577: printw(fmt, "computer", '0','0', string); ! 578: else ! 579: printw(fmt, scene[game].ship[shipnum].shipname, colours(shipnum), sterncolor(shipnum, &junk, &junk), string); ! 580: refresh(); ! 581: } ! 582: ! 583: char *quality(shipnum) ! 584: int shipnum; ! 585: { ! 586: switch(specs[scene[game].ship[shipnum].shipnum].qual){ ! 587: ! 588: case 5: ! 589: return("elite"); ! 590: case 4: ! 591: return("crack"); ! 592: case 3: ! 593: return("mundane"); ! 594: case 2: ! 595: return("green"); ! 596: case 1: ! 597: return("mutinous"); ! 598: } ! 599: } ! 600: ! 601: char *info(ship, final) ! 602: int ship; ! 603: char *final; ! 604: { ! 605: sprintf(final, "%d gun \0", specs[scene[game].ship[ship].shipnum].guns); ! 606: switch(specs[scene[game].ship[ship].shipnum].class){ ! 607: case 1: ! 608: case 2: ! 609: strcat(final, "Ship of the Line"); ! 610: break; ! 611: case 3: ! 612: strcat(final, "Frigate"); ! 613: break; ! 614: case 4: ! 615: strcat(final, "Corvette"); ! 616: break; ! 617: case 5: ! 618: strcat(final, "Sloop"); ! 619: break; ! 620: case 6: ! 621: strcat(final, "Brig"); ! 622: break; ! 623: } ! 624: return(final); ! 625: } ! 626: ! 627: screen() ! 628: { ! 629: int class; ! 630: register int n; ! 631: int dr = 0, dc = 0; ! 632: struct shipspecs *data; ! 633: struct File *ptr; ! 634: ! 635: scene[game].ship[player].file -> readyL--; ! 636: scene[game].ship[player].file -> readyR--; ! 637: movebuf[0] = '\0'; ! 638: sync(); ! 639: if (turn % 50 == 0) ! 640: Write(SCENARIO, 0, 10, 1); /* still playing */ ! 641: windspeed = scene[game].windspeed; ! 642: winddir = scene[game].winddir; ! 643: turn = scene[game].turn; ! 644: move(0, 47); ! 645: ptr = scene[game].ship[player].file; ! 646: data = &specs[scene[game].ship[player].shipnum]; ! 647: if (ptr -> FS == 1) ! 648: Write(FILES + player, 0, 230, 2); ! 649: printw("Points:%3d Fouls:%2d Grapples:%2d",ptr -> points, fouled(player), grappled(player)); ! 650: move(17, 36); ! 651: printw("Turn %d", turn); ! 652: move(18, 59); ! 653: printw("Load %c%c %c%c", symbol(ptr -> loadL), iinitial(ptr -> readyL), symbol(ptr -> loadR), iinitial(ptr -> readyR)); ! 654: move(19, 59); ! 655: printw("Hull %2d", data -> hull); ! 656: move(20, 59); ! 657: printw("Crew %2d %2d %2d", data -> crew1, data -> crew2, data -> crew3); ! 658: move(21, 59); ! 659: printw("Guns %2d %2d", data -> gunL, data -> gunR); ! 660: move(22, 59); ! 661: printw("Carr %2d %2d", data -> carR, data -> carL); ! 662: move(23, 59); ! 663: printw("Rigg %d %d %d ", data -> rig1, data -> rig2, data -> rig3); ! 664: if (data -> rig4 < 0) ! 665: addch('-'); ! 666: else ! 667: printw("%d", data -> rig4); ! 668: move(18, 74); ! 669: printw("0 %d(%d)", maxmove(player, winddir + 3, -1), maxmove(player, winddir + 3, 1)); ! 670: move(19, 73); ! 671: addstr("\\|/"); ! 672: move(20, 73); ! 673: printw("-^-%d(%d)", maxmove(player, winddir + 2, -1), maxmove(player, winddir + 2, 1)); ! 674: move(21, 73); ! 675: addstr("/|\\"); ! 676: move(22, 74); ! 677: printw("| %d(%d)", maxmove(player, winddir + 1, -1), maxmove(player, winddir + 1, 1)); ! 678: move(23, 73); ! 679: printw("%d(%d)", maxmove(player, winddir, -1), maxmove(player, winddir, 1)); ! 680: refresh(); ! 681: if (!boarders(player, 0)){ ! 682: wmove(slot, 0, 0); ! 683: waddstr(slot, " "); ! 684: wmove(slot, 1, 0); ! 685: waddstr(slot, " "); ! 686: } else { ! 687: wmove(slot, 1, 0); ! 688: waddstr(slot, "OBP"); ! 689: } ! 690: if (!boarders(player, 1)){ ! 691: wmove(slot, 2, 0); ! 692: waddstr(slot, " "); ! 693: wmove(slot, 3, 0); ! 694: waddstr(slot, " "); ! 695: } else { ! 696: wmove(slot, 3, 0); ! 697: waddstr(slot, "DBP"); ! 698: } ! 699: wmove(slot, 12, 0); ! 700: if (n = scene[game].ship[player].file -> RH) ! 701: wprintw(slot, "%dRH", n); ! 702: else ! 703: waddstr(slot, " "); ! 704: wmove(slot, 13, 0); ! 705: if (n = scene[game].ship[player].file -> RG) ! 706: wprintw(slot, "%dRG", n); ! 707: else ! 708: waddstr(slot, " "); ! 709: wmove(slot, 14, 0); ! 710: if (n = scene[game].ship[player].file -> RR) ! 711: wprintw(slot, "%dRR", n); ! 712: else ! 713: waddstr(slot, " "); ! 714: wmove(slot, 7, 1); ! 715: wprintw(slot,"%d", windspeed); ! 716: drdc(&dr, &dc, winddir); ! 717: wmove(slot, 7, 0); waddch(slot, ' '); ! 718: wmove(slot, 7, 2); waddch(slot, ' '); ! 719: wmove(slot, 6, 0); waddch(slot, ' '); ! 720: wmove(slot, 6, 1); waddch(slot, ' '); ! 721: wmove(slot, 6, 2); waddch(slot, ' '); ! 722: wmove(slot, 8, 0); waddch(slot, ' '); ! 723: wmove(slot, 8, 1); waddch(slot, ' '); ! 724: wmove(slot, 8, 2); waddch(slot, ' '); ! 725: wmove(slot, (7 - dr), (1 - dc)); ! 726: switch(winddir){ ! 727: case 1: ! 728: case 5: ! 729: waddch(slot, '|'); ! 730: break; ! 731: case 2: ! 732: case 6: ! 733: waddch(slot, '/'); ! 734: break; ! 735: case 3: ! 736: case 7: ! 737: waddch(slot, '-'); ! 738: break; ! 739: case 4: ! 740: case 8: ! 741: waddch(slot, '\\'); ! 742: break; ! 743: } ! 744: wmove(slot, (7 + dr), (1 + dc)); ! 745: waddch(slot, '+'); ! 746: wrefresh(slot); ! 747: signal(SIGALRM, iplotships); /* new turn and plot-ships */ ! 748: alarm(7); ! 749: } ! 750: ! 751: extern char iinitial(ready) ! 752: int ready; ! 753: { ! 754: if (ready <= -30000) ! 755: return('!'); ! 756: if (ready > 0) ! 757: return('*'); ! 758: return(' '); ! 759: } ! 760: ! 761: char symbol(number) ! 762: int number; ! 763: { ! 764: switch(number){ ! 765: case GRAPE: ! 766: return('G'); ! 767: case ROUND: ! 768: return('R'); ! 769: case DOUBLE: ! 770: return('D'); ! 771: case CHAIN: ! 772: return('C'); ! 773: } ! 774: return('-'); ! 775: } ! 776:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.