SoloCodigo
		Programación Web y Scripting => PHP => Mensaje iniciado por: chikilin en Jueves  7 de Octubre de 2010, 06:12
		
			
			- 
				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
- 
				Cual es el problema que tienes para pasarlo a PHP ??