Bom dia,
Normalmente, jogos deste tipo são programados usando matrizes (vetores de vetores). Se o jogo tiver uma grelha de 9 por 6 (x=9,y=6), então será esse o tamanho da matriz.
De seguida, marcar-se-ão as posições vazias com um código que ache melhor, por exemplo, 0. Atribua um valor para cada cor, por exemplo 1 para as vermelhas e 2 para as amarelas. Isto significa que quando um jogador carregar numa coluna, é suposto a peça ir "deslizando" (atenção que não vou referir formas de animar este movimento) até cair na primeira posição livre mais abaixo.
Como é que programamos esta parte do deslizar? Imagine que a grelha apenas tem 1 coluna, e que o vetor começa a contar nas casas inferiores. Com esta informação é fácil perceber que qualquer peça introduzida vai ficar na primeira casa que houver que contenha o valor 0, porque isto indica que está livre! Ou seja, vendo o algoritmo em pseudo-código:
nota: estamos a contar de baixo para cima, que é o sentido contrário ao da suposta animação.
Presuma-se também que estamos a adicionar uma peça vermelha
VAZIO=0
VERMELHO=1
AMARELO=2
enquanto( grelha(xActual,yActual)!=VAZIO ) {
yActual++;
}
se(yActual > yMax) {
// Levanta-se excepção, não há posição livre nesta coluna
}
caso contrario {
grelha(xActual,yActual)=VERMELHO;
pintaGrelha();
}