📄 player2.c
字号:
} loaded = 1; }}changesail(){ int buf; int rig, full; rig = specs[scene[game].ship[player].shipnum].rig1; full = scene[game].ship[player].file -> FS; if ((windspeed == 6) || (windspeed == 5 && specs[scene[game].ship[player].shipnum].class > 4)) rig = 0; if (specs[scene[game].ship[player].shipnum].crew3 && rig){ if (!full){ Signal("Increase to Full sails? ", 0, 0); while((buf = getch()) == EOF); addch(buf); if (buf == 'y'){ changed = 1; Write(FILES + player, 0, 230, 1); } } else { Signal("Reduce to Battle sails? ", 0, 0); while((buf = getch()) == EOF); addch(buf); if (buf == 'y'){ Write(FILES + player, 0, 230, 0); changed = 1; } } } else if (!rig) Signal("Sails rent to pieces",0,0);}signalflags(){ register int n; for(n=0; n < scene[game].vessels; n++){ if (*scene[game].ship[n].file -> signal){ putchar('\7'); Signal("%s (%c%c): %s",n,scene[game].ship[n].file -> signal); *scene[game].ship[n].file -> signal = '\0'; } }}iplotships() /* new turn; also plot-ships */{ repaired = loaded = fired = changed = 0; plotships();}plotships() /* uses ken's package */{ register int n; char ch; int sternr,sternc; getyx(stdscr, ylast, xlast); screen(); readpos(); werase(view); if (pos[player].row < viewrow + 5) viewrow = pos[player].row - ROWSINVIEW + 5; else if (pos[player].row > viewrow + ROWSINVIEW - 5) viewrow = pos[player].row - 5; if (pos[player].col < viewcol + 10) viewcol = pos[player].col - COLSINVIEW + 10; else if (pos[player].col > viewcol + COLSINVIEW - 10) viewcol = pos[player].col - 10; for (n=0; n < scene[game].vessels; n++) if (pos[n].dir && pos[n].row > viewrow && pos[n].row < viewrow + ROWSINVIEW && pos[n].col > viewcol && pos[n].col < viewcol + COLSINVIEW){ wmove(view, pos[n].row - viewrow, pos[n].col - viewcol); waddch(view, colours(n)); ch = sterncolor(n, &sternr, &sternc); wmove(view, sternr - viewrow, sternc - viewcol); waddch(view, ch); } wrefresh(view); move(ylast, xlast); refresh();}acceptsignal(){ int ch; char buf[60]; register int n; if(numscroll == 23) numscroll = 18; Signal("Message? ",0,0); buf[0] = 34; n = 1; while((ch = getch()) != '\n'){ if (ch != EOF){ buf[n++] = ch; addch(ch); refresh(); } if (ch == '' && n > 1) n -= 2; } buf[n] = 34; buf[n+1] = '\0'; buf[59] = '\0'; Write(FILES + player, 1, 164, buf);}board(){ register int n; char *name; int class, junk; clear(); werase(view); werase(slot); move(1,0); for (n=0; n < 80; n++) addch('-'); move(17,0); for (n=0; n < 80; n++) addch('-'); for (n=2; n < 17; n++){ mvaddch(n, 0,'|'); mvaddch(n, 79, '|'); } mvaddch(1,0,'+'); mvaddch(17,0,'+'); mvaddch(1,79,'+'); mvaddch(17,79,'+'); wmove(view, 2, 27); waddstr(view, "Wooden Ships & Iron Men"); wmove(view, 4, (77 - lengthof(scene[game].name))/2); waddstr(view, scene[game].name); refresh(); wrefresh(view); switch((class = specs[scene[game].ship[player].shipnum].class)){ case 2: case 1: name = "SOL"; break; case 3: case 4: name = "Frigate"; break; case 5: case 6: name = "Sloop"; break; } move(0,0); 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));}clearline(){ register int n; move(numscroll-1, 0); for (n=0; n < 59; n++) addch(' '); move(numscroll-1, 0);}Signal(fmt, shipnum, string)int shipnum;char *fmt, *string;{ int junk; move(numscroll++, 0); clearline(); if (numscroll > 23) numscroll = 18; if (shipnum == -1) printw(fmt, string); else if (*string == '*') printw(fmt, "computer", '0','0', string); else printw(fmt, scene[game].ship[shipnum].shipname, colours(shipnum), sterncolor(shipnum, &junk, &junk), string); refresh();}char *quality(shipnum)int shipnum;{ switch(specs[scene[game].ship[shipnum].shipnum].qual){ case 5: return("elite"); case 4: return("crack"); case 3: return("mundane"); case 2: return("green"); case 1: return("mutinous"); }}char *info(ship, final)int ship;char *final;{ sprintf(final, "%d gun \0", specs[scene[game].ship[ship].shipnum].guns); switch(specs[scene[game].ship[ship].shipnum].class){ case 1: case 2: strcat(final, "Ship of the Line"); break; case 3: strcat(final, "Frigate"); break; case 4: strcat(final, "Corvette"); break; case 5: strcat(final, "Sloop"); break; case 6: strcat(final, "Brig"); break; } return(final);}screen(){ int class; register int n; int dr = 0, dc = 0; struct shipspecs *data; struct File *ptr; scene[game].ship[player].file -> readyL--; scene[game].ship[player].file -> readyR--; movebuf[0] = '\0'; sync(); if (turn % 50 == 0) Write(SCENARIO, 0, 10, 1); /* still playing */ windspeed = scene[game].windspeed; winddir = scene[game].winddir; turn = scene[game].turn; move(0, 47); ptr = scene[game].ship[player].file; data = &specs[scene[game].ship[player].shipnum]; if (ptr -> FS == 1) Write(FILES + player, 0, 230, 2); printw("Points:%3d Fouls:%2d Grapples:%2d",ptr -> points, fouled(player), grappled(player)); move(17, 36); printw("Turn %d", turn); move(18, 59); printw("Load %c%c %c%c", symbol(ptr -> loadL), iinitial(ptr -> readyL), symbol(ptr -> loadR), iinitial(ptr -> readyR)); move(19, 59); printw("Hull %2d", data -> hull); move(20, 59); printw("Crew %2d %2d %2d", data -> crew1, data -> crew2, data -> crew3); move(21, 59); printw("Guns %2d %2d", data -> gunL, data -> gunR); move(22, 59); printw("Carr %2d %2d", data -> carR, data -> carL); move(23, 59); printw("Rigg %d %d %d ", data -> rig1, data -> rig2, data -> rig3); if (data -> rig4 < 0) addch('-'); else printw("%d", data -> rig4); move(18, 74); printw("0 %d(%d)", maxmove(player, winddir + 3, -1), maxmove(player, winddir + 3, 1)); move(19, 73); addstr("\\|/"); move(20, 73); printw("-^-%d(%d)", maxmove(player, winddir + 2, -1), maxmove(player, winddir + 2, 1)); move(21, 73); addstr("/|\\"); move(22, 74); printw("| %d(%d)", maxmove(player, winddir + 1, -1), maxmove(player, winddir + 1, 1)); move(23, 73); printw("%d(%d)", maxmove(player, winddir, -1), maxmove(player, winddir, 1)); refresh(); if (!boarders(player, 0)){ wmove(slot, 0, 0); waddstr(slot, " "); wmove(slot, 1, 0); waddstr(slot, " "); } else { wmove(slot, 1, 0); waddstr(slot, "OBP"); } if (!boarders(player, 1)){ wmove(slot, 2, 0); waddstr(slot, " "); wmove(slot, 3, 0); waddstr(slot, " "); } else { wmove(slot, 3, 0); waddstr(slot, "DBP"); } wmove(slot, 12, 0); if (n = scene[game].ship[player].file -> RH) wprintw(slot, "%dRH", n); else waddstr(slot, " "); wmove(slot, 13, 0); if (n = scene[game].ship[player].file -> RG) wprintw(slot, "%dRG", n); else waddstr(slot, " "); wmove(slot, 14, 0); if (n = scene[game].ship[player].file -> RR) wprintw(slot, "%dRR", n); else waddstr(slot, " "); wmove(slot, 7, 1); wprintw(slot,"%d", windspeed); drdc(&dr, &dc, winddir); wmove(slot, 7, 0); waddch(slot, ' '); wmove(slot, 7, 2); waddch(slot, ' '); wmove(slot, 6, 0); waddch(slot, ' '); wmove(slot, 6, 1); waddch(slot, ' '); wmove(slot, 6, 2); waddch(slot, ' '); wmove(slot, 8, 0); waddch(slot, ' '); wmove(slot, 8, 1); waddch(slot, ' '); wmove(slot, 8, 2); waddch(slot, ' '); wmove(slot, (7 - dr), (1 - dc)); switch(winddir){ case 1: case 5: waddch(slot, '|'); break; case 2: case 6: waddch(slot, '/'); break; case 3: case 7: waddch(slot, '-'); break; case 4: case 8: waddch(slot, '\\'); break; } wmove(slot, (7 + dr), (1 + dc)); waddch(slot, '+'); wrefresh(slot); signal(SIGALRM, iplotships); /* new turn and plot-ships */ alarm(7);}extern char iinitial(ready)int ready;{ if (ready <= -30000) return('!'); if (ready > 0) return('*'); return(' ');}char symbol(number)int number;{ switch(number){ case GRAPE: return('G'); case ROUND: return('R'); case DOUBLE: return('D'); case CHAIN: return('C'); } return('-');}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -