• Jueves 18 de Abril de 2024, 23:10

Autor Tema:  recorridos visibles en php  (Leído 1523 veces)

chikilin

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
recorridos visibles en php
« en: Jueves 7 de Octubre de 2010, 06:12 »
0
recorridos de platos en php es un proyecto q tengo q hacer aguien tiene alguna idea como se puede hacer o algun codigo en el q me pueda basar
se los agradecere mucho y es para el 7 de octubre 2010 bueno por su atencion y respuestas gracias.

tengo un codigo en .cc i lo quiero pasar a php
pero tengo muchas dudas con muchas funciones y variables para saber como las establesco en php
lo dejo para q lo chequen.

#include "stdlib"
#include <iostream>
#include <cstdlib>
#include <list>

#define X 6
#define Y 5

using namespace std;

enum modos{CONDICIONADO,NO_CONDICIONADO};

struct Vector{
   int x;
   int y;
};
class Recorrido{
   enum espacios{ARRIBA, ABAJO, DERECHO, IZQUIERDO};
   enum vacancias{LIBRE, OCUPADO};
   enum colocaciones{HORIZONTAL, VERTICAL,INDIFERENTE};
   int numLlenos;
   int modo;
   int colUltimoMov;
   list<Vector> camino;
   int plato[X][Y];
   bool libre(Vector posActual,int lugar,int col){
      if(((posActual.x>=X-1) && (lugar==DERECHO))
      || ((posActual.y>=Y-1) && (lugar==ABAJO))
      || ((posActual.x<=0) && (lugar==IZQUIERDO))
      || ((posActual.y<=0) && (lugar==ARRIBA))
      || ((lugar==ARRIBA) && (plato[posActual.x][posActual.y-1]==OCUPADO))
      || ((lugar==ABAJO) && (plato[posActual.x][posActual.y+1]==OCUPADO))
      || ((lugar==DERECHO) && (plato[posActual.x+1][posActual.y]==OCUPADO))
      || ((lugar==IZQUIERDO) && (plato[posActual.x-1][posActual.y]==OCUPADO))
      || (((lugar==ARRIBA)||(lugar==ABAJO)) && (col==VERTICAL))
      || (((lugar==DERECHO)||(lugar==IZQUIERDO)) && (col==HORIZONTAL)))
         return false;
      return true;
   }
   Vector mover(Vector vpos,int pos){
      Vector npos=vpos;
      if(pos==ARRIBA) npos.y-=1;
      else if(pos==ABAJO) npos.y+=1;
      else if(pos==DERECHO) npos.x+=1;
      else if(pos==IZQUIERDO ) npos.x-=1;
      return npos;
   }
   bool hayCaminoCol(Vector posPrueba,int colAnterior){
      if(colAnterior!=INDIFERENTE){
         if(colAnterior==VERTICAL) colUltimoMov=HORIZONTAL;
         else if(colAnterior==HORIZONTAL) colUltimoMov=VERTICAL;
      }
      plato[posPrueba.x][posPrueba.y]=OCUPADO;
      numLlenos++;
      cout<<"mayor: "<<numLlenos<<" pos x: "<<posPrueba.x<<"-"<<posPrueba.y<<endl;
      if(numLlenos<(Y*X)){
         for(int i=0;i<4;i++){
            if(libre(posPrueba,i,colUltimoMov)){
               Vector posHipotetica=mover(posPrueba,i);
               if(hayCaminoCol(posHipotetica,colUltimoMov)){
                  camino.push_front(posPrueba);
                  return true;
               }
            }
         }
         if(colAnterior!=INDIFERENTE){
            if(colAnterior==VERTICAL) colUltimoMov=HORIZONTAL;
            else if(colAnterior==HORIZONTAL) colUltimoMov=VERTICAL;
         }
         plato[posPrueba.x][posPrueba.y]=LIBRE;
         numLlenos--;
         return false;
      }
      camino.push_front(posPrueba);
      return true;
   }
 public:
   Recorrido(void){
      for(int i=0;i<X;i++)
         for(int j=0;j<Y;j++)
            plato[j]=0;
      numLlenos=0;
      colUltimoMov=INDIFERENTE;
   }
   bool hayCamino(Vector posPrueba){
      return hayCaminoCol(posPrueba,INDIFERENTE);
   }
   bool hayCaminoCond(Vector posPrueba){
      if(hayCaminoCol(posPrueba,HORIZONTAL))
         return true;
      cout<<endl;
      if(hayCaminoCol(posPrueba,VERTICAL))
         return true;
      return false;
   }
   void mostrar(){
      list<Vector>::iterator i;
      for(i=camino.begin(); i != camino.end(); ++i)
         cout<<(*i).x<<"-"<<(*i).y<<endl;
   }
};

int main(void){
   Vector posInicial;
   cout<<"Escoge un plato"<<endl<<"x: ";
   cin>>posInicial.x;
   cout<<"y: ";
   cin>>posInicial.y;
   Recorrido *rec=new Recorrido();
   if(rec->hayCaminoCond(posInicial)){
      rec->mostrar();
   }
   else
      cout<<"No existe una solución posible";
   delete rec;
   return EXIT_SUCCESS;
}

se llama la mosca pegajosa hace el recorrido de una matriz de 5x5 y se ve pero como ya comente quiero pasarlo aphp
si alguien sabe como se los agradesere q me lo diga

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: recorridos visibles en php
« Respuesta #1 en: Lunes 1 de Noviembre de 2010, 20:23 »
0
Cual es el problema que tienes para pasarlo a PHP ??
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.