Diskuze: Člověče nezlob se - algoritmizace posunu
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
máš to hezký akorát nějak nechápu proč má 4 PictureBoxy ??? A v čem to děláš ? Máš mí bitmapu pro každou figurku a pak bitmapu jako hrací plán a figurku jen vykreslíš do hracího plánu...
Já bych šel cestou 4 instancí stejných objektů - hráč. Každý objekt
hráč má 4 prvky (človíčky) a pro každý prvek bych držel číslo
aktuální pozice.
Vlastní hrací plochu bych očísloval napevno od 1 do X a pro každou "barvu"
bych stanovil offset vůči očíslování hracího pole (to kvůli tomu, abych
posunul start a zjistil správný konec oběhu kola každé barvy na hracímu
plánu). Dále bych měl speciální pozici -1 až -4 pro domácí nasazovací
pozici. 0+OFFSET BARVY(tzn. min)=Nasazeno na domácí startovní pole.
Házení kostkou by jen inkrementovalo v každém kole pozici aktuálního
hráče a pole/subobjektů všech človíčků hráče.
Po každém hodu a posunu bych zjištoval přes offset (může být property
readonly co to rovnou interpretuje jako pole převedené na hrací plán) kam
človíčka postavit a testoval bych rovnou zdali nedošlo k vyhození jiného
protihráče. Toť asi vše?
Při cestě do domečku by se nedalo "přetéci" přes maximální číslo pole
hracího plánu/resp. barvy a buď človíček zůstane stát, protože nemůže
dál, anebo zajede do domečku (napadá mě že by stačilo určit maximální
počet polí hracího plánu a to co bude přes toto číslo je domeček. tzn -4
až -1 nasazování, 0 nasazeno, cca. 50 poslední pole před domácím
nasazováním, 50+4 domeček, cokoli nad 54 nejde).
Červenej offset 0 (0-50, skutečný stav Č-0), Zelenej offset +8 (od 8 do 58,
skutečný stav Z-8), Žlutej + 16 (od 16 do 66, skutečný stav Ž-16) a Modrej
+24 (tzn. modrej se pohybuje od 24 do 74, skutečný stav na plánu je ale M-24
polí).
V podstatě se každej barvě v objektu nastaví min, max a stav po odečtení
offsetu ke čtení pro vykreslení přímo do jednoznačného plánu hry.
Přičítá se vždy k pozici Pé, která začíná pro každou barvu na její
min hodnotě a po hození kostkou nesmí překročit svoje max. Uff
hrac: id, pos
P = 44 // policek
H = 4 // hracu
F = 4 // figurek
start = id * P/H // 11, 22, 33, 44
policko = pos < P ? plocha[(start + pos) % P] : domecek[id*F + pos-P];
(start + pos) % P
(0 + 24) % 44 = 24
(11 + 24) % 44 = 35 % 44 = 35
(33 + 24) % 44 = 57 % 44 = (57-44) = 13
Ahoj, díky moc za návrhy řešení. Zítra se na to kouknu a případně dám vědět, jak na tom jsem
Ahoj, celkem jsem pokročil - momentálně řeším obecný kód pro nasazování xté figurky xté barvy při padnutí šestky. Chtěl bych to vyřešit pomocí comboBoxů, kdy si člověk vybere barvu a (první, druhou, třetí, čtvrtou) figurku. Teď řeším, jak dosadit proměnou místo pictureBox1 -> pictureBox1.Location = new Point(x,y)
Zobrazeno 6 zpráv z 6.