Python中扫雷的递归问题。 怎样点开0周围的0,防止对0周围0做递归时重新又对原来的0进行递归,就无穷了。

Python中扫雷的递归问题。 怎样点开0周围的0,防止对0周围0做递归时重新又对原来的0进行递归,就无穷了。,第1张

如同kaisa1028说的。你把判断过的区域放在list里,每次扫描时检查该点是否已被扫过,如果被扫过应该是出现在list里。如果没有才继续扫。这在递归算法里几乎是必然会做的。不然递归就没有办法跳出来了。

Python调出窗口的那种不会做,但是可以做一个在IDLE里面直接输出的简易扫雷程序,如下:

mine = []

show = []

for i in xrange(10):

mine.append([0] * 10)

show.append(['#'] * 10)

import random,string

for i in xrange(10):

while True:

x = random.randint(0, 9)

y = random.randint(0, 9)

if mine[x][y] == 0:

print x, y

mine[x][y] = 1

break

if True:

for i in xrange(10):

for j in xrange(10):

print mine[i][j],

print

def getX(self):

print('X='),

xRet = raw_input()

while xRet=='' or (False == isNumber(xRet)) or 0>int(xRet):

print 'Input Error,Input again(0-9):'

print('X='),

xRet = raw_input()

return int(xRet)

def getY(self):

print('Y='),

yRet = raw_input()

while yRet=='' or (False == isNumber(yRet)) or 0>int(yRet):

print 'Input Error,Input again(0-9):'

print('Y='),

yRet = raw_input()

return int(yRet)

def isNumber(strVal):

nums = string.digits

for i in strVal:

if i not in nums:

return False

return True

def open_blk(x, y):

n = 0

for i in xrange(x - 1, x + 2):

for j in xrange(y - 1, y + 2):

if i <0 or i >9 or j <0 or j >9:

continue

if mine[i][j] == 1:

n += 1

show[x][y] = str(n)

if n != 0:

return

for i in xrange(x - 1, x + 2):

for j in xrange(y - 1, y + 2):

if i <0 or i >9 or j <0 or j >9:

continue

if show[i][j] == '#':

open_blk(i, j)

print 'start'

while True:

end = True

for i in xrange(10):

for j in xrange(10):

if show[i][j] == '#' and mine[i][j] == 0:

end = False

if end:

break

for i in xrange(10):

print ' '.join(show[i])

if mine[getX(x)][getY(y)] == 1:

print 'you lost'

break

open_blk(x, y)

输入 x/y 选择位置扫雷

本回答非原创,转自开源代码分享,以下是作者信息:

作者:边雪冬

技术支持:冒泡

Email:bxd602@163.com

转载注明出处

希望我的回答能够帮到你,望采纳!

小程序。微信python扫雷小游戏复制链接在小程序,可以直接点击下载。微信(WeChat)是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7205614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存