1. TugaTech » Programação, Scripts e Webmasters » Programação, Scripts e Webmasters

Siga-nos

Realize o Login na sua conta ou Registe-se para participar.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

#1 Quatro em Linha em C# - em Qui 23 Abr 2015 - 0:22

RETROspective

Iniciante
avatar

Tenho um projecto para realizar para uma cadeira da faculdade envolvendo a linguagem C Sharp. Tenho de criar o jogo Quatro em Linha, para quem não conhece o jogo que clique aqui.

 

Cheguei a uma parte em que tenho um problema... preciso que a peça caia em qualquer parte da coluna/linha em que o utilizador carregar e sinceramente não sei fazer dessa maneira. Algum Einstein poderá dar-me uma dica? eheh.

Ver perfil do usuário https://www.youtube.com/channel/UCTmMf1nSrRYkeES49wRNxig

#2 Re: Quatro em Linha em C# - em Qui 23 Abr 2015 - 9:36

Aprendiz

Avançado
avatar

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();

}

Ver perfil do usuário http://goncalotomas.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum




Aplicações do TugaTechAplicações TugaTechBlog TugaTechBlog do TugaTechRSS TugaTechRSS do TugaTechSpeedtest TugaTechSpeedtest TugatechHost TugaTechHost TugaTech