⽤python写扫雷游戏实例代码分享扫雷是⼀个⾮常经典的WIN游戏,我们教给⼤家⽤python语⾔来写出这个游戏,以下是全部实例代码:#!/usr/bin/python
#coding:utf-8
#python 写的扫雷游戏
import sys
import random
class MineSweeping():
#扫雷主程序
def __init__(self,row = 8 ,line= 8,mineNum = 15):
self.line = line
self.score = 0 #分数
self.mineNum = mineNum
<_list = [[0 for i in range(self.line)] for i in w)]
def initData(self):
# 初始化状态值
# 游戏开始的时候状态值为清零(再重新设置状态值)
<_list = [[0 for i in range(self.line)] for i in w)]
# 设置雷的数量
maxMine = self.mineNum
while maxMine > 0 :
num_x = random.randint(w-1)
num_y = random.randint(0,self.line-1)
_list[num_x][num_y] == 0:
<_list[num_x][num_y] = 1
maxMine -= 1
#获取x坐标
def get_pos(self,str_pos):
#获取x坐标
while 1:
try:
num_x = raw_input(str_pos)
if int(num_x) in range(self.line) and num_x :
break
else:
print u'输⼊⽆效值'
except:
pass
return int(num_x)
#进⾏扫雷
def mine_clear(self,x,y):
# 设置显⽰进⾏扫过的数⽬
# 设置数字
# 0 表⽰扫过的雷
# 1 表⽰类
# 2 表⽰扫过的类
#获取坐标的数字
pos = _list[x][y]
if pos == 0 :
<_list[x][y] = 2
return 0
elif pos == 2 :
return 2
else:
return 1
#界⾯的显⽰
def mineFace(self,state):
#显⽰界⾯的内容
#设置游戏的状态
#1 表⽰运⾏的状态
#2 表⽰输出的状态
#3 表⽰游戏结束的状态
#4 表⽰游戏获得了完胜
if state == 1:
print '+=================+'
print '  Game start  '
print '+=================+'
tt = ' #'
print '**************************'
for i in range(self.line):
str_t = ''
for t in w):
str_t += tt
print "|%s|"%(str_t,)
print '**************************'
print 'Please input values of x,y(0-7):'    #刷新⽤户界⾯
if state == 2:
tt = ' #'
print '**************************'
for i in range(self.line):
str_t = ''
for t in w):
_list[i][t] == 2:
str_t += _list[i][t]).rjust(2)          else:
str_t += tt
print "|%s|"%(str_t,)
print '**************************'
if state == 3:
print '**************************'
for i in range(self.line):
str_t = ''
for t in w):
if _list[i][t]) != 1:
str_t += ' 2'
else:
str_t += ' *'
print "|%s|"%(str_t,)
print '**************************'
if state == 4:
tt = ' #'
print '**************************'
for i in range(self.line):
str_t = ''
for t in w):
_list[i][t] == 2:
str_t += _list[i][t]).rjust(2)          else:
str_t += ' @'
print "|%s|"%(str_t,)
print '**************************'
def MainLoop(self):
#创建游戏主循环
#创建界⾯的运⾏
self.mineFace(1)
self.score = 0
self.initData()
#_list
# 进⼊主循环
while 1:
#获取坐标的位置
x = _pos(' X = ')
y = _pos(' Y = ')
num = self.mine_clear(x,y)
#判断是不过的了完胜
win = True
for i _list:
if 0 in i:
win = False
break
if win:
num = 4
#执⾏刷新界⾯的函数
if num == 0:
self.mineFace(2)
self.score += 10
elif num == 2:
print u'这个位置已经被排过了,证实没有雷'
elif num == 1:
print '+=================+'
print '  Game over  '
print '+=================+'
print u'分数 : ', self.score
self.mineFace(3)
# 是不是进⾏下⼀句
next = raw_input(u'是够进⾏下⼀局:Y or N ')
if next.upper().startswith('Y'):
print u'下⼀局开始'
else:
print '>>> Game exit'
python可以做什么游戏break
else:
self.score += 10
print u'恭喜您获得的完全的胜利'
print u'分数 : ', self.score
self.mineFace(4)
next = raw_input(u'是够进⾏下⼀局:Y or N ')
if next.upper().startswith('Y'):
print u'下⼀局开始'
else:
print '>>> Game exit'
break
# 下⼀局初始化信息
def nextGame(self):
self.mineFace(1)
self.score = 0
self.initData()
if __name__ == '__main__':
mi = MineSweeping(10,10,20)
mi.MainLoop()
如果⼤家在测试的时候还有任何疑问,可以在下⽅的留⾔区讨论,感谢⼤家对的⽀持。