private void kreirajIzlaz() { Vrh vrh = new Vrh(); vrh.naziv = dodjeliNazivVrhu(); vrh.ulazIzlaz = '2'; vrh.red = red; vrh.stupac = stupac; vrhovi.Add(vrh); Brid brid = new Brid(); brid.vrh1 = oznaceniVrh; brid.vrh2 = vrh; brid.tezina = tezina; tezina = 0; bridovi.Add(brid); provjeriNedovrseneVrhove(); }
private void ispitajPolozaj() { bool vrhPostoji = false; if (nedovrseniVrhovi.Count > 0) { Vrh vrhZaObrisati = null; foreach (var vrh in nedovrseniVrhovi) { if (vrh.red == red && vrh.stupac == stupac) { vrhPostoji = true; if (smjer == "desno") { vrh.lijevo = false; } else if (smjer == "gore") { vrh.dolje = false; } else if (smjer == "lijevo") { vrh.desno = false; } else if (smjer == "dolje") { vrh.gore = false; } Brid brid = new Brid(); brid.vrh1 = vrh; brid.vrh2 = oznaceniVrh; brid.tezina = tezina; bridovi.Add(brid); tezina = 0; if (!vrh.desno && !vrh.gore && !vrh.lijevo && !vrh.dolje) { vrhZaObrisati = vrh; } break; } } if (vrhZaObrisati != null) { nedovrseniVrhovi.Remove(vrhZaObrisati); } if (vrhPostoji) { provjeriNedovrseneVrhove(); } } if (!vrhPostoji) { bool naprijed = false; bool drugaDvaSmjera = false; if (smjer == "desno" || smjer == "lijevo") { if (smjer == "desno") { if (labirintMatrica[red, stupac + 1] == 1) { naprijed = true; } } else if (smjer == "lijevo") { if (labirintMatrica[red, stupac - 1] == 1) { naprijed = true; } } if (labirintMatrica[red + 1, stupac] == 1 || labirintMatrica[red - 1, stupac] == 1) { drugaDvaSmjera = true; } } else if (smjer == "gore" || smjer == "dolje") { if (smjer == "gore") { if (labirintMatrica[red - 1, stupac] == 1) { naprijed = true; } } else if (smjer == "dolje") { if (labirintMatrica[red + 1, stupac] == 1) { naprijed = true; } } if (labirintMatrica[red, stupac + 1] == 1 || labirintMatrica[red, stupac - 1] == 1) { drugaDvaSmjera = true; } } if (!drugaDvaSmjera && naprijed) { pomakniSe(); } else if ((!drugaDvaSmjera && !naprijed) || drugaDvaSmjera) { kreirajVrh(); } } }
private void kreirajVrh() { Vrh vrh = new Vrh(); vrh.naziv = dodjeliNazivVrhu(); vrh.red = red; vrh.stupac = stupac; Brid brid = new Brid(); brid.vrh1 = oznaceniVrh; brid.vrh2 = vrh; brid.tezina = tezina; tezina = 0; bridovi.Add(brid); int brojSmjerova = 0; if (smjer == "desno") { if (labirintMatrica[red, stupac + 1] == 1) //desno { vrh.desno = true; brojSmjerova++; } if (labirintMatrica[red - 1, stupac] == 1) //gore { vrh.gore = true; brojSmjerova++; } if (labirintMatrica[red + 1, stupac] == 1) //dolje { vrh.dolje = true; brojSmjerova++; } } else if (smjer == "gore") { if (labirintMatrica[red, stupac + 1] == 1) //desno { vrh.desno = true; brojSmjerova++; } if (labirintMatrica[red - 1, stupac] == 1) //gore { vrh.gore = true; brojSmjerova++; } if (labirintMatrica[red, stupac - 1] == 1) //lijevo { vrh.lijevo = true; brojSmjerova++; } } else if (smjer == "lijevo") { if (labirintMatrica[red - 1, stupac] == 1) //gore { vrh.gore = true; brojSmjerova++; } if (labirintMatrica[red, stupac - 1] == 1) //lijevo { vrh.lijevo = true; brojSmjerova++; } if (labirintMatrica[red + 1, stupac] == 1) //dolje { vrh.dolje = true; brojSmjerova++; } } else if (smjer == "dolje") { if (labirintMatrica[red, stupac + 1] == 1) //desno { vrh.desno = true; brojSmjerova++; } if (labirintMatrica[red, stupac - 1] == 1) //lijevo { vrh.lijevo = true; brojSmjerova++; } if (labirintMatrica[red + 1, stupac] == 1) //dolje { vrh.dolje = true; brojSmjerova++; } } vrhovi.Add(vrh); if (brojSmjerova >= 2) { nedovrseniVrhovi.Add(vrh); } if (brojSmjerova >= 1) { oznaceniVrh = vrh; izaberiPrviSlobodanSmjer(); } else { provjeriNedovrseneVrhove(); } }