int MainWindow::getRandomStep(QPoint p)
{
    int m[MAX_SIZE][MAX_SIZE];
    memcpy(m,map,sizeof(m));
    QPoint p_a[4];
    p_a[to_left] = QPoint(p.x() - 1, p.y());
    p_a[to_right] = QPoint(p.x() + 1, p.y());
    p_a[to_up] = QPoint(p.x(), p.y() - 1);
    p_a[to_down] = QPoint(p.x(), p.y() + 1);
    int p_l[4];
    int i = 0;
    int p_mn = -1;
    int p_max = -1;
    for(; i < 4; i++)
    {
        if(is_in(p_a[i]) && m[p_a[i].x()][p_a[i].y()] == none)
        {
            p_l[i] = calcH(point(getHead().x(),getHead().y()), food_pos);
            if(p_l[i] > p_max)
            {
                p_max = p_l[i];
                p_mn = i;
            }
        }
    }
    return p_mn;
}
Example #2
0
//Update
static void update(void)
{

  calcJD();
  calcE();
  field_defaultIncidence(Ez);
  calcMB();  
  calcH();
}
Example #3
0
static inline void update(void)
{
  calcJD();

  calcE();

  calcMB();

  calcH();

  field_defaultIncidence(Hz);
}
Example #4
0
int validSuccessor(tQueue *a, tQueue *f, tNodeQueue *p, tNodeQueue *m, int heuristica) {
    m->elem->g = p->elem->g + 1;

    printf("%d\n",a);
    if ((!(memberOf(m, a)) || (!(memberOf(m, f))))) {
        insertAtEnd(m, a);
        calcH(p, m, heuristica);
    } else {
        if (memberOfWithGMin(m, a)) {
            insertAtEnd(m, a);
            calcH(p, m, heuristica);
        } else {
            if (memberOfWithGMin(m, f)) {
                removeElem(m, f);
                insertAtEnd(m, a);
                calcH(p, m, heuristica);
            }
        }

    }
}
Example #5
0
static inline void update(void)
{
  calcJD();

  calcE();

  scatteredWave(Ey, EPS_EY);
  
  calcMB();

  calcH();
}
Example #6
0
//Update
static void update(void)
{
//  _CalcJD();
    calcJD();
    calcE();

//  MPI_Barrier(MPI_COMM_WORLD); //いらăȘい?
    scatteredWave(Ez, EPS_EZ);
    //planeWave(Ez, EPS_EZ);


    //Connection_SendRecvE();
    Connection_ISend_IRecvE();

//  _CalcMB();
    calcMB();
    calcH();
    Connection_ISend_IRecvH();
    //Connection_SendRecvH();

    ntff();
}
int MainWindow::find_way(QPoint start,QPoint finish)
{
    init();
    bool flag = false;
    point s;
    s = point(start.x(), start.y());
    calcH(s, finish);
    s.calcF();
    open.push_back(s);

    while(!open.empty())
    {
        sort(open.begin(), open.end());
        point *tmp = new point(*open.begin());
        open.erase(open.begin());
        close[tmp -> x][tmp -> y] = true;

        if(tmp -> x == finish.x() && tmp -> y == finish.y())
        {
            ans = *tmp;
            flag = true;
            break;
        }
        for(int i = 0; i < 4; ++i)
        {
            point *ct = new point(tmp -> x + change[i][0], tmp -> y + change[i][1]);
            if(is_in(*ct) && close[ct -> x][ct -> y] == false)
            {
                std::vector<point>::iterator iter = is_in_que(*ct);
                if(iter == open.end())
                {
                    ct -> parent = tmp;
                    ct -> g = ct -> calcG();
                    ct -> h = calcH(*ct , finish);
                    ct -> calcF();
                    open.push_back(*ct);
                }else{
                    ct -> parent = tmp;
                    ct -> g = ct -> calcG();

                    int G = iter -> g;
                    if(G > ct -> g){
                        iter -> parent = ct -> parent;
                        iter -> g = G;
                        iter -> calcF();
                    }
                }
            }
        }
    }

    point* po = &ans;
    while(po -> parent != nullptr && po -> parent -> parent != nullptr && po -> parent -> parent != nullptr)
    {
        po = po -> parent;
    }

    if(flag){
        if(s.x < po->x)
        {
            return to_right;
        }else if(s.x > po -> x)
        {
            return to_left;
        }else if(s.y < po -> y)
        {
            return to_down;
        }else if(s.y > po -> y){
            return to_up;
        }
    }
    return -1;
}
Example #8
0
File: fdtdTM.c Project: rennone/C
static void update(){
  calcE();
  field_defaultIncidence(Ezx);
  field_defaultIncidence(Ezy);
  calcH();
}