-
Notifications
You must be signed in to change notification settings - Fork 28
/
random_reversi.js
114 lines (106 loc) · 3.81 KB
/
random_reversi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// obtiene turno oponente
function op(turno) {
if (turno == 0) return 1
return 0
}
// carga parametros
var urlParams = new URLSearchParams(window.location.search);
var turno = urlParams.get('turno')
var lineal = urlParams.get('estado')
console.log(turno+' '+lineal)
var matriz = []
var mov = []
var c = 0
// transformación lineal a matriz
for (let i = 0; i < 8; i++) {
matriz[i] = []
for (let j = 0; j < 8; j++)
matriz[i][j] = lineal[c++]
}
//busqueda de movimientos
for (var i = 0; i < 8; i++)
for (var j = 0; j < 8; j++)
if (matriz[i][j] == turno){
//norte
if (i > 1)
if (matriz[i-1][j] == op(turno))
for (var a = i - 2; a >= 0; a--)
if (matriz[a][j] == 2){
mov.push(''+a+j)
break
}
else if (matriz[a][j] == turno)
break
//sur
if (i < 6)
if (matriz[i+1][j] == op(turno))
for (var a=i+2; a <= 7; a++)
if (matriz[a][j] == 2){
mov.push(''+a+j)
break
}
else if (matriz[a][j] == turno)
break
//oeste
if (j > 1)
if (matriz[i][j-1] == op(turno))
for (var a = j-2; a >= 0; a--)
if (matriz[i][a] == 2){
mov.push(''+i+a)
break
}
else if (matriz[i][a] == turno)
break;
//este
if (j < 6)
if (matriz[i][j+1] == op(turno))
for (var a=j+2; a<=7; a++)
if (matriz[i][a] == 2){
mov.push(''+i+a)
break
}
else if (matriz[i][a] == turno)
break
//noroeste
if (i>1 && j>1)
if (matriz[i-1][j-1] == op(turno))
for (var a=i-2, b=j-2; a>=0,b>=0; a--,b--)
if (matriz[a][b] == 2){
mov.push(''+a+b)
break
}
else if (matriz[a][b] == turno)
break
//noreste
if (i>1 && j<6)
if (matriz[i-1][j+1] == op(turno))
for (var a=i-2,b=j+2; a>=0,b<=7; a--,b++)
if (matriz[a][b]==2){
mov.push(''+a+b)
break
}
else if (matriz[a][b] == turno)
break
//suroeste
if (i<6 && j>1)
if (matriz[i+1][j-1] == op(turno))
for (a=i+2,b=j-2; a<=7,b>=0; a++,b--)
if (matriz[a][b]==2){
mov.push(''+a+b)
break
}
else if (matriz[a][b] == turno)
break
//sureste
if (i<6 && j<6)
if (matriz[i+1][j+1] == op(turno))
for (a=i+2,b=j+2; a<=7,b<=7; a++,b++)
if (matriz[a][b] == 2){
mov.push(''+a+b)
break
}
else if (matriz[a][b] == turno)
break
}
//seleccion movimiento mediante random
document.getElementById("log").innerHTML = mov[Math.floor(Math.random() * mov.length)]