Python求大神教,急大作业编的扫雷游戏
问题描述:
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)的角落连续分布。