Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //global:
- inteiro jogadoratual, mat[8][8], dx[8], dy[8]
- //na main():
- dx[0]=0
- dx[1]=0
- dx[2]=1
- dx[3]=1
- dx[4]=1
- dx[5]=-1
- dx[6]=-1
- dx[7]=-1
- dy[0]=1
- dy[1]=-1
- dy[2]=1
- dy[3]=-1
- dy[4]=0
- dy[5]=1
- dy[6]=-1
- dy[7]=0
- //retorna verdadeiro se o movimento pode ser feito (nao faz o movimento)
- função logico movimento_valido(inteiro xa, inteiro ya, inteiro xb, inteiro yb){
- //verifica posicao fora do grid
- se(xa < 0 ou xa >= 8 ou ya < 0 ou ya >= 8 ou xb < 0 ou xb >= 8 ou yb < 0 ou yb >= 8 ou){
- escreva("movimento invalido\n")
- retorne falso
- }
- //verifica se a posicao inicial tem uma peca do jogador e se ela nao vai para posicao de outra
- se(mat[xa][ya]/10 != jogadoratual ou mat[xb][yb]/10 == jogadoratual){
- escreva("movimento invalido\n")
- }
- //testa cada uma das 8 direcoes
- para(inteiro direcao = 0; direcao < 8; direcao++){
- inteiro vaix = xa + mat[xa][ya]*dx[direcao]
- inteiro vaiy = ya + mat[xa][ya]*dy[direcao]
- //se achou a direcao certa
- se(vaix == xb e vaiy == yb){
- inteiro xatual = xa, yatual = ya
- //verifica as posicoes intermediarias
- para(inteiro contador = 0; contador < mat[xa][ya]-1; contador++){
- xatual = xatual+dx[direcao]
- yatual = yatual+dy[direcao]
- se(mat[xatual][yatual] != 0){
- escreva("peça no meio do caminho\n")
- retorne falso
- }
- }
- retorne verdadeiro
- }
- }
- //se nao houver movimento entre os 8 possiveis que leve ao destino, o movimento nao eh valido
- escreva("movimento invalido\n")
- retorne falso
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement