python扫雷
来源:互联网 发布:在线查看网站js源代码 编辑:程序博客网 时间:2024/05/22 16:42
py2.7版本(py3.5运行不上)
# -*- coding: utf-8 -*-import sysimport randomimport stringclass MineSweeping(): '''扫雷主程序 ''' def __init__(self): '''初始化函式 ''' 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 def getX(self): '''获得x坐标值 @return : 返回x坐标值 @type : int ''' sys.stdout.write('X=') xRet = raw_input() while xRet == '' or (False == self.isNumber(xRet)) \ or 0 > int(xRet) or int(xRet) > self.ROW: print 'Wrong number!(please input 0-7)' sys.stdout.write('X=') xRet = raw_input() return int(xRet) def getY(self): '''获得y坐标值 @return : 返回y坐标值 @type : int ''' sys.stdout.write('Y=') yRet = raw_input() while yRet == '' or (False == self.isNumber(yRet)) \ or 0 > int(yRet) or int(yRet) > self.LINE: print 'Wrong number!(please input 0-7)' sys.stdout.write('Y=') yRet = raw_input() return int(yRet) def isNumber(self, strVal): '''检查是否数值 @param : 需检查的字符串 @type : str ''' nums = string.digits for i in strVal: if i not in nums: return False return True def checkMine(self, xPos, yPos): '''检查输入坐标是否有雷 0-没有地雷;1-有地雷;2-已经清扫 @param 1: x坐标 @type : int @param 2: y坐标 @type : int @return : 0-没有地雷;1-有地雷;2-已经清扫 @rtype : int ''' if 0 == self.xy_list[xPos][yPos]: self.xy_list[xPos][yPos] = 2 return 0 elif 2 == self.xy_list[xPos][yPos]: return 2 else: return 1 def play(self): '''游戏运行函数 ''' self.display(1) self.SCORE = 0 self.iniData() # print self.xy_list while (1): x = self.getX() y = self.getY() while (2 == self.checkMine(x, y)): print 'values of x,y had inputed,please input new values!' x = self.getX() y = self.getY() if 1 == self.checkMine(x, y): self.end() break else: self.display(2) self.SCORE = self.SCORE + 1 def end(self): '''游戏结束函数 ''' self.display(3) print '+======================+' print '+ Game Over +' print '+======================+' print ' Your score is: %d ' % self.SCORE def display(self, kind): '''图形输出函数 @param:1-初始;2-运行;3-结束 @type:int ''' if kind == 1: print '+======================+' print '+ Game Start +' print '+======================+' print '*-----------------*' for i in range(self.LINE): print '| 1 1 1 1 1 1 1 1 |' print '*-----------------*' print 'Please input values of x,y(0-7):' elif kind == 2: # 输出已经清扫位置 print '*-----------------*' for i in range(self.LINE): sys.stdout.write('| ') for k in range(self.ROW): if 2 == self.xy_list[i][k]: sys.stdout.write('0 ') else: sys.stdout.write('1 ') print '|' print '*-----------------*' print 'Please input values of x,y(0-7):' else: # 输出所有的地雷与已经清扫位置 print '*-----------------*' for i in range(self.LINE): sys.stdout.write('| ') for k in range(self.ROW): if 2 == self.xy_list[i][k]: sys.stdout.write('0 ') elif 1 == self.xy_list[i][k]: sys.stdout.write('X ') else: sys.stdout.write('1 ') print '|' print '*-----------------*'if __name__ == '__main__': '''自测试 ''' ms = MineSweeping() while (1): ms.play() print '\n----------------------------------------------' print 'Quit game press \'q\',otherwise press other key!' print '----------------------------------------------' inputVal = raw_input() if 'q' == inputVal: break
参考:
http://blog.sina.com.cn/s/blog_4deeda250100uwcs.html
0 0
- python扫雷
- 完整的扫雷-Python
- 扫雷游戏 python实现
- Python小游戏--扫雷
- 扫雷小游戏-python
- Python小游戏--扫雷
- python写的自动扫雷
- python 写的扫雷游戏
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- 扫雷
- No mapping found for HTTP request with URI
- Android自定义FragmentTabhost之ZzFragmentTabhost
- mac下安装wxpython的简单步骤
- 基于N-gram的双向最大匹配中文分词
- C++程序设计 谭浩强 第二版 习题4.11
- python扫雷
- html——ul、li导航栏居中的两种办法
- jQuery源码阅读笔记(96-283行)
- android应用中去掉标题栏的方法
- 数据库事务的四大特性以及事务的隔离级别
- cocos2d打包安卓.so时候,error: undefined reference to!
- 关于毛玻璃效果的实现
- 关于项目感叹号及报错调试的一点心得
- 抽象类的应用