Zdravím, byl by někdo schopný napsat algoritmus řádkového vyplňování pro 2d pole, stím že pokud bude pole prázdné, odhaluje to všechny políčka v řádku dokud to nenarazí na políčko s hodnotou.
Napsal jsem akorát aby mi to projelo čtyři směry od místa kliknutí, ale dál nevím.
http://postimg.org/image/hsbv9i435/
c# Algoritmus řádkového vyplňování v 2d poli Vyřešeno
c# Algoritmus řádkového vyplňování v 2d poli
immortal-world.net - přijďte si zahrát!
Re: c# Algoritmus řádkového vyplňování v 2d poli
Mno a nešlo by to udělat tak, že by projel ten tvůj algoritmus na každé políčko na které se posune? ty totiž klikneš a vyvoláš svůj cyklus...zkus cyklus aplikovat na každé políčko, které nemá žádnou hodnotu...myslím, na každé které se nachází na úrovních toho tvojeho kliku..jestli mi rozumíš 

Lenovo IdeaPad Y580 s i5 3210M a odpálenou GTX 660M|
AMD Phenom II x4 955 @3,8 GHz
12 GB RAM Kingston 1600 MHz
Gigabyte GA-880GA-UD3H
Radeon HD 5750 a čekám na ASUS HD 7950
Seagate Barracuda 7200.1, SSD Crucial MX200 250 GB
AMD Phenom II x4 955 @3,8 GHz
12 GB RAM Kingston 1600 MHz
Gigabyte GA-880GA-UD3H
Radeon HD 5750 a čekám na ASUS HD 7950
Seagate Barracuda 7200.1, SSD Crucial MX200 250 GB
Re: c# Algoritmus řádkového vyplňování v 2d poli
hmm..hmm..to zni zajimave, akorat to nejak napsat 
takhle to mam projizdeni nahoru, ta if podminka zarucuje ze ti to odhali to pole s cislem an ktery to narazi

takhle to mam projizdeni nahoru, ta if podminka zarucuje ze ti to odhali to pole s cislem an ktery to narazi
Kód: Vybrat vše
while ((yNahoru >= 0) && (Array.pole[mouseX, mouseY] == 0) && (Array.poleM[mouseX, yNahoru] == 0) && (Array.pole[mouseX, yNahoru] == 0) && (Array.poleM[mouseX, mouseY] == 0))
{
Array.pole[mouseX, yNahoru] = 4;
yNahoru--;
completed = true;
}
if (completed = true)
{
if ((yNahoru >= 0) && (Array.poleM[mouseX, yNahoru] != 0) && (Array.poleM[mouseX, mouseY] == 0))
{
Array.pole[mouseX, yNahoru] = 4;
completed = false;
}
}
immortal-world.net - přijďte si zahrát!
Re: c# Algoritmus řádkového vyplňování v 2d poli
Bohužel s tím ti už neporadím
v Céčku jsem nikdy nepsal
jsem rád, že jsem to vysvětlil na tolik, že to chápeš
většinou mi nikdo nerozumí 
WOW to cos mi poslal je pro mě španělská vesnice...já psal Pascal
v něm bych udělal podprogram na hledání koncového políčka, tedy toho s číslem a použil bych ho pokaždé když bych narazil na políčko bez hodnoty, akorát nevím jak přesně....




WOW to cos mi poslal je pro mě španělská vesnice...já psal Pascal

Lenovo IdeaPad Y580 s i5 3210M a odpálenou GTX 660M|
AMD Phenom II x4 955 @3,8 GHz
12 GB RAM Kingston 1600 MHz
Gigabyte GA-880GA-UD3H
Radeon HD 5750 a čekám na ASUS HD 7950
Seagate Barracuda 7200.1, SSD Crucial MX200 250 GB
AMD Phenom II x4 955 @3,8 GHz
12 GB RAM Kingston 1600 MHz
Gigabyte GA-880GA-UD3H
Radeon HD 5750 a čekám na ASUS HD 7950
Seagate Barracuda 7200.1, SSD Crucial MX200 250 GB
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: c# Algoritmus řádkového vyplňování v 2d poli
no ty potřebuješ pro kažždé políčko pustit tu funkci ne? tak to je vhodný použít rekurzi
jinak nahoru jedeš přes while(--top) ....
jinak nahoru jedeš přes while(--top) ....
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: c# Algoritmus řádkového vyplňování v 2d poli
Já jsem docela amatér a o rekurzi nemám ani páru 

immortal-world.net - přijďte si zahrát!
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: c# Algoritmus řádkového vyplňování v 2d poli
co ti funguje?
jakej máš kod?
napiš algoritmus co to má dělat
rekurze je volání sebe sama
jakej máš kod?
napiš algoritmus co to má dělat
rekurze je volání sebe sama
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: c# Algoritmus řádkového vyplňování v 2d poli
takže, zatím mám uděláno, že když klikneš, tak to od toho místa odhalí 4 směry(nahoru,dolu,doleva,doprava) + to odhali políčko na které to narazí(číslo)
--- Doplnění předchozího příspěvku (12 Črc 2013 21:36) ---
dyztak tady je exe soubor http://www.filedropper.com/hledanimin
Kód: Vybrat vše
private void Floodfill()
{
int yNahoru = mouseY - 1;
int yDolu = mouseY + 1;
int xDoleva = mouseX - 1;
int xDoprava = mouseX + 1;
int xVlevo = mouseX- 1;
bool completed;
while ((yNahoru >= 0) && (Array.pole[mouseX, mouseY] == 0) && (Array.poleM[mouseX, yNahoru] == 0) && (Array.pole[mouseX, yNahoru] == 0) && (Array.poleM[mouseX, mouseY] == 0))
{
//Array.pole = 0 .... znamena ze je policko neodhalene
//Array.poleM=0...znamena ze je policko prazdne(bez cisla)
//v pripade ze je policko Array.pole[mouseX, yNahoru] == 0 tak ho to odhali a yNahoru -- ... takze to projizdi dokud nenarazi na cislo
Array.pole[mouseX, yNahoru] = 4;
yNahoru--;
completed = true;
}
if (completed = true)
{
if ((yNahoru >= 0) && (Array.poleM[mouseX, yNahoru] != 0) && (Array.poleM[mouseX, mouseY] == 0))
{
//pokud narazi na cislo Array.poleM[mouseX, yNahoru] != 0, tak odhali
Array.pole[mouseX, yNahoru] = 4;
completed = false;
}
}
--- Doplnění předchozího příspěvku (12 Črc 2013 21:36) ---
dyztak tady je exe soubor http://www.filedropper.com/hledanimin
immortal-world.net - přijďte si zahrát!
Re: c# Algoritmus řádkového vyplňování v 2d poli
Takže chceš odkrýt celou oblast „nul“ až ke hranici nějakých čísel? Tak to bude určité vhodné použít rekurzi:
Tahle funkce nejdřív otestuje jestli už při odkrývání nevyjela za okraj hrací plochy, a potom jestli pole už není odkryté.
Pokud testy vyjdou, tak ho odkryje – zobrazí jeho obsah, a potom zavolá sama sebe na všechna čtyři sousední pole.
Tomuhle se říká rekurze a dají se s tím dělat neuvěřitelná kouzla. Ale musíš vždy myslet na to že rekurze požírá zdroje, protože při každém vnoření zabere kus paměti a spotřebuje na to nějaký čas procesoru, a také je strašně snadné v ní vytvořit nekonečný cyklus, takže se nikdy nesmí spustit bez nějaké podmínky!
Kód: Vybrat vše
odkryj(x,y)
{
když jsi na ploše
{
když pole není odkryté
{
zobrazit
odkryj(x+1,y)
odkryj(x-1,y)
odkryj(x,y+1)
odkryj(x,y-1)
}
}
}
Tahle funkce nejdřív otestuje jestli už při odkrývání nevyjela za okraj hrací plochy, a potom jestli pole už není odkryté.
Pokud testy vyjdou, tak ho odkryje – zobrazí jeho obsah, a potom zavolá sama sebe na všechna čtyři sousední pole.
Tomuhle se říká rekurze a dají se s tím dělat neuvěřitelná kouzla. Ale musíš vždy myslet na to že rekurze požírá zdroje, protože při každém vnoření zabere kus paměti a spotřebuje na to nějaký čas procesoru, a také je strašně snadné v ní vytvořit nekonečný cyklus, takže se nikdy nesmí spustit bez nějaké podmínky!
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: c# Algoritmus řádkového vyplňování v 2d poli
Když tak na to cos mi poslal koukam, tak si říkám, to odhalí všechny políčka co se rovnaj nule, já potřebují jen určitou oblast, podle toho kam kliknes.jako je to v hledání min... Pokud klikne s na políčko které je nula, tak ti to odhalí okolní políčka která jsou nula, dokud to nenarazí na číslo a to také odhalí.
immortal-world.net - přijďte si zahrát!
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: c# Algoritmus řádkového vyplňování v 2d poli
bys musel napsat algoritmus 

PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: c# Algoritmus řádkového vyplňování v 2d poli
agil píše:Pokud klikne s na políčko které je nula, tak ti to odhalí okolní políčka která jsou nula, dokud to nenarazí na číslo a to také odhalí.
Ano, přesně to také dělá. Takhle:
Kód: Vybrat vše
X X X X X X X X X X
X X X X 3 2 X 1 X X
X 1 2 2 1 2 X
2 1
X 1 1 K 1
X 2 1 X 1 3
X 1 3 X X 2 2 X
X X 1 1 X X X X X X
X X X X X X X X X X
X X X X X X X X X X
Jenže v originálním hledání min se ti neprohledávají sousední čtyři políčka ale všech osm, tak zapřemýšlej jak moc se tvoje zadání a jeho fungování bude lišit. Případně bys mohl ten můj algoritmus malinko doplnit, tak aby pracoval trochu "zodpovědněji"

"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů