【问题描述】
已知两人分别执白棋和黑棋在一个围棋棋盘上下五子棋,若同一颜色的棋子在同一条横行、纵行或斜线上连成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)五子棋相关推荐

  1. 简单的Python五子棋

    一个简单的 Python 五子棋 初学Python,设计了一款简单的五子棋游戏.水平有限,欢迎批评指正 代码详见: https://gitee.com/liio/gobang 目录结构如下 卷 DAT ...

  2. [python] 五子棋原创算法

    python五子棋原创算法 我们都见过五子棋,但是在我看来五子棋单机游戏中,逻辑赢法很重要,经常用到的算法是五子连珠算法,但是很多五子连珠算法很不全面,不是最后一个子落在四个字的中间出错误就是,下载四 ...

  3. python五子棋小游戏程序源码

    wx供重浩:创享日记 对话框发送:python五子棋 免费获取完整源码源文件+配置教程文件+可执行文件等 在PyCharm中运行<五子棋(控制台版)>即可进入如图1所示的系统主界面. 具体 ...

  4. python五子棋游戏说明_python实现五子棋游戏(pygame版)

    python实现五子棋游戏(pygame版) 发布时间:2020-10-11 17:05:18 来源:脚本之家 阅读:67 作者:king0964 本文实例为大家分享了python五子棋游戏的具体代码 ...

  5. python五子棋游戏_python小项目之五子棋游戏

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 1.项目简介 在刚刚学习完python套接字的时候做的一个五子棋小游戏,可以在局域网内双人对战,也可以和电脑对战 2.实 ...

  6. python五子棋游戏控制台版_python实现五子棋游戏(pygame版)

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...

  7. Python五子棋小游戏源代码,支持人机对战和局域网对战两模式

    Python五子棋小游戏源代码,支持人机对战和局域网对战两模式,程序运行截图: 核心程序代码 WuZi.py ''' Function:五子棋小游戏-支持人机和局域网对战 Author:Charles ...

  8. python五子棋游戏15*15_python实现五子棋游戏(pygame版)

    分享python 编写的五子棋游戏 分享高手给用python编写一个五子棋游戏,需要代码. .心里知道有这么回事,白天就很正常晚上就胡思乱想,事已至此小编们都该向前走一步了. 请用PYTHON编一个小 ...

  9. Python 2 python五子棋游戏实现

    python五子棋小游戏实现,其中的AI采取棋盘评分和博弈树算法. 项目背景与规划 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性 ...

  10. python五子棋单机版源代码_python实现单机五子棋

    简介 这是实验室2018年底招新时的考核题目,使用Python编写一个能够完成基本对战的五子棋游戏.面向新手. 程序主要包括两个部分,图形创建与逻辑编写两部分. 程序的运行结果: 样式创建 老规矩,先 ...

最新文章

  1. 控制寄存器(CR0,CR1,CR2,CR3,CR4)
  2. 以前的windows安装文件可以删除吗_安卓手机原来还可以这样安装windows系统,你还不知道吗?...
  3. 世卫组织希望两年之内结束新冠大流行,最终将进入季节性模式
  4. MySQL HINT:Straight_JOIN
  5. RTMP流媒体播放过程:握手,建立连接,建立流,播放
  6. Python 面向对象(中)
  7. python3中property使用方法详解
  8. java多线程编程_Java多线程编程
  9. 一、tars简单介绍 二、tars 安装部署资料准备
  10. String方法(一)
  11. pytorch: 自定义数据集加载
  12. jqueryui 1.8.19引用顺序(及var basePrototype = new base()错误)
  13. 微信公众号测试账号获取授权须关注
  14. nutch ajax mysql_Nutch爬取Ajax请求的动态网页
  15. 【考研英语语法】一般将来时练习题
  16. markdown语法转换成html,使用Showdown来把markdown语法转化成html
  17. 部分选主元matlab,部分选主元的Doolittle分解 | 学步园
  18. 有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。求笼中各有几只鸡和兔?
  19. 计算机病毒与防治的教案,计算机病毒及防治教案
  20. 哲学家进餐问题pv_【jMiniLang】哲学家就餐问题

热门文章

  1. 小小的Toast蕴含大道理(解决关闭通知时原生Toast不显示问题)
  2. 反问疑问_反问疑问句的语法
  3. c语言课程设计总结心得大全,c语言课程设计的心得体会
  4. maven打开edge的闪退
  5. 【有利可图网】配色攻略-黄色篇
  6. matlab提取图像特征程序,图像特征提取matlab程序
  7. Week11——C密文
  8. API安全(二):API安全设计原则
  9. 图像mnf正变换_PCA和MNF变换及MNF错误
  10. 做最好的创新(李开复)