前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实战之利用数据字典实现井字棋盘,

Python实战之利用数据字典实现井字棋盘,

作者头像
灰小猿
发布2020-09-23 10:54:00
7200
发布2020-09-23 10:54:00
举报
文章被收录于专栏:灰小猿技术社区

在我国悠久的历史上广为流传,同时它也是我们儿时游戏的一个童年记忆,简简单单的九宫格棋盘就构成了我们童年时的美好点滴。

其实,在Python有一个很经典的关于对数据字典的实战项目,便是我们曾经最熟悉不过的井字棋游戏,同时用二十行代码就可以将其实现!

它对数据字典进行了巧妙而又深刻的运用,因此很多Python教程中都将井字棋游戏作为对数据字典的实战项目之一。

所以今天大灰狼就来和小伙伴分享一下,运用数据字典构造井字棋盘的实战项目。

在这里插入图片描述
在这里插入图片描述

我们所常见的井字棋盘,看起来就像一个大的字符(#),有九个空格,可以包含‘X’、‘O’或者‘ ’,因此我们要用字典来表示棋盘,可以为每一个空格分配一个字符串键,

可以用字符串值来表示每一个空格上都有什么样的棋子或者空值,如‘X’、‘O’或者空字符,因此我们就需要九个不同的键值对来表示井字棋盘上的每一个空格部分。

如我们可以用’top-L’: ’ ', ‘top-M’: ’ ', ‘top-R’: ’ ',表示井字棋盘最上边一行的三个部分;

用’mid-L’: ’ ', ‘mid-M’ : ’ ', ‘mid-R’: ’ '表示井字棋盘中间部分;

用’low-L’: ’ ', ‘low-M’: ’ ', ‘low-R’: ’ '表示井字棋盘最下方的三格部分。

代码语言:javascript
复制
checkerboard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
                'mid-L': ' ', 'mid-M' : ' ', 'mid-R': ' ',
                'low-L': ' ', 'low-M': ' ', 'low-R': ' '}

当我们打开一个文本编辑器窗口,输入字典的以下代码时,就可以呈现出井字棋盘的效果。

代码语言:javascript
复制
def printBoard(replace):
    print(checkerboard['top-L'] + '|' + checkerboard['top-M'] + '|' + checkerboard['top-R'])
    print('——' + '+' + '——')
    print(checkerboard['mid-L'] + '|' + checkerboard['mid-M'] + '|' + checkerboard['mid-R'])
    print('——' + '+' + '——')
    print(checkerboard['low-L'] + '|' + checkerboard['low-M'] + '|' + checkerboard['low-R'])

因为井字棋盘游戏刚开始的时候,棋盘的九个空格每个部分都是空字符,所以我们可以用空格来表示一张干净的井字棋盘,当我们对每一个键所对应的值进行修改的时候,随之变动的就是井字棋盘上相对应的空格部分。

所以我们可以专门定义一个函数来输出井字棋盘以及井字棋盘的状态,同时可以将这个井字棋盘进行实时输出,确保玩家游戏的实效性。

代码语言:javascript
复制
def printBoard(replace):
    print(checkerboard['top-L'] + '|' + checkerboard['top-M'] + '|' + checkerboard['top-R'])
    print('——' + '+' + '——')
    print(checkerboard['mid-L'] + '|' + checkerboard['mid-M'] + '|' + checkerboard['mid-R'])
    print('——' + '+' + '——')
    print(checkerboard['low-L'] + '|' + checkerboard['low-M'] + '|' + checkerboard['low-R'])

同时还应定义玩家输入棋子所对应的景致棋盘位置,根据玩家所输入的位置,对井字棋盘进行修改,并及时输出此时景致棋盘状态。

在这里插入图片描述
在这里插入图片描述

倘若有一个玩家获胜,那么它所对应的值便可以在井字棋盘上横向纵向或斜向的形成三个相同的值。效果如下:

在这里插入图片描述
在这里插入图片描述

完整的代码如下:

代码语言:javascript
复制
checkerboard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
                'mid-L': ' ', 'mid-M' : ' ', 'mid-R': ' ',
                'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
def printBoard(replace):
    print(checkerboard['top-L'] + '|' + checkerboard['top-M'] + '|' + checkerboard['top-R'])
    print('——' + '+' + '——')
    print(checkerboard['mid-L'] + '|' + checkerboard['mid-M'] + '|' + checkerboard['mid-R'])
    print('——' + '+' + '——')
    print(checkerboard['low-L'] + '|' + checkerboard['low-M'] + '|' + checkerboard['low-R'])
turn = 'X'
for i in range(9):
    printBoard(checkerboard)
    print("现在请" + turn + "出棋,请输入您的位置:")
    move = input()
    checkerboard[move] = turn
    if turn == 'X':
        turn = 'O'
    else:turn = 'X'
    if i == 8:
        print("游戏结束,平棋!")

最后再宣传一句,关注微信公众号“灰狼洞主”获取更多好玩有趣的Python代码,和互联网相关干货分享!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档