⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 player2.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 2 页
字号:
		}		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 + -