// Recorrido profundidad void ButtonDistCClick(object sender, EventArgs e) { numericUpProfundidad.Maximum = g.getLV().Count; RecorridosGrafo rg = new RecorridosGrafo(g); listBoxCamino.DataSource = null; listBoxCamino.DataSource = rg.getRecorridoProfundidad(g.getLV()[((int)numericUpProfundidad.Value) - 1]); }
// Recorrido amplitud void ButtonCaminoCClick(object sender, EventArgs e) { numericUpAnchura.Maximum = g.getLV().Count; RecorridosGrafo rg = new RecorridosGrafo(g); listBoxCamino.DataSource = null; listBoxCamino.DataSource = rg.getRecorridoAmplitud(g.getLV()[((int)numericUpAnchura.Value) - 1]); }
//depredadoras void ButtonDepreClick(object sender, EventArgs e) { int selecciono = (int)numericUpDepre.Value; //Numero de depredadoras a insertar numericUpDepre.Maximum = g.getLV().Count; Random r = new Random(); int posParticula; if (selecciono <= totalVertices && selecciono <= disponibles) { disponibles = disponibles - selecciono; if (disponibles >= 0) { for (int i = 0; i < selecciono; i++) { // Creo una posicion random para insertar la particula siempre y cuando no este ocupada ya posParticula = r.Next(0, g.getLV().Count); while (vOcupados.Contains(posParticula)) { posParticula = r.Next(0, g.getLV().Count); } vOcupados.Add(posParticula); //Inserto el recorrido RecorridosGrafo rg = new RecorridosGrafo(g); List <Vertice> rec = new List <Vertice>(); rec = rg.getRecorridoAmplitud(g.getLV()[posParticula]); // Particula p = new Particula(posParticula, rec, true); lParticulas.Add(p); } dibujaParticulas(); buttonAnimar.Visible = true; } else { MessageBox.Show("No hay más lugares disponibles."); } } else { MessageBox.Show("No puedes insertar más particulas que los vertives disponibles."); } }
///Particulas presa void ButtonPresaNormalClick(object sender, EventArgs e) { if (!esDijk) { buttonDepre.Enabled = true; int selecciono = (int)numericUpNPresa.Value; numericUpPosPresa.Maximum = g.getLV().Count; //< Para poner una particula en una pos especifica numericUpPosDest.Maximum = g.getLV().Count; if (selecciono <= totalVertices && selecciono <= disponibles) { disponibles = disponibles - selecciono; if (disponibles >= 0) { if ((int)numericUpPosDest.Value == 0 && (int)numericUpPosPresa.Value == 0 && (int)numericUpNPresa.Value > 0) { //TODO: INSERTO ALEATORIAMENTE Random r = new Random(); int posParticula; for (int i = 0; i < selecciono; i++) { posParticula = r.Next(0, g.getLV().Count); while (vOcupados.Contains(posParticula)) { posParticula = r.Next(0, g.getLV().Count); } vOcupados.Add(posParticula); //Inserto recorrido en profundidad RecorridosGrafo rg = new RecorridosGrafo(g); List <Vertice> rec = new List <Vertice>(); rec = rg.getRecorridoProfundidad(g.getLV()[posParticula]); Particula p = new Particula(posParticula, rec, false); lParticulas.Add(p); } } else if ((int)numericUpPosPresa.Value != 0 && (int)numericUpPosDest.Value == 0 && (int)numericUpNPresa.Value == 1) { //TODO: INSERTO EN EL ORIGEN SELECCIONADO int posP = (int)numericUpPosPresa.Value - 1; if (vOcupados.Contains(posP)) { MessageBox.Show("Ese vértice origen ya esta ocupado"); return; } vOcupados.Add(posP); RecorridosGrafo rg = new RecorridosGrafo(g); List <Vertice> rec = new List <Vertice>(); rec = rg.getRecorridoProfundidad(g.getLV()[posP]); Particula p = new Particula(posP, rec, false); lParticulas.Add(p); } else if ((int)numericUpPosPresa.Value != 0 && (int)numericUpNPresa.Value > 0) { disponibles = disponibles + selecciono; MessageBox.Show("No puedes insertar multiples particulas en el mismo vértice"); } } else { MessageBox.Show("No hay más lugares disponibles."); } dibujaParticulas(); buttonAnimar.Visible = true; } else { MessageBox.Show("No puedes insertar más particulas que los vértices disponibles."); } } else { buttonAnimar.Visible = true; int posO, posD, posParticula; posO = (int)numericUpPosPresa.Value - 1; posD = (int)numericUpPosDest.Value - 1; if (posD == posO) { MessageBox.Show("El origen no puede ser igual al actual destino"); return; } Dijkstra dij = new Dijkstra(g, g.getLV()[posO], g.getLV()[posD]); disponibles--; posParticula = posO; if (vOcupados.Contains(posParticula)) { MessageBox.Show("Ese vertice ya pertenece a un depredador"); } else { vOcupados.Add(posParticula); Particula p = new Particula(posParticula, dij.getLCamino(), false); lParticulas.Add(p); buttonDepre.Enabled = true; } dibujaParticulas(); listBoxCamino.DataSource = dij.getLCamino(); } }