self.ROW = 8
self.LINE = 8
self.SCORE = 0 #掃雷得分
self.MineNum = 15 #地雷總數
self.xy_list= [[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]]
def iniData(self):
'''x,y坐標初始狀態值函數
0-沒有地雷;1-有地雷
'''
#游戲開始前所有數值歸零
for l in range(self.LINE):
for r in range(self.ROW):
self.xy_list[l][r]= 0
Max = self.MineNum
for x in range(self.LINE):
for y in range(self.ROW):
if 0 > Max:
self.xy_list[x][y]= 0
else:
#為了增加地雷分布范圍,選擇0到4隨機數
if 1 == random.randint(0,4):
self.xy_list[x][y]= 1
Max = Max - 1
求解釋一下
這個有注釋很好理解啊!
for x in range(self.LINE):
for y in range(self.ROW):
if 0 > Max:
self.xy_list[x][y]= 0
else:
#為了增加地雷分布范圍,選擇0到4隨機數
if 1 == random.randint(0,4):
self.xy_list[x][y]= 1
Max = Max - 1
這段代碼 range(5) # 0,1,2,3,4; 你這裡是8即0至7;用來生成一個等差數組,作為標記地雷的二維數組的下標
if Max < 0 是判斷雷有沒有布晚,如果沒有布完則繼續布雷,沒有雷則賦0值。
這段判斷寫的不是很好,可以替換一下
if MAX > 0:
if 1 == random.randint(0,4):
self.xy_list[x][y]= 1
Max = Max - 1
else:
break;
畢竟在一開始將所有的值都賦成0了,這裡沒必要重復。
``` if 1 == random.randint(0,4):
self.xy_list[x][y]= 1
Max = Max - 1
這個使用 該判斷是為了將地雷分散開來不至於都(0,0)的角落連續分布。