private void vytvorPlan() { int vx = sx; int vy = sy; int difx, dify, r, or; bool propojeno = false; while (!propojeno) { r = random.Next(2); or = (r + 1) % 2; difx = vx - cx; dify = vy - cy; if (difx == 0) //pokud ne tak musí být rozdíl v y jinak je identita { vy = -Math.Sign(dify) + vy; } else if (dify == 0) { vx = -Math.Sign(difx) + vx; } else { vx = -Math.Sign(difx) * r + vx; vy = -Math.Sign(dify) * or + vy; } if (vx == cx && vy == cy) { propojeno = true; } else { mapa[vx, vy] = true; } } pridejDalsiPole(); planMapy k; for (int i = 0; i < sirka; i++) { for (int j = 0; j < vyska; j++) { if (mapa[i, j]) { k = new planMapy(this, i, j, false); } else { k = new planMapy(this, i, j, true); } listPlanuMapy[i, j] = k; } } }
public void NactiMapu(int lvl) { PohyblivePrvky = new List <PohyblivyPrvek>(); Prvky = new List <Prvek>(); pickables = new List <Pickable>(); int s = 19; int v = 16; if (lvl % 3 == 0) { //načítání z předem vybrané mapy "boss" System.IO.StreamReader sr = new System.IO.StreamReader("mapa" + lvl + ".txt"); int sirkaVyrezu = int.Parse(sr.ReadLine()); //v mapách int vyskaVyrezu = int.Parse(sr.ReadLine()); sirka = sirkaVyrezu * s; vyska = vyskaVyrezu * v; int my, mx; plan = new char[sirka, vyska]; for (int i = 0; i < sirkaVyrezu; i++) { for (int j = 0; j < vyskaVyrezu; j++) { //jednotlivé prvky for (int y = 0; y < v; y++) { string radek = sr.ReadLine(); for (int x = 0; x < s; x++) { char znak = radek[x]; mx = x + i * s; my = y + j * v; nactiZnak(mx, my, znak); } } sr.ReadLine(); } } sr.Close(); } else { //random generovaná mapa TvorbaMapy t = new TvorbaMapy(8, 8, "MyTest2.txt"); int sirkaMapy = 8; int vyskaMapy = 8; sirka = sirkaMapy * s; vyska = vyskaMapy * v; int my, mx; plan = new char[sirka, vyska]; for (int i = 0; i < sirkaMapy; i++) { for (int j = 0; j < vyskaMapy; j++) { //jednotlivé prvky planMapy k = t.listPlanuMapy[i, j]; for (int y = 0; y < v; y++) { for (int x = 0; x < s; x++) { char znak = k.plan[x, y]; mx = x + i * s; my = y + j * v; nactiZnak(mx, my, znak); } } } } } }