andrepadez
Power Member
Pois é, depois do temporizador de Blinds para poker ( o meu "Hello World" em C# e em *****), decidi agarrar um projecto mais complexo. Por enquanto está tudo a correr bem, tirando alguns precalços já ultrapassados.
A minha dúvida prende-se com optimização e redundância, vou tentar ser o mais resumido possível.
A minha dúvida prende-se na redundância da atribuição de peças a quadrados. E sei que vai acontecer outra vez ao longo do jogo, sempre que se mover uma peça; eu vou ter de:
- Atribuir o quadrado 2 à localização da peça movida
- indicar ao quadrado 1 que a variável hostOf = null
- indicar ao quadrado 2 que a variàvel hostOf = peçaMovida;
Parece-me tudo extremamente redundante.
Alguma sugestão??? Obrigado pela atenção.
A minha dúvida prende-se com optimização e redundância, vou tentar ser o mais resumido possível.
Código:
//contem as propriedades de um quadrado do tabuleiro
//ambas as classes têm métodos públicos Get (ex GetHostOf) para retornar o valor das instâncias
Public Square {
private int x, y; // coordenadas cartesianas na matriz [8,8] de Squares que é o tabuleiro
private Piece hostOf; "indica qual a instância da classe Piece que ocupa este square
}
//Contém todas as propriedades inerentes a cada peça em jogo
Public Piece {
private Square location; //localização da peça na matriz de Squares
//variáveis para Côr (enum), Tipo (enum cavalo, rei, peão), e ordem (peãoBranco0, CavaloPreto1)
//Construtor:
public Piece (Square local, Type tipo, Cor color, order)
}
//Classe que cria um tabuleiro de xadrez, coloca as peças nas posições iniciais, inicia o jogo
//cada instância de ChessBoard é um match
Public ChessBoard
{
private Square squares = new Square [8,8];
private Piece blackPawns = new Piece [8];
private Piece whitePawns = new Piece [8];
private Piece blackPawns = new Piece [8];
private Piece whiteKnights = new Piece[2];
//já perceberam a ideia.
//Classe construtora
public ChessBoard()
{
//1º uso um for quadrático para criar new Squares por toda a matriz, atribuindo coords XY
//Colocar as Peças (ex. Peões Brancos) - é aqui a dúvida
for (rank = 0; rank < 8; rank++)
{
whitePawns[1] = new Piece (squares[rank, 1], Type.Pawn, Color.White);
squares[rank,1].HostOf = whitePawns[1];
}
(...e para todas as outras peças o mesmo...)
}
A minha dúvida prende-se na redundância da atribuição de peças a quadrados. E sei que vai acontecer outra vez ao longo do jogo, sempre que se mover uma peça; eu vou ter de:
- Atribuir o quadrado 2 à localização da peça movida
- indicar ao quadrado 1 que a variável hostOf = null
- indicar ao quadrado 2 que a variàvel hostOf = peçaMovida;
Parece-me tudo extremamente redundante.
Alguma sugestão??? Obrigado pela atenção.