public void TestPuntoMasCercano() { Punto2D[] puntos = new Punto2D[] { new Punto2D(0, 0), new Punto2D(0, 7), new Punto2D(0, 2) }; Linea2D linea2D = new Linea2D(puntos); Assert.AreEqual(puntos[0], linea2D.PuntoMasCercano(new Punto2D(0, 1))); }
// Update is called once per frame private void Update () { if (Input.GetKeyDown (KeyCode.E) && !MazeRunner) { Asignaciones (); CrearLaberinto (); Punto2D posicionCopa = getPosicionAleatoriayLibre(); Debug.Log(" posicionCopa " + posicionCopa); muros[posicionCopa.x, posicionCopa.y] = 2; copaGameObject.transform.position = new Vector3 (posicionCopa.x, 0, posicionCopa.y); //Posicion de Harry Punto2D posicionHarry = getPosicionAleatoriayLibre(); Debug.Log(" posicionHarry " + posicionHarry); muros[posicionHarry.x, posicionHarry.y] = 3; harryPower.SetPosicion(posicionHarry.x, posicionHarry.y); Punto2D posicionCedric = getPosicionAleatoriayLibre (); Debug.Log (" posicionCedric " + posicionCedric); cedric.SetPosicionCedric(posicionCedric.x, posicionCedric.y); muros[posicionCedric.x, posicionCedric.y] = 4; copaPos = posicionCopa; cedric.CalcularRuta (posicionCedric, posicionCopa); StartCoroutine(Evolucion()); } }
public void TestLongitud() { Punto2D[] puntos = new Punto2D[] { new Punto2D(0, 0), new Punto2D(0, 7), new Punto2D(0, 2) }; Linea2D linea2D = new Linea2D(puntos); Assert.AreEqual(6, linea2D.Longitud()); }
static void Main(string[] args) { Punto2D p1 = new Punto2D(5.4, 6.2); Punto2D p2 = new Punto2D(5.9, 8.2); double distanza = p1.CalcolaDistanza(p2); Console.WriteLine("La distanza tra i due punti è: " + distanza); }
// Update is called once per frame void Update () { int paso = 1; positionActual = this.transform.position; Vector3 positionNueva; Punto2D nuevaPosMapa; Punto2D posActualMapa = new Punto2D((int)positionActual.x, (int)positionActual.z); //Las teclas para mover a Harry en sus 4 coordenadas son D,A,W,S //Para cada coordenada se verifica si está dentro del mapa y si existe una posición libre. if (Input.GetKeyDown(KeyCode.D)) { positionNueva = new Vector3(positionActual.x + paso, positionActual.y, positionActual.z); nuevaPosMapa.x = (int)positionNueva.x; nuevaPosMapa.y = (int)positionNueva.z; if (maze.isDentroDelMapa(nuevaPosMapa.x, nuevaPosMapa.y) && maze.isPosicionLibre(nuevaPosMapa.x, nuevaPosMapa.y)) { maze.moverJugador(posActualMapa, nuevaPosMapa, 3); this.transform.position = positionNueva; } } if (Input.GetKeyDown(KeyCode.A)) { positionNueva = new Vector3(positionActual.x - paso, positionActual.y, positionActual.z); nuevaPosMapa.x = (int)positionNueva.x; nuevaPosMapa.y = (int)positionNueva.z; if (maze.isDentroDelMapa(nuevaPosMapa.x, nuevaPosMapa.y) && maze.isPosicionLibre(nuevaPosMapa.x, nuevaPosMapa.y)) { maze.moverJugador(posActualMapa, nuevaPosMapa, 3); this.transform.position = positionNueva; } } if (Input.GetKeyDown(KeyCode.W)) { positionNueva = new Vector3(positionActual.x, positionActual.y, positionActual.z + paso); nuevaPosMapa.x = (int)positionNueva.x; nuevaPosMapa.y = (int)positionNueva.z; if (maze.isDentroDelMapa(nuevaPosMapa.x, nuevaPosMapa.y) && maze.isPosicionLibre(nuevaPosMapa.x, nuevaPosMapa.y)) { maze.moverJugador(posActualMapa, nuevaPosMapa, 3); this.transform.position = positionNueva; } } if (Input.GetKeyDown(KeyCode.S)) { positionNueva = new Vector3(positionActual.x, positionActual.y, positionActual.z - paso); nuevaPosMapa.x = (int)positionNueva.x; nuevaPosMapa.y = (int)positionNueva.z; if (maze.isDentroDelMapa(nuevaPosMapa.x, nuevaPosMapa.y) && maze.isPosicionLibre(nuevaPosMapa.x, nuevaPosMapa.y)) { maze.moverJugador(posActualMapa, nuevaPosMapa, 3); this.transform.position = positionNueva; } } //float velo = (transform.position - positionActual).magnitude / Time.deltaTime; //Debug.LogWarning("velo " + velo); }
public double CalcolaDistanza(Punto2D p) { double distanza = 0; double p_x = 0; double p_y = 0; p_x = Math.Pow(X - p.X, 2); p_y = Math.Pow(Y - p.Y, 2); distanza = Math.Sqrt(p_x + p_y); return(distanza); }
/// <summary> /// Este método es usado para calcular la ruta de cedric a la copa. /// </summary> /// <param name="posicionIncial">Posición actual de Cedric</param> /// <param name="copa">Posición de la copa.</param> public void CalcularRuta(Punto2D posicionIncial, Punto2D copa) { moviendo = false; DoBFS(posicionIncial.x, posicionIncial.y, copa.x, copa.y); casillaActual = 0; //SetPosicionCedric(posicionIncial.x, posicionIncial.y); Debug.Log("longitud camino " + caminoACopa.Count); //for (int i = 0; i < caminoACopa.Count; i++) //{ // Debug.Log("punto " + caminoACopa[i]); //} moviendo = true; }
/// <summary> /// Dada una posición x,y se devuelve true si esta posición está contenida /// en el camino de cedric a la copa. /// </summary> /// <param name="nuevaPared">La posición x,y a verificar</param> /// <returns>True si hay que recalcular la ruta de cedric hacia la copa.</returns> public bool isDebemosRecalcularRuta(Punto2D nuevaPared) { if (caminoACopa.Count == 0) return true; for (int i = casillaActual; i < caminoACopa.Count; i++) { if (caminoACopa[i].x == nuevaPared.x && caminoACopa[i].y == nuevaPared.y) return true; } return false; }
public override bool Equals(object obj) { Punto2D p = obj as Punto2D; return((this.X == p.X) && (this.Y == p.Y)); }
/// <summary> /// Obtiene una posicion dentro del mapa de forma aleatoria. /// </summary> /// <returns>Una posición 2D.</returns> Punto2D getPosicionAleatoria() { Punto2D punto = new Punto2D(); punto.x = Random.Range(0, n); punto.y = Random.Range(0, m); return punto; }
/// <summary> /// Mueve un jugador de una posición a otra. /// </summary> /// <param name="posicionAnterior">Posición actual.</param> /// <param name="posicionNueva">Posición nueva.</param> /// <param name="tipoJugador">Indicar si es Harry o Cedric</param> public void moverJugador(Punto2D posicionAnterior, Punto2D posicionNueva, int tipoJugador) { muros[posicionAnterior.x, posicionAnterior.y] = 0; muros[posicionNueva.x, posicionNueva.y] = tipoJugador; }