Skip to content

Commit 3522ec2

Browse files
committed
add the main function
the init function had done; but not quickly!!!!!
1 parent 4864793 commit 3522ec2

File tree

1 file changed

+204
-0
lines changed

1 file changed

+204
-0
lines changed

扫雷/index.js

+204
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
//放雷
2+
3+
//初始化大小数组
4+
function makeinitarray(num,lei){
5+
var arr = [];
6+
arr[lei-1] = void 0;
7+
arr.fill(1);
8+
arr = arr.concat((new Array(num-lei)).fill(0));
9+
return arr;
10+
}
11+
// console.log(makeinitarray(16,5))
12+
// 随机处理数组数据
13+
function random_arr(arr){
14+
var temp,rand,len,i;
15+
len = arr.length;
16+
for(i = 0;i<len;i++){
17+
rand = Math.floor(Math.random()*(i+1));
18+
if(rand!==i){
19+
temp = arr[i];
20+
arr[i] = arr[rand];
21+
arr[rand] = temp;
22+
}
23+
}
24+
return arr ;
25+
}
26+
// var a = calc(initlei(random_arr(makeinitarray(16,3))));
27+
var arr = makeinitarray(16,3);
28+
var ramdom = random_arr(arr);
29+
var init = initlei(arr);
30+
// var a = calc(init);
31+
// console.log(render(a),a)
32+
a = [ [ { value: 1, show: false },
33+
{ value: 1, show: false },
34+
{ value: 1, show: false },
35+
{ value: 1, show: false } ],
36+
[ { value: 1, show: false },
37+
{ value: 1, show: false },
38+
{ value: 2, show: false },
39+
{ value: 2, show: false } ],
40+
[ { value: 0, show: false },
41+
{ value: 0, show: false },
42+
{ value: 2, show: false },
43+
{ value: 2, show: false } ],
44+
[ { value: 0, show: false },
45+
{ value: 0, show: false },
46+
{ value: 1, show: false },
47+
{ value: 1, show: false } ] ];
48+
a = cailei(3,0,a);
49+
setTimeout(()=>{
50+
console.log(render(a))
51+
})
52+
53+
// 初始化埋雷操作。
54+
function initlei(arr){
55+
var cache = [],len,i,num;
56+
var arrlen = Math.sqrt(arr.length);
57+
var len = arr.length;
58+
for(i=0;i<len;i++){
59+
num = Math.floor(i/arrlen);
60+
if(!cache[num]){
61+
cache[num] = [];
62+
}
63+
cache[num][i%arrlen] = arr[i];
64+
}
65+
return cache;
66+
}
67+
function quyudefen(x,y,arr){
68+
var len = arr.length;
69+
var rowlen = arr[0].length;
70+
var start = {
71+
x:Math.max(x-1,0),
72+
y:Math.max(y-1,0)
73+
}
74+
var end = {
75+
x:Math.min(x+1,rowlen-1),
76+
y:Math.min(y+1,len-1)
77+
}
78+
var sum = 0;
79+
var num = 0;
80+
// console.log('------------',start,end,'-------------')
81+
for(var i = start.x;i<=end.x;i++){
82+
for(var j = start.y;j<=end.y;j++){
83+
// console.log(i,j)
84+
sum += Number(arr[i][j]['value'])
85+
num++
86+
}
87+
}
88+
// console.log(x,y,num,sum,start,end,arr[0][0])
89+
return {
90+
value:sum,
91+
show:false
92+
};
93+
}
94+
function calc(arr){
95+
var cache = arr.slice();
96+
var len = arr.length;
97+
var rowlen = arr[0].length;
98+
cache = cache.map((v)=>{
99+
return v.map((v)=>{
100+
return {
101+
show:false,
102+
value:v
103+
}
104+
})
105+
})
106+
a = JSON.parse(JSON.stringify(cache))
107+
108+
cache = cache.map((vss,i,obj)=>{
109+
return vss.map((vv,index)=>{
110+
return quyudefen(index,i,a)
111+
})
112+
});
113+
return cache;
114+
115+
// var start = {x:0,y:0}
116+
// var end = {x:rowlen,y:len}
117+
// quyudefen
118+
119+
}
120+
// console.log(calc(initlei(random_arr(makeinitarray(36,6)))));
121+
// 填充站点
122+
function calclei(arr){
123+
// var a = makeinitarray();
124+
// var arr = initlei(random_arr(a));
125+
var cache = [],len = arr.length;
126+
// console.log(arr);
127+
var cc = count(arr);
128+
cc.len = arr.length;
129+
for(var c = 0;c<len;c++){
130+
cache[c]=[];
131+
for(var d = 0;d<len;d++){
132+
cache[c][d] = cc(c,d);
133+
}
134+
}
135+
// console.log('\n')
136+
// console.log(cache);
137+
return cache;
138+
}
139+
function count(arr){
140+
var arr = arr;
141+
return function foo(i,j){
142+
var num = 0;
143+
if(arr[i][j]){
144+
return 999;
145+
}
146+
for(var z = i-1;z<=i+1;z++){
147+
for(var y = j-1;y<=j+1;y++){
148+
if(z>=0&&y>=0&&y<foo.len&&z<foo.len){
149+
if(arr[z][y]){
150+
num++;
151+
}
152+
}
153+
}
154+
}
155+
return num;
156+
}
157+
}
158+
// calclei();
159+
160+
function render(arr)
161+
{
162+
console.log(arr)
163+
return arr.map((v,index)=>{
164+
return v.reduce((a,b)=>{
165+
if(b['show']&&b['value']==0){
166+
return `${a} x`
167+
}
168+
if(b['show']){
169+
// return `${a}<td>m</td>`
170+
return `${a} ${b['value']}`
171+
}
172+
return `${a} @`;
173+
},'')
174+
}).join('\n');
175+
// return html;
176+
}
177+
178+
function cailei(x,y,arr){
179+
var len = arr.length;//4
180+
var rowLen = arr[0].length;//4
181+
var start = {
182+
x:Math.max(x-1,0),
183+
y:Math.max(y-1,0)
184+
}
185+
var end = {
186+
x:Math.min(x+1,rowLen-1),
187+
y:Math.min(y+1,len-1)
188+
}
189+
if(arr[x][y]['value']!==0){
190+
arr[x][y]['show'] = true;
191+
return arr;
192+
}
193+
for(var i = start.x;i<=end.x;i++){
194+
for(var j = start.y;j<=end.y;j++){
195+
// console.log('===---====')
196+
if(arr[i][j]['value'] == 0 && arr[i][j]['show'] === false&& i!=x&&j!=y){
197+
cailei(i,j,arr);
198+
}else{
199+
arr[i][j]['show'] = true;
200+
}
201+
}
202+
}
203+
return arr;
204+
}

0 commit comments

Comments
 (0)