Em outras palavras, eu procuro ajuda em um algorítimo que faça isso:
Expandir esta imagem
Eu só consegui fazer ele verificar pra cima 2 casas de movimento, sempre na diagonal (tanto faz o lado), só que é um algorítimo 'burro', nessa situação por exemplo ele captura 2 peças pretas, ignorando as outras da seqüência.
Eu pensei em fazer de modo 'manual', por exemplo, ao capturar uma peça, a jogada não é passada ao oponente, ela continua sendo a do jogador desde que ainda exista uma possibilidade de captura (em qualquer direção que seja, só 4 na realidade), com isso a programação fica mais 'light', só que novamente volta ao algorítimo 'burro', pois a jogada com a maior quantidade de capturas DEVE ser obrigatória, ou seja, estou procurando por um algorítimo que seja capaz de pular as casas 'procurando' as possibilidades, se não der certo serei obrigado a fazer de modo manual.
Estou usando verificação de 'locais vazios' para a programação, as peças são objetos dinâmicos, ou seja, são os mesmos, mas 'funcionam' de forma diferente. Ao clicar na peça, uma variável ganha o ID dela e pela função with eu consigo capturar e mover peças. Achei relativamente fácil até agora, fiz boa parte das regras do jogo, falta somente essa de capturar 'múltiplas' peças do oponente e a movimentação da 'dama' (que pode se movimentar por mais de 1 casa na mesma diagonal) que creio não será nada complicado.
O código até agora está assim:
- CÓDIGO:
if place_free(x+48,y-48) or place_free(x-48,y-48)
pos_ok=1
else
pos_ok=0
if (pos_ok and aperta) {
if place_free(x+48,y-48) {
op_disp_1=1
if (mouse_x>x+24 and mouse_xy-72)
opcao_1=1 else opcao_1=0
} else { op_disp_1=0; opcao_1=0 }
if place_free(x-48,y-48) {
op_disp_2=1
if (mouse_xx-72) and (mouse_y y-72)
opcao_2=1 else opcao_2=0
} else { op_disp_2=0; opcao_2=0 }
} else {
op_disp_1=0;
opcao_1=0;
op_disp_2=0;
opcao_2=0;
}
if place_meeting(x-48,y-48,obj_pretas) and place_free(x-96,y-96)
captura_1=1 else captura_1=0
if place_meeting(x+48,y-48,obj_pretas) and place_free(x+96,y-96)
captura_2=1 else captura_2=0
if (mouse_x>x+72 and mouse_xy-120) and captura_2
sel_captura_1=1 else sel_captura_1=0
if (mouse_xx-120) and (mouse_y y-120) and captura_1
sel_captura_2=1 else sel_captura_2=0
if (mouse_x>x-24 and mouse_xy-24 and mouse_y mouse=1
else
mouse=0
Nenhum comentário:
Postar um comentário