-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMinesweeper
More file actions
107 lines (104 loc) · 4.87 KB
/
Minesweeper
File metadata and controls
107 lines (104 loc) · 4.87 KB
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
import copy
class Solution:
def updateBoard(self, board: List[List[str]], click: List[int]) -> List[List[str]]:
def changewithbomb(board):
maxrow=len(board)
maxcol=len(board[0])
for row in range(maxrow):
for col in range(maxcol):
bomb=0
if(board[row][col]!='M'):
if(row+1<maxrow):#down
if(board[row+1][col]=='M'):
bomb+=1
if(row-1>=0):#up
if(board[row-1][col]=='M'):
bomb+=1
if(col-1>=0):#left
if(board[row][col-1]=='M'):
bomb+=1
if(col+1<maxcol):#right
if(board[row][col+1]=='M'):
bomb+=1
if(row-1>=0 and col+1<maxcol):#upper-right
if(board[row-1][col+1]=='M'):
bomb+=1
if(row-1>=0 and col-1>=0):#upper-left
if(board[row-1][col-1]=='M'):
bomb+=1
if(row+1<maxrow and col+1<maxcol):#lower-right
if(board[row+1][col+1]=='M'):
bomb+=1
if(row+1<maxrow and col-1>=0):#lower-left
if(board[row+1][col-1]=='M'):
bomb+=1
if(bomb>0):
board[row][col]=str(bomb)
return board
def final_call(board,visited,values):
maxrow=len(board)
maxcol=len(board[0])
while(len(values)>0):
#print(visited,values)
x=values.pop(0)
if x not in visited:
row=x[0]
col=x[1]
visited.append([row,col])
if(board[row][col]!='E'):
if([row,col] not in values and [row,col] not in visited):
visited.append([row,col])
else:
if(row+1<maxrow):#down
if([row+1,col] not in values and [row+1,col] not in visited):
values.append([row+1,col])
if(row-1>=0):#up
if([row-1,col] not in values and [row-1,col] not in visited):
values.append([row-1,col])
if(col-1>=0):#left
if([row,col-1] not in values and [row,col-1] not in visited):
values.append([row,col-1])
if(col+1<maxcol):#right
if([row,col+1] not in values and [row,col+1] not in visited):
values.append([row,col+1])
if(row-1>=0 and col+1<maxcol):#upper-right
if([row-1,col+1] not in values and [row-1,col+1] not in visited):
values.append([row-1,col+1])
if(row-1>=0 and col-1>=0):#upper-left
if([row-1,col-1] not in values and [row-1,col-1] not in visited):
values.append([row-1,col-1])
if(row+1<maxrow and col+1<maxcol):#lower-right
if([row+1,col+1] not in values and [row+1,col+1] not in visited):
values.append([row+1,col+1])
if(row+1<maxrow and col-1>=0):#lower-left
if([row+1,col-1] not in values and [row+1,col-1] not in visited):
values.append([row+1,col-1])
return(visited)
row=click[0]
col=click[1]
if(board[row][col]=='M'):
board[row][col]='X'
return board
if(board[row][col]=='E'):
board_org = copy.deepcopy(board)
board_new=changewithbomb(board)
print(board_new)
print(board_org)
visited=final_call(board_new,[],[[row,col]])
# for i in visited:
# row=i[0]
# col=i[1]
# if(board_new[row][col]=='E'):
# board_new[row][col]='B'
# print(board_new)
maxrow=len(board)
maxcol=len(board[0])
for row in range(maxrow):
for col in range(maxcol):
if([row,col] not in visited):
board_new[row][col]=board_org[row][col]
else:
if(board_new[row][col]=='E'):
board_new[row][col]='B'
return(board_new)
# print(visited)