Exemple #1
0
static void
drawmove(chtype tchar, int oldy, int oldx, int row, int column)
/* place the stars, update board & currents */
{
    if (movecount <= 1) {
	int i, j;

	for (i = 0; i < BDEPTH; i++) {
	    for (j = 0; j < BWIDTH; j++) {
		if (movecount == 0) {
		    unmarkcell(i, j);
		} else {
		    cellmove(i, j);
		    if (winch(boardwin) == minus)
			waddch(boardwin, movecount ? ' ' : minus);
		}
	    }
	}
    } else {
	markcell(tchar, oldy, oldx);
	mark_possibles(oldy, oldx, ' ');
    }

    if (row >= 0 && column >= 0) {
	markcell(trail, row, column);
	mark_possibles(row, column, minus);
	board[row][column] = TRUE;
    }

    wprintw(msgwin, "\nMove %d", movecount);
    if (trialcount != movecount)
	wprintw(msgwin, " (%d tries)", trialcount);
    wclrtoeol(msgwin);
}
Exemple #2
0
void markcell(int addr){
    if(USED_CELL(addr))
        return;
 
    MARK_CELL(addr); 
    if(car(addr) != 0)
        markcell(car(addr));

    if(cdr(addr) != 0)
        markcell(cdr(addr));
    
    if((GET_BIND(addr) != 0) && (IS_FUNC(addr)))
        markcell(GET_BIND(addr));
     
}
Exemple #3
0
void gbcmark(void){
    int addr, i;
    
    //oblistをマークする。
    markoblist();
    //oblistからつながっているcellをマークする。
    addr = ep;
    while(!(nullp(addr))){
        markcell(car(addr));
        addr = cdr(addr);
    }
    //argstackからbindされているcellをマークする。
    for(i = 0; i < ap; i++)
        markcell(argstk[i]);
    
}