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

📄 stdin.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include "old.h"stdin(){	int piece1, piece2, side1, side2, rnk1, rnk2, file1, file2;	int ckf, c, m, *p1, *p2, to, amb, piece;	piece1 = piece2 = side1 = side2 = -1;	rnk1 = rnk2 = file1 = file2  = -1;	ckf = 0;	if(match("o-o-o")||match("ooo")) {		piece1 = 6;		file1 = 3;		side1 = 1;		file2 = 2;		side2 = 0;		goto search;	}	if(match("o-o")||match("oo")) {		piece1 = 6;		file1 = 3;		file2 = 1;		goto search;	}	stdpin(&piece1, &side1, &rnk1, &file1);	c = *sbufp++;	if(c=='*' || c=='x')		stdpin(&piece2, &side2, &rnk2, &file2); else	if(c == '-')		stdbin(&side2, &rnk2, &file2); else		sbufp--;search:	c = *sbufp++;	if(c == '+') {		ckf = 1;		c = *sbufp++;	}	if(c != '\0')		return(0);	p1 = p2 = lmp;	mantom? bagen(): wagen();	m = -1;	amb = 0;	while(p1 != lmp) {		p1++;		piece = board[*p1>>8];		mantom? bmove(*p1): wmove(*p1);		to = amp[-3];		if(pcomp(piece, amp[-4],			piece1, side1, rnk1, file1))		if(pcomp(amp[-2], to,			piece2, side2, rnk2, file2))		if(comp(ckf, check())) {			if(m >= 0) {				if(!amb) {					printf("ambiguous\n");					amb = 1;				}			}			m = *p1;		}		p1++;		mantom? bremove(): wremove();	}	lmp = p2;	if(amb) return(-1);	return(m);}stdpin(ap, as, ar, af)int *ap, *as, *ar, *af;{	int c;	c = *sbufp++;	if(c == 'q') {		*as = 0;		stdpin(ap, as, ar, af);		return;	}	if(c == 'k') {		*as = 1;		stdpin(ap, as, ar, af);		return;	}	if(c == 'p') {		*ap = 1;		if(*as >= 0)			*af = 3;		goto loc;	}	if(c == 'n') {		*ap = 2;		goto pie;	}	if(c == 'b') {		*ap = 3;		goto pie;	}	if(c == 'r') {		*ap = 4;		goto pie;	}	sbufp--;	goto loc;pie:	if(*sbufp == 'p') {		*af = (*ap-1)%3;		*ap = 1;		sbufp++;	}loc:	if(*ap<0 && *as>=0) {		*ap = *as+5;		*as = -1;	}	if(*sbufp == '/') {		sbufp++;		stdbin(as, ar, af);	}}stdbin(as, ar, af)int *as, *ar, *af;{	int c;loop:	c = *sbufp++;	if(c == 'q') {		*as = 0;		goto kq;	}	if(c == 'k') {		*as = 1;	kq:		stdbin(as, ar, af);		if(*af < 0)			*af = 3;		return;	}	if(c == 'r') {		*af = 0;		goto loop;	}	if(c == 'n') {		*af = 1;		goto loop;	}	if(c == 'b') {		*af = 2;		goto loop;	}	if(c>'0' && c<'9')		*ar = c-'1'; else		sbufp--;}pcomp(p, l, pp, sp, rp, fp)int p, l, pp, sp, rp, fp;{	int r, f, s;	f = l%8;	r = l/8;	if(!mantom)		r = 7-r;	if(f > 3) {		f = 7-f;		s = 1;	} else		s = 0;	if(comp(pp, p))	if(comp(sp, s))	if(comp(rp, r))	if(comp(fp, f))		return(1);	return(0);}comp(p, v)int p, v;{	if(p < 0) return(1);	return(p == abs(v));}abs(x)int x;{	if(x < 0)		return(-x);	return(x);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -