用python写扫雷游戏实例代码分享
作者:laozhang 发布时间:2023-03-31 05:12:38
标签:python,扫雷游戏
扫雷是一个非常经典的WIN游戏,我们教给大家用python语言来写出这个游戏,以下是全部实例代码:
#!/usr/bin/python
#coding:utf-8
#python 写的扫雷游戏
import sys
import random
class MineSweeping():
#扫雷主程序
def __init__(self,row = 8 ,line= 8,mineNum = 15):
self.row = row
self.line = line
self.score = 0 #分数
self.mineNum = mineNum
self.xy_list = [[0 for i in range(self.line)] for i in range(self.row)]
def initData(self):
# 初始化状态值
# 游戏开始的时候状态值为清零(再重新设置状态值)
self.xy_list = [[0 for i in range(self.line)] for i in range(self.row)]
# 设置雷的数量
maxMine = self.mineNum
while maxMine > 0 :
num_x = random.randint(0,self.row-1)
num_y = random.randint(0,self.line-1)
if self.xy_list[num_x][num_y] == 0:
self.xy_list[num_x][num_y] = 1
maxMine -= 1
#获取x坐标
def get_pos(self,str_pos):
#获取x坐标
while 1:
try:
num_x = raw_input(str_pos)
if int(num_x) in range(self.line) and num_x :
break
else:
print u'输入无效值'
except:
pass
return int(num_x)
#进行扫雷
def mine_clear(self,x,y):
# 设置显示进行扫过的数目
# 设置数字
# 0 表示扫过的雷
# 1 表示类
# 2 表示扫过的类
#获取坐标的数字
pos = self.xy_list[x][y]
if pos == 0 :
self.xy_list[x][y] = 2
return 0
elif pos == 2 :
return 2
else:
return 1
#界面的显示
def mineFace(self,state):
#显示界面的内容
#设置游戏的状态
#1 表示运行的状态
#2 表示输出的状态
#3 表示游戏结束的状态
#4 表示游戏获得了完胜
if state == 1:
print '+=================+'
print ' Game start '
print '+=================+'
tt = ' #'
print '**************************'
for i in range(self.line):
str_t = ''
for t in xrange(self.row):
str_t += tt
print "|%s|"%(str_t,)
print '**************************'
print 'Please input values of x,y(0-7):'
#刷新用户界面
if state == 2:
tt = ' #'
print '**************************'
for i in range(self.line):
str_t = ''
for t in xrange(self.row):
if self.xy_list[i][t] == 2:
str_t += str(self.xy_list[i][t]).rjust(2)
else:
str_t += tt
print "|%s|"%(str_t,)
print '**************************'
if state == 3:
print '**************************'
for i in range(self.line):
str_t = ''
for t in xrange(self.row):
if int(self.xy_list[i][t]) != 1:
str_t += ' 2'
else:
str_t += ' *'
print "|%s|"%(str_t,)
print '**************************'
if state == 4:
tt = ' #'
print '**************************'
for i in range(self.line):
str_t = ''
for t in xrange(self.row):
if self.xy_list[i][t] == 2:
str_t += str(self.xy_list[i][t]).rjust(2)
else:
str_t += ' @'
print "|%s|"%(str_t,)
print '**************************'
def MainLoop(self):
#创建游戏主循环
#创建界面的运行
self.mineFace(1)
self.score = 0
self.initData()
#print self.xy_list
# 进入主循环
while 1:
#获取坐标的位置
x = self.get_pos(' X = ')
y = self.get_pos(' Y = ')
num = self.mine_clear(x,y)
#判断是不过的了完胜
win = True
for i in self.xy_list:
if 0 in i:
win = False
break
if win:
num = 4
#执行刷新界面的函数
if num == 0:
self.mineFace(2)
self.score += 10
elif num == 2:
print u'这个位置已经被排过了,证实没有雷'
elif num == 1:
print '+=================+'
print ' Game over '
print '+=================+'
print u'分数 : ', self.score
self.mineFace(3)
# 是不是进行下一句
next = raw_input(u'是够进行下一局:Y or N ')
if next.upper().startswith('Y'):
print u'下一局开始'
self.nextGame()
else:
print '>>> Game exit'
break
else:
self.score += 10
print u'恭喜您获得的完全的胜利'
print u'分数 : ', self.score
self.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.score = 0
self.initData()
if __name__ == '__main__':
mi = MineSweeping(10,10,20)
mi.MainLoop()
sys.exit()
如果大家在测试的时候还有任何疑问,可以在下方的留言区讨论,感谢大家对脚本之家的支持。
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 本文实例讲述了python二分法查找算法实现方法。分享给大家供大家参考,具体如下:二分法查找二分查找又称折半查找,优点是比较次数少,查找速度
- 在使用element-ui的时候,有一个常用的组件,那就是el-popover,但是element-ui官方文档中样式跟用法都比较局限,在使
- 项目介绍背景:DC竞赛比赛项目,运用回归模型进 * 价预测。数据介绍:数据主要包括2014年5月至2015年5月美国King County的房
- 如下所示:#获取一个值在某个区间的指定倍数的值方法#1# print([i for i in range(1,101) if i%5==0]
- 前言大家好,我是辣条今天给大家带来几个实用的python脚本工具,原因不难猜这段时间我亲爱的女朋友呢给我整出点小花样,差点让我电脑GG了。我
- 这篇文章主要介绍了Python sqlite3查询操作过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- USE Demo GO /* 将表Code的列String中的值提取放到Record表中 String 中字符类型为 dsddddd,222
- webpack.config.js文件通常放在项目的根目录中,它本身也是一个标准的Commonjs规范的模块。var webpack = r
- Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。这篇文章使用tk
- 初学python,小缘缘出了几道题: 有一 list a = [1, 2, 3, 4, 5, 6] 请将 a 依 0, 1 1, 2 2,
- 本文主要分享了关于在python中实现一个简单的文件浏览器的代码示例,代码及展示如下。#!/usr/bin/env python# -*-
- 初学python,抓取搜狗微信公众号文章存入mysqlmysql表:代码:import requestsimport jsonimport
- 前言字符串作为一种重要的Python基本数据类型,在数据处理中发挥着不可或缺的作用,如果对它的方法能够灵活使用,能够达到事半功倍的效果。下面
- 本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作。安装首先,要使用Python的SDK必须要先安
- python中xmltodict使用xml转换成OrderedDict代码 :import xmltodictfrom pprin
- 拿到需求之后,发现这两个网站的MYSQL数据库都不能远程访问(安全第一吧)。于是想起了 平时使用的CSV文件批量录入数据。于是 尝试使用CS
- SQL SERVER数据存储的形式在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小
- 本文主要分享基于python的数据分析三方库pandas,numpy的一次爬坑经历,发现并分析了python语言对于浮点数精度处理不准确的问
- 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Ser
- SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办。以下是笔者以前的笔记。仅适用于非master