扫雷 python

实习入职第一周要求从 c 转 python,leader 给我一个任务 用 python 写个扫雷的游戏
代码如下:

#!/usr/bin/python
# coding:utf-8# python 写的扫雷游戏 控制台程序import sys
import random#  -3 代表没有翻开过
#   >= 0 代表已经扫描
#  -1 表示雷class CMineSweeping:# 扫雷初始化def __init__(self, row = 8, line = 8, mineNum = 15):# 结构体 行 列 雷的个数self.m_row = row         # 行self.m_line = line        # 列self.m_score = 0          # 得分self.m_mineNum = mineNum  # 雷的数量self.m_xy_list = [[-3 for i in range(self.m_line)] for i in range(self.m_row)]  # 需要修改def initData(self):# 初始化状态值# 偷袭开始状态值清零self.m_xy_list = [[-3 for i in range(self.m_line)] for i in range(self.m_row)]  # 需要修改# 埋雷maxMine = self.m_mineNumwhile maxMine > 0:num_x = random.randint(0, self.m_row - 1)num_y = random.randint(0, self.m_line - 1)if self.m_xy_list[num_x][num_y] == -3:  # 需要修改self.m_xy_list[num_x][num_y] = -1   # 需要修改maxMine -= 1# 获取 (X,Y) 坐标def get_Pos(self, str_pos):while 1:try:num_x = raw_input(str_pos)#if num_x and 0 <= int(num_x) < LEN(self.line)  :if int (num_x) in range (self.m_line) and num_x:breakelse:print u'输入无效值'except:passreturn int(num_x)# 获取周围 8 个方向雷的个数def get_Minecnt(self ,x , y):cnt = 0for i in range(x - 1,x + 2):for j in xrange(y - 1,y + 2):if i >= 0 and i < self.m_row and j >= 0 and j < self.m_line and self.m_xy_list[i][j] == -1:cnt +=1#  print ("cnt:",cnt)return int(cnt)def mine_clear(self, x, y):pos = self.m_xy_list[x][y]m = xn = y#print("comes")if pos == -3:      #没有翻开过self.m_xy_list[x][y] =   self.get_Minecnt(m , n)return 0elif pos == -1:     # 表示雷return 1        # 雷直接 g 了elif pos >= 0:return 2        # 已经翻开过了# 界面的显示def mineFace(self, state):# 显示界面内容# 显示游戏状态# 1 表示最开始的状态# 2 表示正常扫雷输出状态# 3 表示游戏结束状态# 4 表示获取了完胜if state == 1:print '================+'print '    Game start  'print '====================='tt = ' #'print '**************************'for i in range(self.m_line):str_t = ''for t in xrange(self.m_row):str_t += ttprint "|%s|" % (str_t,)print '**************************'print 'Please input values of x,y(0-7):'# 刷新用户界面if state == 2:tt = ' #'print '**************************'for i in range(self.m_line):str_t = ''for t in xrange(self.m_row):if self.m_xy_list[i][t] >= 0: # 这个表示已经打开的str_t += str(self.m_xy_list[i][t]).rjust(2)else:str_t += tt             # 没有打开的 都用 这个print "|%s|" % (str_t,)print '**************************'if state == 3:print '**************************'for i in range(self.m_line):str_t = ''for t in xrange(self.m_row):if int(self.m_xy_list[i][t]) == -1:str_t += ' *'else:str_t += ' ' + str(self.get_Minecnt(i,t))print "|%s|" % (str_t,)print '**************************'if state == 4:tt = ' #'print '**************************'for i in range(self.m_line):str_t = ''for t in xrange(self.m_row):if self.m_xy_list[i][t] >= 0:str_t += str(self.m_xy_list[i][t]).rjust(2)else:str_t += ' @'print "|%s|" % (str_t,)print '**************************'def MainLoop(self):# 创建游戏主循环# 创建界面的运行self.mineFace(1)self.m_score = 0self.initData()# print self.xy_list# 进入主循环while 1:# 获取坐标位置x = self.get_Pos(' X = ')y = self.get_Pos(' Y = ')num = self.mine_clear(x, y)# 判断是不过的了完胜win = Truefor i in self.m_xy_list:if -3 in i:win = Falsebreakif win:num = 4# 执行刷新界面的函数if num == 0:self.mineFace(2)self.m_score += 10elif num == 2:print u'这个位置已经被排过了,证实没有雷'elif num == 1:print '+=================+'print '   Game over  'print '+=================+'print u'分数: ', self.m_scoreself.mineFace(3)# 是不是进行下一一局next = raw_input(u'是够进行下一局:Y or N ')if next.upper().startswith('Y'):print u'下一局开始'self.nextGame()else:print '>>> Game exit'breakelse:self.m_score += 10print u'恭喜您获得的完全的胜利'print u'分数:',self.m_scoreself.mineFace(4)next = raw_input(u'是否进行下一局: Y or N ')if next.upper().startswith('Y'):print u'下一局开始'self.nextGame()else:print '>>> Game exit'break# 下一局初始化信息def nextGame(self):self.mineFace(1)self.m_score = 0self.initData()if __name__ == '__main__':mi = CMineSweeping(8, 8, 15)mi.MainLoop()sys.exit()

扫雷 python2.7 控制台相关推荐

  1. 简易扫雷游戏c语言程序,C++实现简单的扫雷游戏(控制台版)

    C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游 ...

  2. WebView显示网页出现Uncaught TypeError: Cannot call method 'getItem' of null异常

    查看全文 http://www.taodudu.cc/news/show-4476866.html 相关文章: 微信开发隐藏网页右上角按钮与底部导航栏 dialog出现Uncaught RangeEr ...

  3. 同一个电脑可安装多个python版本吗_同一台电脑安装不同版本的python(python2.7和python3.7)...

    先安装的是python2.7 而后又安装的python3.7版本,如同python2.7升级后,也自带这pip,所以就不用像网上那么麻烦. 第一步 安装python2.7,选择增加到环境变量==> ...

  4. java扫雷答辩ppt_C语言扫雷答辩.ppt

    C语言扫雷答辩 程序设计:基于C++语言的扫雷游戏 答辩学生:02,03 王佳 王想 包嘉琪 1 2 3 4 课题介绍 问题与分工 课题内容 成果展示 论 文 概 述 扫雷游戏介绍: 扫雷是一款相当大 ...

  5. Python3列表推导不会再有变量泄露的问题

    Python2.X中,在列表推导中for关键词之后的赋值操作可能会影响列表推导上下文中的同名变量.像下面这个Python2.7控制台对话: >>> x = "my prec ...

  6. Python3环境通过Pip install安装mitmproxy

    现有情况: Windows,在Python2.7版本中通过pip install安装过低版本的mitmproxy,现需要在最新的Python3.7里通过Pip install安装mitmproxy. ...

  7. 用java在控制台实现扫雷

    最近也是学完了Java基础部分,想找点项目练练,结果发现什么都不会,什么都做不出来,和朋友聊天聊到这方面,听他的建议可以写个扫雷,虽然只是在控制台实现,但是好歹也是能运行出来的. 首先编写一个地图类: ...

  8. java控制台扫雷_java实现扫雷游戏控制台版

    本文实例为大家分享了java实现扫雷游戏控制台版,供大家参考,具体内容如下 扫雷游戏 a.游戏的分析 在游戏中需要存在对象包含哪些. 格子对象(grid): 属性:内容(content).状态(typ ...

  9. java扫雷雷区的统计数据代码_java实现扫雷游戏控制台版

    本文实例为大家分享了java实现扫雷游戏控制台版,供大家参考,具体内容如下 扫雷游戏 a.游戏的分析 在游戏中需要存在对象包含哪些. 格子对象(Grid): 属性:内容(content).状态(typ ...

最新文章

  1. js 对象转json,json转对象
  2. 分布式任务分发框架Gearman测试、性能监控、队列持久化【python 实例】
  3. 在一个成熟的分布式系统中 如何下手做高可用?
  4. Java连接数据库出现java.sql.SQLException: After end of result set的原因
  5. VTK:Points之ExtractSurface
  6. IDEA将Maven项目中src源代码下的xml配置文件编译进classes
  7. 五、Vue模块化开发学习笔记——JavaScript原始功能、匿名函数的解决方案、使用模块作为出口、CommonJS、ES6 export和import的使用
  8. asn1 pem pfx格式证书_Linux使用openssl管理自签名证书保障网络安全
  9. 软件唯有开源才是出路?
  10. 如何用运营思维,搭建会员运营体系
  11. 实验室计算机远程访问设置(Teamviewer+Frp)
  12. 用C语言对一元二次方程求解
  13. 双11中奖名单公布啦
  14. HEIF图像编码标准-python读取HEIF图像
  15. Stanford Corenlp中文分词自定义词典(扩展词典)
  16. Kotlin系列——构造函数精讲
  17. c语言容易挂科吗,盘点大学里“易挂科”的那些科目,一次不过,可能面临次次不过...
  18. 苏轼不知月亮上是何年何月 | Python计算出来了
  19. 用IDEA进行Java后台开发(三)
  20. openwrt 设置旁路由

热门文章

  1. FZU2129 子序列总数 去重
  2. win7原版镜像_win10如何退回win7系统
  3. 社保html源码,社保查询.html
  4. 《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》论文笔记
  5. 驱动力3.0,动力全开~
  6. JAVA usb发卡器_USB模拟键盘输出发卡器
  7. Java面试题日积月累(JavaSE40道)
  8. Mysql语句+Linux指令一步入门
  9. PYQT 按钮样式设置
  10. 比赛的心得和感想--邱波