Ohrožování pozic jezdcem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ohrožování pozic jezdcem  – C / C++ – Fórum – Programujte.comOhrožování pozic jezdcem – C / C++ – Fórum – Programujte.com

 

MaxDJs0
Návštěvník
4. 2. 2010   #1
-
0
-

Zdravím,

potřebuji poradit s jednou úlohou v C/C++, a to s úlohou, která řeší to, které pozice může ohrožovat jezdec ze své pozice. Potřeboval bych poradit, jak do kódu níže přidat úlohy, které by řešili toto:
[seznam]
Označení políčka, které může kůň ohrozit červenou barvou
Náhodné dosazení různých šachových figurek[/seznam]

#include <stdio.h>


// velikost sachovnice
const int BoardSize = 8;

// deklarace typu sachovnice
typedef int tBoard[BoardSize ][ BoardSize ];

// pocet moznych tahu konem
const int NoOfHorseMoves = 8;

// zmeny souradnic pro jednotlive tahy
const int RowMoveDelta[NoOfHorseMoves] = {−2, −1, +1, +2, +2, +1, −1, −2};
const int ColMoveDelta[NoOfHorseMoves] = {+1, +2, +2, +1, −1, −2, −2, −1};

// deklarace typu pro ulozeni pozice
struct Position
{
int Row;
int Col;
};
// inicializace sachovnice
void InitBoard (tBoard& Board)
{
for ( int i = 0; i < BoardSize; i ++)
for ( int j = 0; j < BoardSize; j++)
Board[i ][ j ] = 0;
}
// zobrazeni sachovnice
void PrintBoard(const tBoard& Board)
{
for ( int i = 0; i < BoardSize; i ++)
{
for ( int j = 0; j < BoardSize; j++)
printf (”%4i”, Board[i ][ j ]) ;
printf (”\n”);
}
printf (”\n”);
}

// posun konem po sachovnici
// Pos −− aktualni poloha kone na sachovnici
// MoveIndex −− kolikaty z 8 moznych tahu provadime
// Funkce vraci novou polohu kone

Position Move(const Position& Pos, const int MoveIndex)
{
Position p;
p.Row = Pos.Row + RowMoveDelta[MoveIndex];
p.Col = Pos.Col + ColMoveDelta[MoveIndex];
return p;
}
// Test zda je tah platny
// Vraci true pokud je tah na pozici Pos na sachovnici dane parametrem Board mozny

bool IsValidMove(const Position & Pos, const tBoard Board)
{
bool Result = true;
Result &= 0 <= Pos.Row;
Result &= Pos.Row < BoardSize;
Result &= 0 <= Pos.Col;
Result &= Pos.Col < BoardSize;
Result &= Board[Pos.Row][Pos.Col] == 0;
return Result ;
}

Nahlásit jako SPAM
IP: 90.177.22.–
liborb
~ Redaktor
+18
Guru
5. 2. 2010   #2
-
0
-

Náhodné dosazení různých šachových figurek by se dalo vyřešit např. tím, že každé fugurce přiřadíš ID (index, číslo) různé od 0 (0 == prázdné políčko). Figurky brát z předdefinovaného pole (tj. 8 pěšáků, 2 koně, 2 střelci ....), postupně je vybírat, náhodně volit jejich pozici na šachovnici, testovat případnou kolizi atd. atd.

A označení políček, které může kůň ohrozit? Zase jeden průchod cyklem (NoOfHorseMoves), testovat validnost pohybu a pokud je takový pohyb možný, tak políčko označit (barvou).

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

Moderátoři diskuze

 

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