资源描述:
《python实现的扫雷游戏源码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、样例输出:mine=13length=10OriginMatrix=[]#保存原始地雷矩阵NumberMatrix=[]#保存计算后的数字矩阵StateMatrix=[]#保存矩阵的显示状态#生成地雷矩阵fromrandomimportrandintforiinrange(0,length):temp=[]forjinrange(0,length):temp.append('.');OriginMatrix.append(temp)foriinrange(0,mine):x=randint(0,9)y=randint(0,9)Orig
2、inMatrix[x][y]='*'delrandint#randint不再使用#生成对应的数字矩阵#函数定义,该函数返回某点相邻地雷数(包括自身)defnumber(x,y):counter=0foriin[0,1,-1]:forjin[0,1,-1]:ifx+i<0orx+i>=length:continueelify+j<0ory+j>=length:continueelifOriginMatrix[x+i][y+j]!='*':continueelse:counter+=1returncounter#计算forxinrange
3、(0,length):temp=[]foryinrange(0,length):temp.append(number(x,y))NumberMatrix.append(temp)#剔除地雷点(将其相邻地雷数设为9,表示该点为地雷)foriinrange(0,length):forjinrange(0,length):ifOriginMatrix[i][j]=='*':NumberMatrix[i][j]=9delOriginMatrix#OriginMatrix不再使用#定义一些用到的函数#显示函数,用于显示矩阵fromosimpor
4、tsystemdefdisplay(verdict):#verdict参数用于在挖中地雷时显示地雷system('cls')temp=''foriinrange(0,length):temp+=(str(i)+'')print(temp)foriinrange(0,length):temp=str(i)+''forjinrange(0,length):ifNumberMatrix[i][j]==9andnotverdict:temp+='*'continueifStateMatrix[i][j]:ifNumberMatrix[i][j
5、]==0:temp+=''else:temp+=(str(NumberMatrix[i][j])+'')else:temp+='■'print(temp)#剔除函数,用于剔除显而易见的不为地雷的位置CheckSet=set()defopenWhile(x,y):if(x,y)inCheckSet:returnelifNumberMatrix[x][y]>1:returnelse:StateMatrix[x][y]=TrueCheckSet.add((x,y))#与0相邻的都显示ifNumberMatrix[x][y]==0:forii
6、n[-1,0,1]:forjin[-1,0,1]:ifx+i>=0andx+i=0andy+j=0:openWhile(x-1,y)ify-1>=0:openWhile(x,y-1)ifx+17、emp.append(e.copy())foriinrange(0,length):forjinrange(0,length):ifNumberMatrix[i][j]==9:temp[i][j]=Trueforiinrange(0,length):forjinrange(0,length):ifnottemp[i][j]:returnTruereturnFalse#下面开始游戏#初始化StateMatrixforiinrange(0,length):temp=[]forjinrange(0,length):temp.append(F
8、alse)StateMatrix.append(temp)#Mainpartofthegamewhileestimate():display(True)x=int(input('Inputrownumber:'))y=i