用python写扫雷游戏实例代码分享
作者:laozhang 时间:2023-03-31 05:12:38
扫雷是一个非常经典的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()
如果大家在测试的时候还有任何疑问,可以在下方的留言区讨论,感谢大家对脚本之家的支持。
标签:python,扫雷游戏
0
投稿
猜你喜欢
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2021-03-15 21:55:51
python基础之匿名函数详解
2021-08-23 12:15:18
python实现一组典型数据格式转换
2023-07-14 22:19:04
Python基础详解之列表复制
2022-09-24 02:39:10
python多任务之协程的使用详解
2023-12-29 16:38:23
Python 实现子类获取父类的类成员方法
2022-01-14 00:28:17
TensorFlow Autodiff自动微分详解
2021-06-02 10:33:02
不得不承认:韩国的 Web 设计很唯美
2009-05-13 13:26:00
python后端接收前端回传的文件方法
2023-07-29 04:04:05
Nodejs之TCP服务端与客户端聊天程序详解
2024-05-03 15:55:48
Sublime Text4 配置 Python3 环境、代码提示、编译报错的解决方案
2021-09-24 12:00:03
讲解MySQL数据库字符集出错的解决方法
2008-12-02 14:32:00
pandas中DataFrame修改index、columns名的方法示例
2022-02-14 15:42:37
MySQL时间字段究竟使用INT还是DateTime
2010-03-09 14:46:00
Python学习之yaml文件的读取详解
2023-04-20 14:06:42
MySql超详细讲解表的用法
2024-01-28 02:06:29
使用Python实现图像标记点的坐标输出功能
2022-10-31 16:15:06
运维角度浅谈MySQL数据库优化(李振良)
2024-01-22 17:27:01
基于AJAX技术提高搜索引擎排名
2008-01-24 12:45:00
python3 判断列表是一个空列表的方法
2022-02-03 09:40:07