示例#1
0
文件: main.c 项目: schejin/Alogrithm
//将x上的n个盘子通过y移动到z
void movefunc(int n,char x,char y,char z)
{
    if (n == 1)
    {
        printf("第%d步: %c---->%c\n",++count,x,z);
    }
    else
    {
        movefunc(n-1, x, z, y);
        printf("第%d步: %c---->%c\n",++count,x,z);
        movefunc(n-1, y, x, z);
    }
}
示例#2
0
文件: main.c 项目: schejin/Alogrithm
int main(int argc, const char * argv[]) {

    int n;
    printf("请输入有几个盘: ");
    scanf("%d",&n);
    movefunc(n, 'X', 'Y', 'Z');
    printf("一共需要%d步!",count);
    return 0;
}
示例#3
0
文件: 2048.c 项目: ATofighi/2048-AI
int move_down(board_t src, board_t dst) {
    movefunc(src[REVERSE(j)][i], dst[REVERSE(j2 - 1)][i], dst[REVERSE(j2)][i]);
}
示例#4
0
文件: 2048.c 项目: ATofighi/2048-AI
int move_up(board_t src, board_t dst) {
    movefunc(src[j][i], dst[j2 - 1][i], dst[j2][i]);
}
示例#5
0
文件: 2048.c 项目: ATofighi/2048-AI
int move_right(board_t src, board_t dst) {
    movefunc(src[i][REVERSE(j)], dst[i][REVERSE(j2 - 1)], dst[i][REVERSE(j2)]);
}
示例#6
0
文件: 2048.c 项目: ATofighi/2048-AI
int move_left(board_t src, board_t dst) {
    movefunc(src[i][j], dst[i][j2 - 1], dst[i][j2]);
}
示例#7
0
文件: chr.c 项目: pecorade/OS-Zero
long
mjoldoturn(struct mjolgame *game, struct mjolchr *chr)
{
    struct mjolobj  *dest = NULL;
    long             lvl;
    long             retval = 0;
    long             n = mjolhasnturn(chr);
    long             x;
    long             y;
    int            (*printmsg)(const char *, ...) = game->scr->printmsg;
    int            (*getkbd)(void) = game->scr->getch;
    mjolcmdfunc     *func;
    mjolcmdmovefunc *movefunc;
    int              cmd;
    int              dir;
    int              item = 0;
    
    if (!n) {
        printmsg("You cannot move\n");
    }
    while (n) {
        if (n > 1) {
            printmsg("You have %ld turns\n", n);
        }
        do {
            cmd = getkbd();
        } while (cmd > 0xff);
//            clrmsg();
        if (cmd == MJOL_CMD_BOSS) {
                
            exit(0);
        } else if (mjolismove(cmd)) {
            movefunc = mjolcmdmovefunctab[cmd];
            movefunc(game, chr);
        } else {
            if (mjolhasdir(cmd)) {
                lvl = game->lvl;
                x = chr->data.x;
                y = chr->data.y;
                printmsg("Which direction?");
                do {
                    dir = getkbd();
                } while (dir > 0xff);
                if (
#if (MJOL_CURSES)
                    dir == KEY_UP ||
#endif
                    dir == MJOL_CMD_MOVE_UP) {
                    printmsg("UP");
                    if (y) {
                        y--;
                    }
                } else if (
#if (MJOL_CURSES)
                    dir == KEY_DOWN ||
#endif
                    dir == MJOL_CMD_MOVE_DOWN) {
                    printmsg("DOWN");
                    if (y < game->height - 1) {
                        y++;
                    }
                } else if (
#if (MJOL_CURSES)
                    dir == KEY_LEFT ||
#endif
                    dir == MJOL_CMD_MOVE_LEFT) {
                    printmsg("LEFT");
                    if (x) {
                        x--;
                    }
                } else if (
#if (MJOL_CURSES)
                    dir == KEY_RIGHT ||
#endif
                    dir == MJOL_CMD_MOVE_RIGHT) {
                    printmsg("RIGHT");
                    if (x < game->width - 1) {
                        x++;
                    }
                } else {
                    printmsg("%lx\n", dir);
                }
                dest = game->objtab[lvl][x][y];
                func = mjolcmdfunctab[cmd][dir];
            }
            if (mjolhasarg(cmd)) {
                printmsg("Which item?");
                do {
                    item = getkbd();
                } while (item > 0xff);
                printmsg("%c\n", item);
                dest = game->inventory[item];
            }
            if (dest) {
                func = mjolcmdfunctab[cmd][item];
                if (func) {
                    retval += func(chr, dest);
                    n--;
                }
            }
        }
    }
    
    return retval;
}