Skip to content

Commit d745b8b

Browse files
committedOct 8, 2022
Minesweeper_Game
1 parent 9629aef commit d745b8b

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed
 

‎Minesweeper_Game.py

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import random
2+
3+
# Generate a random map to start the game.
4+
def randomMap(n, k):
5+
6+
arr = [[0 for row in range(0,n)] for column in range(0,n)]
7+
8+
for num in range(0,k):
9+
x = random.randint(0,n-1)
10+
y = random.randint(0,n-1)
11+
arr[y][x] = 'X'
12+
13+
if (x >=0 and x <= n-2) and (y >= 0 and y <= n-1):
14+
if arr[y][x+1] != 'X':
15+
arr[y][x+1] += 1 # center right
16+
17+
if (x >=1 and x <= n-1) and (y >= 0 and y <= n-1):
18+
if arr[y][x-1] != 'X':
19+
arr[y][x-1] += 1 # center left
20+
21+
if (x >= 1 and x <= n-1) and (y >= 1 and y <= n-1):
22+
if arr[y-1][x-1] != 'X':
23+
arr[y-1][x-1] += 1 # top left
24+
25+
if (x >= 0 and x <= n-2) and (y >= 1 and y <= n-1):
26+
if arr[y-1][x+1] != 'X':
27+
arr[y-1][x+1] += 1 # top right
28+
29+
if (x >= 0 and x <= n-1) and (y >= 1 and y <= n-1):
30+
if arr[y-1][x] != 'X':
31+
arr[y-1][x] += 1 # top center
32+
33+
if (x >=0 and x <= n-2) and (y >= 0 and y <= n-2):
34+
if arr[y+1][x+1] != 'X':
35+
arr[y+1][x+1] += 1 # bottom right
36+
37+
if (x >= 1 and x <= n-1) and (y >= 0 and y <= n-2):
38+
if arr[y+1][x-1] != 'X':
39+
arr[y+1][x-1] += 1 # bottom left
40+
41+
if (x >= 0 and x <= n-1) and (y >= 0 and y <= n-2):
42+
if arr[y+1][x] != 'X':
43+
arr[y+1][x] += 1 # bottom center
44+
return arr
45+
46+
# Generate the map for the player.
47+
def playerMap(n):
48+
arr = [['-' for row in range(0,n)] for column in range(0,n)]
49+
return arr
50+
51+
# Display the map on the screen.
52+
def showMap(map):
53+
for row in map:
54+
print(" ".join(str(cell) for cell in row))
55+
print("")
56+
57+
# Check if player has won.
58+
def checkWin(map):
59+
for row in map:
60+
for cell in row:
61+
if cell == '-':
62+
return False
63+
return True
64+
65+
# Check if player is willing to continue the game.
66+
def checkContinue(score):
67+
print("Your score: ", score)
68+
isContinue = input("Do you want to try again? (y/n) :")
69+
if isContinue == 'n':
70+
return False
71+
return True
72+
73+
# MINESWEEPER GAME
74+
def Game():
75+
76+
GameStatus = True
77+
while GameStatus:
78+
difficulty = input("Select your difficulty (0,1,2):")
79+
if difficulty.lower() == '0':
80+
n = 5
81+
k = 3
82+
elif difficulty.lower() == '1':
83+
n = 6
84+
k = 8
85+
else:
86+
n = 8
87+
k = 20
88+
89+
minesweeper_map = randomMap(n, k)
90+
player_map = playerMap(n)
91+
score = 0
92+
93+
while True:
94+
95+
if checkWin(player_map) == False:
96+
print("Enter the cell you want to open :")
97+
x,y = map(int,input().split())
98+
x -= 1 # 0 based indexing
99+
y -= 1 # 0 based indexing
100+
if (minesweeper_map[y][x] == 'X'):
101+
print("Game Over!")
102+
showMap(minesweeper_map)
103+
GameStatus = checkContinue(score)
104+
break
105+
else:
106+
player_map[y][x] = minesweeper_map[y][x]
107+
showMap(player_map)
108+
score += 1
109+
110+
else:
111+
showMap(player_map)
112+
print("Congratulation! You Win!")
113+
GameStatus = checkContinue(score)
114+
break
115+
116+
# Main Program
117+
if __name__ == "__main__":
118+
try:
119+
Game()
120+
except KeyboardInterrupt:
121+
print('\nGoodbye!')

0 commit comments

Comments
 (0)
Please sign in to comment.