Hra miny,zhodnocovanie obsahu okolitych poli – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hra miny,zhodnocovanie obsahu okolitych poli – .NET – Fórum – Programujte.comHra miny,zhodnocovanie obsahu okolitych poli – .NET – Fórum – Programujte.com

 

duro10
Newbie
24. 11. 2011   #1
-
0
-

caute

nasiel som na ente ulohu na vytvorenie takeho zakladu pre hru miny

ide o to,ze najskor si zvolime velkost nasho pola MxN a dalej budeme vkladat prvky

bodka je ako volne pole

hviezdicka oznacuje minu

no a policka kde nie je ulozena mina,ukazuju kolko min je v okoli tohto policka(teda maximalne 8,lebo sa podla tej ulohy pocitaju aj tie akoby na uhlopriecke)

riesil som to cez if,co je ale dost neprakticke,kedze je tam tych podmienok strasne moc(pre 8 prvkov,pre 7...atd)

ako by sa to dalo vyriesit efektivnejsie?

dakujem

Nahlásit jako SPAM
IP: 195.212.29.–
duro10
Newbie
24. 11. 2011   #2
-
0
-

napadlo ma zaznamenavt suradnice vlozenych hviezdiciek do nejakeho pola,len neviem ako to potom vdaka tomu vyhodnotit

Nahlásit jako SPAM
IP: 195.212.29.–
liborb
~ Redaktor
+18
Guru
24. 11. 2011   #3
-
0
-

Jestli ti jde jenom o to číslování, tak při vkládání každé jednotlivé miny ve všech okolních políčkách (pokud tam není mina a nebo políčko není mimo hrací pole) zvedni počet o 1 (nebo-li pokud je tam tečka, tak to změň na 1 a jinak +1).

Nahlásit jako SPAM
IP: 78.80.52.–
zlz
~ Anonymní uživatel
634 příspěvků
24. 11. 2011   #4
-
0
-

Když otestuješ všechna políčka v cyklu, tak to bude jen jeden if.

bool JeMina(int x, int y)
{
    if (x < 0 || x >= pole.GetLength(0) || y < 0 || y >= pole.GetLength(1))
        return false;
    return pole[x,y] == '*';
}

int PocetMin(int x, int y)
{
    int pocet = 0;
    for (int i = -1; i <= 1; i++)
        for (int j = -1; j <= 1; j++)
            if (i != 0 && j != 0 && JeMina(pole, x + i, y + j))
                pocet++;
    return pocet;
}


char[,] pole = new char[M,N];

for (int x = 0; x < M; x++)
    for (int y = 0; y < N; y++)
        if (!JeMina(pole, x, y))
            pole[x, y] = (char)('0' + PocetMin(pole, x, y));
Nahlásit jako SPAM
IP: 213.211.51.–
zlz
~ Anonymní uživatel
634 příspěvků
24. 11. 2011   #5
-
0
-

A ten if v PocetMin mám blbě.

if (JeMina(pole, x + i, y + j) && !(i == 0 && j == 0))
Nahlásit jako SPAM
IP: 213.211.51.–
zlz
~ Anonymní uživatel
634 příspěvků
24. 11. 2011   #6
-
0
-

A ještě ty parametry, sakra... To jedno, asi chápeš, co jsem myslel.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Hra miny v pascalu — založil Filip

Největší v poli polí — založil Noneus

Hledání v poli polí — založil jaxx19

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý