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 ;
}