Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. //global:
  2. inteiro jogadoratual, mat[8][8], dx[8], dy[8]
  3.  
  4. //na main():
  5. dx[0]=0
  6. dx[1]=0
  7. dx[2]=1
  8. dx[3]=1
  9. dx[4]=1
  10. dx[5]=-1
  11. dx[6]=-1
  12. dx[7]=-1
  13. dy[0]=1
  14. dy[1]=-1
  15. dy[2]=1
  16. dy[3]=-1
  17. dy[4]=0
  18. dy[5]=1
  19. dy[6]=-1
  20. dy[7]=0
  21.  
  22. //retorna verdadeiro se o movimento pode ser feito (nao faz o movimento)
  23. função logico movimento_valido(inteiro xa, inteiro ya, inteiro xb, inteiro yb){
  24. //verifica posicao fora do grid
  25. 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){
  26. escreva("movimento invalido\n")
  27. retorne falso
  28. }
  29. //verifica se a posicao inicial tem uma peca do jogador e se ela nao vai para posicao de outra
  30. se(mat[xa][ya]/10 != jogadoratual ou mat[xb][yb]/10 == jogadoratual){
  31. escreva("movimento invalido\n")
  32. }
  33. //testa cada uma das 8 direcoes
  34. para(inteiro direcao = 0; direcao < 8; direcao++){
  35. inteiro vaix = xa + mat[xa][ya]*dx[direcao]
  36. inteiro vaiy = ya + mat[xa][ya]*dy[direcao]
  37. //se achou a direcao certa
  38. se(vaix == xb e vaiy == yb){
  39. inteiro xatual = xa, yatual = ya
  40. //verifica as posicoes intermediarias
  41. para(inteiro contador = 0; contador < mat[xa][ya]-1; contador++){
  42. xatual = xatual+dx[direcao]
  43. yatual = yatual+dy[direcao]
  44. se(mat[xatual][yatual] != 0){
  45. escreva("peça no meio do caminho\n")
  46. retorne falso
  47. }
  48. }
  49. retorne verdadeiro
  50. }
  51. }
  52. //se nao houver movimento entre os 8 possiveis que leve ao destino, o movimento nao eh valido
  53. escreva("movimento invalido\n")
  54. retorne falso
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement