Пример #1
0
void Fl_GroupAniSwitch::NextStep()
{
    bool neednext = false;

    if ( src_src_pt.x != src_dst_pt.x )
    {
        int moves = 0;

        if ( src_src_pt.x > src_dst_pt.x )
        {
            moves = calc_moves( src_src_pt.x, src_dst_pt.x );
            src_src_pt.x -= moves;
        }
        else
        if ( src_src_pt.x < src_dst_pt.x )
        {
            moves = calc_moves( src_dst_pt.x, src_src_pt.x );
            src_src_pt.x += moves;
        }

        if ( moves != 0 )
            neednext = true;
    }

    if ( dst_src_pt.x != dst_dst_pt.x )
    {
        int moves = 0;

        if ( dst_src_pt.x > dst_dst_pt.x )
        {
            moves = calc_moves( dst_src_pt.x, dst_dst_pt.x );
            dst_src_pt.x -= moves;
        }
        else
        if ( dst_src_pt.x < dst_dst_pt.x )
        {
            moves = calc_moves( dst_dst_pt.x, dst_src_pt.x );
            dst_src_pt.x += moves;
        }

        if ( moves != 0 )
            neednext = true;

    }

    grp_src->position( src_src_pt.x, src_src_pt.y );
    grp_dst->position( dst_src_pt.x, dst_src_pt.y );

    grp_host->redraw();

    if ( neednext == true )
    {
        Fl::repeat_timeout( draw_ms, fl_gas_timer_cb, this );
    }
    else
        Finish();
}
Пример #2
0
// Retourner une liste de mouvements
void MakeDecision(const SGameState * const gameState, SMove moves[4], unsigned int lastTimeError)
{
    ai_game_state = (SGameState*) gameState; // copie potentiellement modifiable du gameState

    ai_register_current_fn(ai_game_state);

    SList_moves* possibles_moves = NULL;
    int lm = 0;
    int max_lmove = 0; // entier qui indiquera la taille de la plus longue combinaison de coup

    max_lmove = calc_moves(ai_game_state,&possibles_moves,&lm,0,0); // calcule les combinaisons de coups et récupère la taille de la plus grande
    lm = clean_possibles_moves(&possibles_moves, lm, max_lmove);

    SToRegisterFileName played_filename;

    if (max_lmove != 0)
    {
        ai_best_move(moves, &possibles_moves, lm, ai_game_state, max_lmove, &played_filename);
        ai_register_fn(played_filename);
        free_SList_moves(&possibles_moves, lm, max_lmove);
    }
}