用python实现五子棋实例
作者:一起看日落啊 发布时间:2022-08-23 21:42:38
标签:python,五子棋
本文实例为大家分享了用python实现五子棋的具体代码,供大家参考,具体内容如下
# 制作一个棋盘
"""
++++++++++
++++++++++
++++++++++
++++++++++
"""
def createBoard():
board = []
for i in range(15):
board.append(["+"] * 15)
return board
def printBoard():# print(" ", end="")
for i in range(1, 16):
number = str(i).rjust(3)
print(number, end="")
print()#打印列号之后换行
for i in range(15):
number = str(i + 1).ljust(3)#注意这个函数,是将行号每个都变成左对齐,占3位,以实现棋盘对齐功能
print(number, end="")#打印行号
for j in range(15):
print(board[i][j], end=" ")
print()
def isGameOver():
count = 0
# 先判断连续
for x in range(15):
for y in range(15):
if board[x][y] != "+":
count += 1
# 向右
if y < 11:
flag = True #表示默认游戏结束
for c in range(y + 1, y + 5):
if board[x][y] != board[x][c]:
flag = False
break
if flag:
if board[x][y] == "●":
print(">>>黑方胜!")
else :
print(">>>白方胜!")
return True; # 表示游戏结束
# 向下
if x < 11:
if board[x][y] == board[x+1][y] == board[x+2][y] == board[x+3][y] == board[x+4][y]:
if board[x][y] == "●":
print(">>>黑方胜!")
else :
print(">>>白方胜!")
return True
# 向右下
if x < 11 and y < 11:
if board[x][y] == board[x+1][y+1] == board[x+2][y+2] == board[x+3][y+3] == board[x+4][y+4]:
if board[x][y] == "●":
print(">>>黑方胜!")
else :
print(">>>白方胜!")
return True
# 向右上
if x > 3 and y < 11:
if board[x][y] == board[x-1][y+1] == board[x-2][y+2] == board[x-3][y+3] == board[x-4][y+4]:
if board[x][y] == "●":
print(">>>黑方胜!")
else :
print(">>>白方胜!")
return True
# 再判断和棋
if count == 15 ** 2:
print(">>>和棋!")
return True
return False#如果以上连棋都没出现就游戏继续
def chess(c):
x, y = eval(input("请输入坐标:"))
x -= 1
y -= 1
if board[x][y] == "+":
board[x][y] = c
return True
else:
print(">>>此处已有棋子,请重新下棋!")
return False
# 程序的开始
board = createBoard();
printBoard()
player = 0
while not isGameOver():#游戏继续的操作
if player % 2 == 0:
print(">>>请黑方下棋,", end="")
if not chess("●"):
continue
else:
print(">>>请白方下棋,", end="")
if not chess("○"):
continue
printBoard()
player += 1
print(">>>游戏结束!")
五子棋胜局判断的根据所在如上图。
来源:https://blog.csdn.net/weixin_44642263/article/details/122427714
0
投稿
猜你喜欢
- QQ通过返回不同的图片,来表示在线或离线,图标也随之变换,既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不
- 鼠标经过超链时的提示图层源码运行代码框<script>var oPopup = window.createPopup();fun
- 本文实例分析了JavaScript事件委托技术。分享给大家供大家参考。具体分析如下:如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定
- 摘 要: 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略。本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,
- Sql Server 中一个非常强大的日期格式化函数: 获得当前系统时间,GETDATE(): 2008年01月08日 星期二 14:59
- 我们提倡尽可能使用CSS,而且我们常常能做到这一点。现代浏览器有很好的CSS支持-这无疑足够好让你使用CSS来控制布局和版面设计。但是有时候
- 尝试安装server[justin@xen20-vm04 "]$ rpm -ivh MySQL-server-5.1.51-1.g
- 1.创建数据库连接,并打开set cnn=Server.CreateObject("ADODB.Connection&q
- 在我们制作网页的时候会经常碰到一些需求,如果不知道方法,说不定会困扰我们半天。其实实现它们都很简单,下面我们就一起来看看这些常用的网页编辑方
- 背景:Email地址存于MSSql一用户信息表中,数量上万。公司自有服务器,集SMTP,POP3,WWW,FTP,MSSql,DNS等多种服
- 学习目的: 掌握文本框的用法 初次接触try…catch…语法 今天内容很轻松,用一个例子,输入年月日,判断输入是否正确 图片如下: 用个
- CSS与JS紧密配合,为我们的页面增添了很多别致的效果。为了达到某种特殊的效果我们需要用Javascript动态的去更改某一个标签的CSS属
- 关于asp缓存函数,类什么的,在网上可以说笔笔皆是,为啥我要不辞辛苦去写一个呢?大概看了下,各有各的优点吧,可是大部分好像不可以缓存数据额,
- 如何搭建完整的网站架构并设计出一个出色的网站?关于这个问题,我们很难提出一个绝对权威和正确的设计思路,但任何网站的设计都需要遵循一个循序渐进
- 一、切换到Oracle用户su – oracle二、登录到sys用户sqlplus / as sysdba三、创建临时表空间//查询临时表空
- 今天发现一个很好用二维数组排序的php方法,usort,推荐给大家,以后二维数组里面,要按照一个字段的值排序用这个方法简单高效,例如下面的数
- 这里还以前面的微博为例,我们知道拖动刷新的内容由Ajax加载,而且页面的URL没有变化,那么应该到哪里去查看这些Ajax请求呢?1. 查看请
- 这个效果本身难度不大,主要在程序结构和扩展中下了些功夫,务求用起来更方便,能用在更多的地方。程序特点 1,同一个提示框用在多个触发元素时,只
- Web Accessibility Initiative Accessible Rich Internet Applications认识AR
- 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要