Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. (defun f-eval-pedro (estado)
  2. ; current player standpoint
  3. (let* ((tablero (estado-tablero estado))
  4. (ficha-actual (estado-turno estado))
  5. (ficha-oponente (siguiente-jugador ficha-actual)))
  6. (if (juego-terminado-p estado)
  7. (let ((ganador (ganador estado)))
  8. (cond ((not ganador) 0)
  9. ((eql ganador ficha-actual) +val-max+)
  10. (t +val-min+)))
  11. (let ((puntuacion-actual 0)
  12. (puntuacion-oponente 0)
  13. (puntuacion-centro 0))
  14. (loop for columna from 0 below (tablero-ancho tablero) do
  15. (let* ((altura (altura-columna tablero columna))
  16. (fila (1- altura))
  17. (abajo (contar-abajo tablero ficha-actual columna fila))
  18. (der (contar-derecha tablero ficha-actual columna fila))
  19. (izq (contar-izquierda tablero ficha-actual columna fila))
  20. (abajo-der (contar-abajo-derecha tablero ficha-actual columna fila))
  21. (arriba-izq (contar-arriba-izquierda tablero ficha-actual columna fila))
  22. (abajo-izq (contar-abajo-izquierda tablero ficha-actual columna fila))
  23. (arriba-der (contar-arriba-derecha tablero ficha-actual columna fila)))
  24. (setf puntuacion-actual
  25. (+ puntuacion-actual
  26. (cond ((= abajo 0) 0)
  27. ((= abajo 1) 5)
  28. ((= abajo 2) 50)
  29. ((= abajo 3) 500))
  30. (cond ((= der 0) 0)
  31. ((= der 1) 5)
  32. ((= der 2) 50)
  33. ((= der 3) 500))
  34. (cond ((= izq 0) 0)
  35. ((= izq 1) 5)
  36. ((= izq 2) 50)
  37. ((= izq 3) 500))
  38. (cond ((= arriba-izq 0) 0)
  39. ((= arriba-izq 1) 5)
  40. ((= arriba-izq 2) 50)
  41. ((= arriba-izq 3) 500))
  42. (cond ((= abajo-izq 0) 0)
  43. ((= abajo-izq 1) 5)
  44. ((= abajo-izq 2) 50)
  45. ((= abajo-izq 3) 500))
  46. (cond ((= arriba-der 0) 0)
  47. ((= arriba-der 1) 5)
  48. ((= arriba-der 2) 50)
  49. ((= arriba-der 3) 500))
  50. (cond ((= abajo-der 0) 0)
  51. ((= abajo-der 1) 5)
  52. ((= abajo-der 2) 50)
  53. ((= abajo-der 3) 500)))))
  54. (let* ((altura (altura-columna tablero columna))
  55. (fila (1- altura))
  56. (abajo (contar-abajo tablero ficha-oponente columna fila))
  57. (der (contar-derecha tablero ficha-oponente columna fila))
  58. (izq (contar-izquierda tablero ficha-oponente columna fila))
  59. (abajo-der (contar-abajo-derecha tablero ficha-oponente columna fila))
  60. (arriba-izq (contar-arriba-izquierda tablero ficha-oponente columna fila))
  61. (abajo-izq (contar-abajo-izquierda tablero ficha-oponente columna fila))
  62. (arriba-der (contar-arriba-derecha tablero ficha-oponente columna fila)))
  63. (setf puntuacion-oponente
  64. (+ puntuacion-oponente
  65. (cond ((= abajo 0) 0)
  66. ((= abajo 1) 10)
  67. ((= abajo 2) 100)
  68. ((= abajo 3) 1000))
  69. (cond ((= der 0) 0)
  70. ((= der 1) 10)
  71. ((= der 2) 100)
  72. ((= der 3) 1000))
  73. (cond ((= izq 0) 0)
  74. ((= izq 1) 10)
  75. ((= izq 2) 100)
  76. ((= izq 3) 1000))
  77. (cond ((= arriba-izq 0) 0)
  78. ((= arriba-izq 1) 10)
  79. ((= arriba-izq 2) 100)
  80. ((= arriba-izq 3) 1000))
  81. (cond ((= abajo-izq 0) 0)
  82. ((= abajo-izq 1) 10)
  83. ((= abajo-izq 2) 100)
  84. ((= abajo-izq 3) 1000))
  85. (cond ((= arriba-der 0) 0)
  86. ((= arriba-der 1) 10)
  87. ((= arriba-der 2) 100)
  88. ((= arriba-der 3) 1000))
  89. (cond ((= abajo-der 0) 0)
  90. ((= abajo-der 1) 10)
  91. ((= abajo-der 2) 100)
  92. ((= abajo-der 3) 1000)))))
  93. (setf puntuacion-centro
  94. (+ puntuacion-centro
  95. (cond ((= (altura-columna tablero 3) 0) 9999999999999)
  96. ((= (altura-columna tablero 3) 1) 999999999)
  97. ((= (altura-columna tablero 3) 2) 100)
  98. ((= (altura-columna tablero 3) 3) 50)
  99. ((= (altura-columna tablero 3) 4) 50)
  100. ((= (altura-columna tablero 3) 5) 50)))))
  101. (- (+ puntuacion-actual puntuacion-centro) puntuacion-oponente)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement