python实现简易五子棋游戏(控制台版)
作者:"Blue 发布时间:2022-01-14 14:38:30
标签:python,五子棋
本文实例为大家分享了python实现简易五子棋游戏的具体代码,供大家参考,具体内容如下
运行效果:
完整代码+注释:
finish = False # 游戏是否结束
flagNum = 1 # 当前下棋者标记
flagch = '*' # 当前下棋者棋子
x = 0 # 当前棋子的横坐标
y = 0 # 当前棋子的纵坐标
print('---------五子棋游戏(控制台版)---------')
# 棋盘初始化
checkerboard=[]
for i in range(10):
checkerboard.append([])
for j in range(10):
checkerboard[i].append('-')
def msg():
# 输出最后胜利的棋盘
print("\033[1;37;44m--------------------------------")
print(" 1 2 3 4 5 6 7 8 9 10")
for i in range(len(checkerboard)):
print(chr(i + ord('A')) + " ", end=' ')
for j in range(len(checkerboard[i])):
print(checkerboard[i][j] + " ", end=' ')
print()
print("--------------------------------\033[0m")
# 输出赢家
if (flagNum == 1):
print('\033[32m*棋胜利!***\033[0m')
else:
print('\033[32mo棋胜利!***\033[0m')
while not finish:
# 打印棋盘
print("\033[1;30;46m--------------------------------")
print(" 1 2 3 4 5 6 7 8 9 10")
for i in range(len(checkerboard)):
print(chr(i + ord('A')) + " ", end=' ');
for j in range(len(checkerboard[i])):
print(checkerboard[i][j] + " ", end=' ')
print()
print("--------------------------------\033[0m")
# 判断当前下棋者
if flagNum == 1:
flagch = '*'
print('\033[1;37;40m请*输入棋子坐标(例如A1):\033[0m', end=' ') # 白字黑底
else:
flagch = 'o'
print('\033[1;30;42m请o输入棋子坐标(例如J5):\033[0m', end=' ') # 黑字绿底
# 输入棋子坐标
str = input()
ch = str[0] # 获取第一个字符的大写形式
x = ord(ch) - 65
y = int(str[1]) - 1
# 判断坐标是否在棋盘之内
if (x < 0 or x > 9 or y < 0 or y > 9):
print('\033[31m***您输入的坐标有误请重新输入!***\033[0m')
continue
# 判断坐标上是否有棋子
if (checkerboard[x][y] == '-'):
if (flagNum == 1):
checkerboard[x][y] = '*'
else:
checkerboard[x][y] = 'o'
else:
print('\033[31m******您输入位置已经有其他棋子,请重新输入!\033[0m')
continue
# 判断棋子左侧
if (y - 4 >= 0):
if (checkerboard[x][y - 1] == flagch
and checkerboard[x][y - 2] == flagch
and checkerboard[x][y - 3] == flagch
and checkerboard[x][y - 4] == flagch):
finish = True
msg()
# 判断棋子右侧
if (y + 4 <= 9):
if (checkerboard[x][y + 1] == flagch
and checkerboard[x][y + 2] == flagch
and checkerboard[x][y + 3] == flagch
and checkerboard[x][y + 4] == flagch):
finish = True
msg()
# 判断棋子上方
if (x - 4 >= 0):
if (checkerboard[x - 1][y] == flagch
and checkerboard[x - 2][y] == flagch
and checkerboard[x - 3][y] == flagch
and checkerboard[x - 4][y] == flagch):
finish = True
msg()
# 判断棋子下方
if (x + 4 <= 9):
if (checkerboard[x + 1][y] == flagch
and checkerboard[x + 2][y] == flagch
and checkerboard[x + 3][y] == flagch
and checkerboard[x + 4][y] == flagch):
finish = True
msg()
# 判断棋子右上方向
if (x - 4 >= 0 and y - 4 >= 0):
if (checkerboard[x - 1][y - 1] == flagch
and checkerboard[x - 2][y - 2] == flagch
and checkerboard[x - 3][y - 3] == flagch
and checkerboard[x - 4][y - 4] == flagch):
finish = True
msg()
# 判断棋子右下方向
if (x + 4 <= 9 and y - 4 >= 0):
if (checkerboard[x + 1][y - 1] == flagch
and checkerboard[x + 2][y - 2] == flagch
and checkerboard[x + 3][y - 3] == flagch
and checkerboard[x + 4][y - 4] == flagch):
finish = True
msg()
# 判断棋子左上方向
if (x - 4 >= 0 and y + 4 <= 9):
if (checkerboard[x - 1][y + 1] == flagch
and checkerboard[x - 2][y + 2] == flagch
and checkerboard[x - 3][y + 3] == flagch
and checkerboard[x - 4][y + 4] == flagch):
finish = True
msg()
# 判断棋子左下方向
if (x + 4 <= 9 and y + 4 <= 9):
if (checkerboard[x + 1][y + 1] == flagch
and checkerboard[x + 2][y + 2] == flagch
and checkerboard[x + 3][y + 3] == flagch
and checkerboard[x + 4][y + 4] == flagch):
finish = True
msg()
flagNum *= -1; # 更换下棋者标记
来源:https://blog.csdn.net/weixin_61370021/article/details/123761853
0
投稿
猜你喜欢
- ASP与MySQL的连接ASP和MySQL连接目前有两种方法:一种方法是使用MySQLX之类的组件,不过这种连接方法需要支付一定的费用;另外
- 设置cookie每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cooki
- 阅读上一篇:FrontPage2002简明教程三:网页布局 网页的强大之处就在它的超链接,在浏览器中通过点击网页中的超链接,可以很方便地打开
- 终于完成了偶的拖动窗口,花了近15个小时,庆祝一下(*^__^*);以前写了IE下的功能,于是又写了firefox下的功能,在firefox
- PHP程序都要用MYSQL,如果没有MYSQL,就不能用它们.第一:配置数据库信息,改成自己所需的;第二:导入数据库;第三:安装wamp5
- 你是否对获得MySQL改变字符集的实际操作感到十分头疼?不用急,以下的文章将会给你正确的解答方案,以下的文章主要是介绍获得MySQL改变字符
- 以下是服务端代码var HTTPREQUEST_PROXYSETTING_DEFAULT = 0;var&nb
- 如果遇到与文件许可有关的问题,可能数启动mysqld时UMASK环境变量设置得不正确。例如,当你创建表时,MySQL可能会发出下述错误消息:
- 前言在几周前,我开始工作于一个证券投资组合网站。虽然我只能使用 React 完成整个网站,但我决定使用 Go 来创建一个可以处理某些任务(例
- 如何在网页打开时显示“正在加载”之类的信息?代码及说明见下: <% Response.Buffer =
- 概 述 现在有不少介绍利用ASP实现动态分页的文章,方法大同小异,就是每次利用ADO返回原始数据满足条件记录集中的指定
- 前言:书终于完稿了,我也有了一些自己的时间,于是决定将书中讲到的一些比较常见的知识点整理出来,发在Blog里面。当然也不会完全发表出来,毕竟
- 1、find(sub[, start[, end]])在索引start和end之间查找字符串sub找到,则返回最左端的索引值,未找到,则返回
- 一、检测网络信息和系统信息 在Frontpage 2000 的Explorer管理器中选择帮助(Help)|关于Frontpage管理器(A
- session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessio
- 应该是很方便的了,支持几乎所有主流浏览器(ie5,6,7,8;ff;傲游;Opera)已更新至可提交录入内容<script type=
- 举例: 如:在字段名处输入:username,password,email,telphone 注意:不同的字段名用英文逗号隔开,且不支持星号
- 本文实例讲述了Python使用reportlab将目录下所有的文本文件打印成pdf的方法。分享给大家供大家参考。具体实现方法如下:# -*-
- 在进行数据抓取时,经常会遇到IP被限制的情况,常见的解决方案是搭建 * 池,或购买IP代理的服务。除此之外,还有一个另外的方法就是使用家里
- 注意,下述部分主要与DOUBLE和FLOAT列相关,原因在于浮点数的不准确本质。MySQL使用64位十进制数值的精度执行DECIMAL操作,