8 Královen - skrytá logická chyba – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

8 Královen - skrytá logická chyba – .NET – Fórum – Programujte.com8 Královen - skrytá logická chyba – .NET – Fórum – Programujte.com

 

Petrroll0
Stálý člen
2. 5. 2010   #1
-
0
-

Takže všechny logické chyby opraveny. Omlouvám se za toto vlákno, nakonec jsem to zpracoval sám, ale pořád to chce dodělat.

 public MainWindow()

{
InitializeComponent();

bool[ , ] pole = zjistiKombinaci();
vykreslySachovnici(pole);
}

public void vykreslySachovnici(bool[,] pole)
{

Button[,] sachovnice = new Button[8, 8];

int x = 50;
int y = 50;
int indx = 0;



for (int i = 0; i /*==*/ < 8; i++)
{
for (int j = 0; j /*==*/ < 8; j++)
{
sachovnice[i, j] = new Button();
Canvas.SetLeft(sachovnice[i, j], x);
Canvas.SetTop(sachovnice[i, j], y);
sachovnice[i, j].Name = "btn" + i.ToString() + j.ToString();
sachovnice[i, j].Width = 50;
sachovnice[i, j].Height = 50;
sachovnice[i, j].TabIndex = indx;
indx++;



if ((i + j) % 2 == 0)
{
sachovnice[i, j].Background = Brushes.Black;
}

else
{
sachovnice[i, j].Background = Brushes.White;
}
x += 50;

herniPole.Children.Add(sachovnice[i, j]);

if (pole[i, j])
{
sachovnice[i, j].Background = Brushes.Green;
}
}
x = 50; y += 50;
}

}

public bool[ , ] zjistiKombinaci()
{
bool[,] kombinace = new bool[8, 8];
int x = 0;
int y = 0;
for (int j = y; y < 8; y++)
{
for (int i = x; x < 8; x++)
{
j = y;
i = x;
kombinace[i, j] = true;
if (zkontrolujSach(i, j, kombinace) == false)
{
kombinace[i, j] = false;
}
else
{
x = 0;
y++;
}
}

}
this.Title = "Dal jsem to!";
return kombinace;

}

public bool zkontrolujSach(int x, int y, bool[,] kombinace)
{
if (zkontrolujVodorovne(x, y, kombinace) && zkontrolujSvisle(x, y, kombinace) && zkontrolujUhlopricku1(x, y, kombinace) && zkontrolujUhlopricku2(x, y, kombinace) && zkontrolujUhlopricku3(x, y, kombinace) &&zkontrolujUhlopricku4(x, y, kombinace))
{
return true;
}

else
{
return false;
}
}


public bool zkontrolujVodorovne(int x, int y, bool[,] kombinace)
{
bool[,] pole = (bool[,])kombinace.Clone();
pole[x, y] = false;
//kombinace.CopyTo(pole, 0);
//bool[,] pole = kombinace;

for (int e_i = 0; e_i < 8; e_i++) //kontroluje šach v vodorovné
{

if (pole[e_i, y] == true)
{
return false;
}


}
return true;

}

public bool zkontrolujSvisle(int x, int y, bool[,] kombinace)
{
bool[,] pole = (bool[,])kombinace.Clone();
pole[x, y] = false;
for (int e_j = 0; e_j < 8; e_j++) //kontroluje šach v příčné
{
if (pole[x, e_j] == true)
{
return false;
}

}

return true;
}

public bool zkontrolujUhlopricku1(int x, int y, bool[,] kombinace)
{
bool[,] pole = (bool[,])kombinace.Clone();
pole[x, y] = false;
int i = x;
int j = y;

for (int e_i = i; e_i < 8 && j < 8; e_i++) //Kontroluje vpravo-dolu
{
if (pole[e_i, j] == true)
{
return false;
}
if (j == 8 || j == 0 || e_i == 8 || e_i == 0) //Kontroluje okraje
{
break;
}
j++;
}


return true;
}

public bool zkontrolujUhlopricku2(int x, int y, bool[,] kombinace)
{
bool[,] pole = (bool[,])kombinace.Clone();
pole[x, y] = false;
int i = x;
int j = y;

for (int e_i = i; e_i < 8 && j < 8; e_i--) //Kontroluje vlevo-dolu
{
if (pole[e_i, j] == true)
{
return false;
}
if (j == 8 || j == 0 || e_i == 8 || e_i == 0) //Kontroluje okraje
{
break;
}
j++;
}


return true;
}

public bool zkontrolujUhlopricku3(int x, int y, bool[,] kombinace)
{
bool[,] pole = (bool[,])kombinace.Clone();
pole[x, y] = false;
int i = x;
int j = y;


for (int e_i = i; e_i < 8 && j < 8; e_i--) //Kontroluje vlevo-nahoru
{
if (pole[e_i, j] == true)
{
return false;
}
if (j == 8 || j == 0 || e_i == 8 || e_i == 0) //Kontroluje okraje
{
break;
}
j--;
}


return true;
}

public bool zkontrolujUhlopricku4(int x, int y, bool[,] kombinace)
{
bool[,] pole = (bool[,])kombinace.Clone();
pole[x, y] = false;
int i = x;
int j = y;

for (int e_i = i; e_i < 8 && j < 8; e_i++) //Kontroluje vpravo-nahoru
{
if (pole[e_i, j] == true)
{
return false;
}
if (j == 8 || j == 0 || e_i == 8 || e_i == 0) //Kontroluje okraje
{
break;
}
j--;
}


return true;
}

Nahlásit jako SPAM
IP: 92.62.224.–
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, 11 hostů

Podobná vlákna

Logicka chyba — založil Honzik

Skrytá chyba ? :( — založil Mirek Braho

Logicka odpoved na otazku — založil Ivka79

Logická úloha-množiny — založil Nikol31

 

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