(Python)五子棋
【问题描述】
已知两人分别执白棋和黑棋在一个围棋棋盘上下五子棋,若同一颜色的棋子在同一条横行、纵行或斜线上连成5个棋子,则执该颜色棋子的人获胜。编写程序读入某一时刻下棋的状态,并判断是否有人获胜。
输入的棋盘大小是19×19,用数字0表示空位置(即没有棋子),用数字1表示该位置下了一白色棋子,用数字2表示该位置下了一黑色棋子。假设同一颜色的棋子在同一条横行、纵行或斜线上连成的棋子个数不会超过5个,并且最多有一人连成线的棋子个数为5。
【输入形式】
从控制台输入用来表示棋盘状态的数字0、1或2;每行输入19个数字,各数字之间以一个空格分隔,每行最后一个数字后没有空格;共输入19行表示棋盘状态的数字。
【输出形式】
若有人获胜,则先输出获胜人的棋子颜色(1表示白色棋子,2表示黑色棋子),然后输出英文冒号:,最后输出连成5个棋子连线的起始位置(棋盘横行自上往下、纵行自左往右从1开始计数,横行最小的棋子在棋盘上的横行数和纵行数作为连线的起始位置,两数字之间以一个英文逗号,作为分隔符)。
若没有人获胜,则输出英文字符串:No。
无论输出什么结果,最后都要有回车换行符。
【输入样例1】
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 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 2 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 2 0 1 1 2 0 0 0 0 0 0 0
0 0 0 0 0 2 1 1 1 1 2 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 1 2 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 2 2 0 0 0 0 0 0 0 0
0 0 0 0 0 2 0 1 0 0 2 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 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 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
【输出样例1】
1:9,8
【输入样例2】
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 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 0 0 0 0 0
0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 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 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 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
【输出样例2】
No
【样例说明】
在输入的样例1中,执白棋(数字1表示)的人已经获胜,连成5个棋子的起始位置在第9行第8列,所以输出1:9,8。
在输入的样例2中,还没有同一颜色的棋子连成5个,所以无人获胜,直接输出No。
实现代码:
flag = 0
checkerboard = []for i in range(19):checkerboard.append(input().split())for i in range(19):for j in range(19):if checkerboard[i][j] != '0':if j + 1 < 19 and j + 2 < 19 and j + 3 < 19 and j + 4 < 19:if checkerboard[i][j] == checkerboard[i][j + 1] == checkerboard[i][j + 2] == checkerboard[i][j + 3] == \checkerboard[i][j + 4]:print(checkerboard[i][j] + ':' + str(i + 1) + ',' + str(j + 1))flag = 2if i + 1 < 19 and i + 2 < 19 and i + 3 < 19 and i + 4 < 19:if checkerboard[i][j] == checkerboard[i + 1][j] == checkerboard[i + 2][j] \== checkerboard[i + 3][j] == checkerboard[i + 4][j]:print(checkerboard[i][j] + ':' + str(i + 1) + ',' + str(j + 1)) flag = 1if i + 1 < 19 and j + 1 < 19 and i + 2 < 19 and j + 2 < 19 and i + 3 < 19 and j + 3 < 19 and i + 4 < 19 and j + 4 < 19:if checkerboard[i][j] == checkerboard[i + 1][j + 1] == checkerboard[i + 2][j + 2] == \checkerboard[i + 3][j + 3] == checkerboard[i + 4][j + 4]:print(checkerboard[i][j] + ':' + str(i + 1) + ',' + str(j + 1))flag = 1if i + 1 < 19 and j - 1 > -1 and i + 2 < 19 and j - 2 > -1 and i + 3 < 19 and j - 3 > -1 and i + 4 < 19 and j - 4 > -1:if checkerboard[i][j] == checkerboard[i + 1][j - 1] == checkerboard[i + 2][j - 2] \== checkerboard[i + 3][j - 3] == checkerboard[i + 4][j - 4]:print(checkerboard[i][j] + ':' + str(i + 1) + ',' + str(j + 1))flag = 1if flag == 0:print("No")
运行结果:
(Python)五子棋相关推荐
- 简单的Python五子棋
一个简单的 Python 五子棋 初学Python,设计了一款简单的五子棋游戏.水平有限,欢迎批评指正 代码详见: https://gitee.com/liio/gobang 目录结构如下 卷 DAT ...
- [python] 五子棋原创算法
python五子棋原创算法 我们都见过五子棋,但是在我看来五子棋单机游戏中,逻辑赢法很重要,经常用到的算法是五子连珠算法,但是很多五子连珠算法很不全面,不是最后一个子落在四个字的中间出错误就是,下载四 ...
- python五子棋小游戏程序源码
wx供重浩:创享日记 对话框发送:python五子棋 免费获取完整源码源文件+配置教程文件+可执行文件等 在PyCharm中运行<五子棋(控制台版)>即可进入如图1所示的系统主界面. 具体 ...
- python五子棋游戏说明_python实现五子棋游戏(pygame版)
python实现五子棋游戏(pygame版) 发布时间:2020-10-11 17:05:18 来源:脚本之家 阅读:67 作者:king0964 本文实例为大家分享了python五子棋游戏的具体代码 ...
- python五子棋游戏_python小项目之五子棋游戏
本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 1.项目简介 在刚刚学习完python套接字的时候做的一个五子棋小游戏,可以在局域网内双人对战,也可以和电脑对战 2.实 ...
- python五子棋游戏控制台版_python实现五子棋游戏(pygame版)
本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...
- Python五子棋小游戏源代码,支持人机对战和局域网对战两模式
Python五子棋小游戏源代码,支持人机对战和局域网对战两模式,程序运行截图: 核心程序代码 WuZi.py ''' Function:五子棋小游戏-支持人机和局域网对战 Author:Charles ...
- python五子棋游戏15*15_python实现五子棋游戏(pygame版)
分享python 编写的五子棋游戏 分享高手给用python编写一个五子棋游戏,需要代码. .心里知道有这么回事,白天就很正常晚上就胡思乱想,事已至此小编们都该向前走一步了. 请用PYTHON编一个小 ...
- Python 2 python五子棋游戏实现
python五子棋小游戏实现,其中的AI采取棋盘评分和博弈树算法. 项目背景与规划 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性 ...
- python五子棋单机版源代码_python实现单机五子棋
简介 这是实验室2018年底招新时的考核题目,使用Python编写一个能够完成基本对战的五子棋游戏.面向新手. 程序主要包括两个部分,图形创建与逻辑编写两部分. 程序的运行结果: 样式创建 老规矩,先 ...
最新文章
- 控制寄存器(CR0,CR1,CR2,CR3,CR4)
- 以前的windows安装文件可以删除吗_安卓手机原来还可以这样安装windows系统,你还不知道吗?...
- 世卫组织希望两年之内结束新冠大流行,最终将进入季节性模式
- MySQL HINT:Straight_JOIN
- RTMP流媒体播放过程:握手,建立连接,建立流,播放
- Python 面向对象(中)
- python3中property使用方法详解
- java多线程编程_Java多线程编程
- 一、tars简单介绍 二、tars 安装部署资料准备
- String方法(一)
- pytorch: 自定义数据集加载
- jqueryui 1.8.19引用顺序(及var basePrototype = new base()错误)
- 微信公众号测试账号获取授权须关注
- nutch ajax mysql_Nutch爬取Ajax请求的动态网页
- 【考研英语语法】一般将来时练习题
- markdown语法转换成html,使用Showdown来把markdown语法转化成html
- 部分选主元matlab,部分选主元的Doolittle分解 | 学步园
- 有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。求笼中各有几只鸡和兔?
- 计算机病毒与防治的教案,计算机病毒及防治教案
- 哲学家进餐问题pv_【jMiniLang】哲学家就餐问题