今天偷懒了下,才写了七十行代码,罪过。反对偷懒。
empty函数在bottle类里。
    bool empty( int x, int y )
    {
        if ( x<0 || x>=8 || y<0 || y>=16 ) return false;
        if ( b_grid_type[y][x] == NOTHING ) return true;
        return false;
    }
move函数在doctor类里。
    void move( void )
    {
        switch( d_direct )
        {
        case DD_DOWN:
            if ( d_state )
            {
                if ( bottle->empty( d_x, d_y+1 ) )
                {
                    ++d_y;
                    break;
                }
            }
            else
            {
                if ( bottle->empty( d_x, d_y+1 ) && bottle->empty( d_x+1, d_y+1 ) )
                {
                    ++d_y;
                    break;
                }
            }
            /*************这里没写完,预计是个while(true)的循环*********************/
            break;
        case DD_UP:
            if ( d_state )
            {
                if ( bottle->empty( d_x+1, d_y ) ) d_state = false;
                else if ( bottle->empty( d_x-1, d_y ) ) { --d_x; d_state = false; }
            }
            else
            {
                if ( bottle->empty( d_x, d_y-1 ) )
                {
                    d_state = true;
                    Color tmp = d_color[0];
                    d_color[0] = d_color[1];
                    d_color[1] = tmp;
                }
                else if ( bottle->empty( d_x+1, d_y-1 ) )
                {
                    ++d_x;
                    d_state = true;
                    Color tmp = d_color[0];
                    d_color[0] = d_color[1];
                    d_color[1] = tmp;
                }
            }
            break;
        case DD_LEFT:
            if ( d_state && bottle->empty( d_x-1, d_y ) && bottle->empty( d_x-1, d_y-1 ) ) --d_x;
            if ( !d_state && bottle->empty( d_x-1, d_y ) ) --d_x;
            break;
        case DD_RIGHT:
            if ( d_state && bottle->empty( d_x+1, d_y ) && bottle->empty( d_x+1, d_y-1 ) ) --d_x;
            if ( !d_state && bottle->empty( d_x+1, d_y ) ) --d_x;
            break;
        default:
            break;
        }
    }
我在想猫说的话,一天四百行,一年就是12W行。我觉得,写玛丽医生这种代码,除了理顺思路的时候费点脑子以外,码代码的时候还是相当轻松的,比那些邪门算法轻松多了,一天四百行倒也不是没有可能呢。婷婷加油,毕业的时候一定要拿出至少十万行代码来。