private void btnMiniMax_Click(object sender, EventArgs e) { inicijalizacijaPretrage(); MinMaxSearch minmax = new MinMaxSearch(); State sp = pocetnoStanje; State solution = minmax.search(sp); if (solution != null) { resenje = solution.getPutanja(); } displayPanel1.Refresh(); }
private void gameSpeedTimer_Tick(object sender, EventArgs e) { if (Monitor.TryEnter(agentUpdateLock)) { try { // agenti traze naseg robotica, tako da je ciljno stanje u stvari pozicija robotica Node trenutnaPozicijaRobotica = manualRobotPozicija; Main.krajnjiNode = trenutnaPozicijaRobotica; displayPanel1.Refresh(); // pokreni pretragu za svakog inteligentnog agenta i nadji najbolji sledeci potez za svakog od njih for (int agentIndex = 0; agentIndex < minimaxAgentiPocetno.Count; agentIndex++) { State sp = minimaxAgentiPocetno[agentIndex]; State solution = null; if (interaktivnaPretraga == "A*") { AStarSearch pretraga = new AStarSearch(); solution = pretraga.search(sp); } else if (interaktivnaPretraga == "minimax") { MinMaxSearch pretraga = new MinMaxSearch(); solution = pretraga.search(sp); } if (solution != null) { try { List <State> putanja = solution.getPutanja(); State sledeciPotez = putanja[1]; sledeciPotez.roditeljskoStanje = null; displayPanel1.moveAgentIcon(agentIndex, sledeciPotez.trenutniCvor.kordinataI - displayPanel1.agentPositions[agentIndex][0], sledeciPotez.trenutniCvor.kordinataJ - displayPanel1.agentPositions[agentIndex][1]); // sledeca pretraga ce krenuti od novog stanja minimaxAgentiPocetno[agentIndex] = sledeciPotez; if (Main.manualRobotPozicija.kordinataI == sledeciPotez.trenutniCvor.kordinataI && Main.manualRobotPozicija.kordinataJ == sledeciPotez.trenutniCvor.kordinataJ) { gameFinished = true; lblStatus.Text = "Protivnik je pobedio. :( Vise srece drugi put."; lblStatus.BackColor = Color.Red; } } catch (Exception exc) { gameFinished = true; } } } if (Main.manualRobotPozicija.kordinataI == ciljManualRobotica.kordinataI && Main.manualRobotPozicija.kordinataJ == ciljManualRobotica.kordinataJ && gameSpeedTimer.Enabled) { gameSpeedTimer.Enabled = false; displayPanel1.Refresh(); gameFinished = true; lblStatus.Text = "Vi ste pobedili! :) Cestitamo!"; lblStatus.BackColor = Color.Green; } Main.krajnjiNode = ciljManualRobotica; displayPanel1.Refresh(); } finally { if (gameFinished) { gameSpeedTimer.Enabled = false; } agentSteps += 1; Monitor.Exit(agentUpdateLock); } } }