Example #1
0
bagen()
{
	int *p1, *p2, v;

	p1 = lmp;
	if((flag&010)!=0)
	if(board[5]==0 && board[6]==0 && board[7]==4)
	if(wattack(4) && wattack(5) && wattack(6))
		btry(4, 0, 2); /* kingside castle */
	if((flag&020)!=0)
	if(board[0]==4 && board[1]==0 && board[2]==0 && board[3]==0)
	if(wattack(2) && wattack(3) && wattack(4))
		btry(4, 0, -2); /* queenside castle */
	bgen();
	p2 = p1;
	while(p2 != lmp) {
		v = *p2++;
		bmove(*p2);
		if(wattack(bkpos)) {
			*p1++ = v;
			*p1++ = *p2;
		}
		p2++;
		bremove();
	}
	lmp = p1;
}
Example #2
0
bplay()
{
	int v1, v2, *p1, *p2, *p3, ab;

	if(value > ivalue)
		ivalue = value;
	ab = 0;
	v1 = -3000;
	ply = 0;
	p1 = (int *) statl();
	if(lmp == p1+2) {
		abmove = p1[1];
		lmp = p1;
		return(ivalue);
	}
	p2 = p1;
	mantom = !mantom;
	while(p2 != lmp) {
		p2++;
		bmove(*p2);
		if(testf) {
			mantom = !mantom;
			bstatic(1);
			mantom = !mantom;
		}
		if(rept())
			v2 = 0; else
			v2 = wplay1(v1);
		if(v2 > v1 && !mate(3, 0)) {
			ab = *p2;
			v1 = v2;
		}
		bremove();
		if(testf) {
			mantom = !mantom;
			printf("%6d ", v2);
			out(*p2);
			printf("\n");
			mantom = !mantom;
		}
		p2++;
	}
	if(ab == 0 && lmp != p1)
		ab = p1[1];
	mantom = !mantom;
	lmp = p1;
	abmove = ab;
	return(v1);
}
Example #3
0
wheur4()
{
	int *p1, *p2, ploc, i;

	if(amp[-1] != 1) return(0);
	ploc = amp[-3];
	if(board[ploc] == -1) return(0);
	if(xheur(ploc)) return(0);
	p1 = lmp;
	p2 = p1;
	bagen();
	i = 0;
	while(p2 != lmp) {
		p2++;
		bmove(*p2++);
		i = xheur(ploc);
		bremove();
		if(i)
			break;
	}
	lmp = p1;
	return(i);
}
Example #4
0
void	bclose(conn_t *conn, buddywin_t *bwin, int _auto) {
	if (bwin == NULL)
		return;

	verify_winlist_sanity(conn, bwin);

	switch (bwin->et) {
	  case BUDDY:
		if (_auto == 0) {
			assert(bwin->e.buddy != NULL);
			status_echof(conn, "Type /delbuddy to remove %s from your buddy list.\n",
				user_name(NULL, 0, conn, bwin->e.buddy));
			STRREPLACE(lastclose, bwin->winname);
		}
		break;
	  case CHAT:
		if (bwin->winname[0] != ':')
			firetalk_chat_part(conn->conn, bwin->winname);
		free(bwin->e.chat->key);
		bwin->e.chat->key = NULL;
		free(bwin->e.chat->last.line);
		bwin->e.chat->last.line = NULL;
		free(bwin->e.chat->last.name);
		bwin->e.chat->last.name = NULL;
		free(bwin->e.chat);
		bwin->e.chat = NULL;
		break;
	  case TRANSFER:
		assert(bwin->e.transfer != NULL);
		firetalk_file_cancel(conn->conn, bwin->e.transfer->handle);
		echof(conn, NULL, "File transfer aborted.\n");
		fremove(bwin->e.transfer);
		bwin->e.transfer = NULL;
		break;
	}

	if (bwin == bwin->next)
		conn->curbwin = NULL;
	else {
		int	i = 0;
		buddywin_t *bbefore;

		bbefore = bwin->next;
		while (bbefore->next != bwin) {
			bbefore = bbefore->next;
			assert(i++ < 10000);
		}
		bbefore->next = bwin->next;

		if (bwin == conn->curbwin)
			conn->curbwin = bwin->next;
	}

	if (conn->curbwin != NULL)
		verify_winlist_sanity(conn, NULL);

	bremove(bwin);
	bwin = NULL;
	bupdate();

	if (conn->curbwin != NULL)
		verify_winlist_sanity(conn, NULL);

	if (conn->curbwin != NULL)
		nw_touchwin(&(conn->curbwin->nwin));
	else
		nw_touchwin(&(conn->nwin));
}