python实践项目(三)
来源:互联网 发布:猪八戒的网络推广 编辑:程序博客网 时间:2024/06/05 14:55
井字棋盘
井字棋盘看起来像一个大的井字符号(#), 有9个空格,可以包含X、O或空。要用字典表示棋盘,可以为每个空格分配一个字符串键, 如图5-2所示。图5-2井字棋盘的空格和它们对应的键可以用字符串值来表示,棋盘上每个空格有什么:'X'、'O'或' '(空格字符)。因此,需要存储9个字符串。可以用一个字典来做这事。带有键'top-R'的字符串表示右上角,带有键'low-L'的字符串表示左下角, 带有键'mid-M'的字符串表示中间, 以此类推。这个字典就是表示井字棋盘的数据结构。将这个字典表示的棋盘保存在名为theBoard的变量中。打开一个文件编辑器窗口, 输入以下代码, 并保存为
ticTacToe.py:
theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ','mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ','low-L': ' ', 'low-M': ' ', 'low-R': ' '}
保存在 theBoard变量中的数据结构。
图 1 ---表示了的井字棋盘。
图 2 ----一个空的井字棋盘
因为 theBoard变量中每个键的值都是单个空格字符,所以这个字典表示一个完全干净的棋盘。如果玩家X选择了中间的空格, 就可以用下面这个字典来表示棋盘:
theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ','mid-L': ' ', 'mid-M': 'X', 'mid-R': ' ','low-L': ' ', 'low-M': ' ', 'low-R': ' '}
theBoard 变量中的数据结构现在表示图 3 中的井字棋盘。
图3
一个玩家 O获胜的棋盘上,他将O横贯棋盘的顶部,看起来像这样:
theBoard = {'top-L': 'O', 'top-M': 'O', 'top-R': 'O','mid-L': 'X', 'mid-M': 'X', 'mid-R': ' ','low-L': ' ', 'low-M': ' ', 'low-R': 'X'}
图4---玩家O获胜
参考代码:
ticTacToe.py
这不是一个完整的井字棋游戏(例如,它并不检查玩家是否获胜), 但这已足够展示如何在程序中使用数据结构。
注意
#-*-coding:utf-8-*-theBoard = { 'top-L':' ','top-M':' ','top-R':' ', 'mid-L':' ','mid-M':' ','mid-R':' ', 'low-L':' ','low-M':' ','low-R':' ', }def printBoard(board): print(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R']) print('-+-+-') print(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R']) print('-+-+-') print(board['low-L'] + '|' + board['low-M'] + '|' + board['low-R'])printBoard(theBoard)turn = 'X'for i in range(9): print('Turn for ' + turn + '.Move on which space') while True: # 检测当前输入位置是否已经被占用 move = input() if(theBoard[move]!= ' '): print('This position has already been occupied! ') continue else: break theBoard[move] = turn if turn == 'X': turn = 'O' else: turn = 'X'printBoard(theBoard)
这不是一个完整的井字棋游戏(例如,它并不检查玩家是否获胜), 但这已足够展示如何在程序中使用数据结构。
注意
如果你很好奇, 完整的井字棋程序的源代码在网上有介绍, 网址是完整代码参考链接。(可能需要FQ才能进入)
阅读全文
1 0
- python实践项目(三)
- React 实践项目 (三)
- python实践项目(四)
- python实践项目(五)
- python实践项目(六)
- python实践项目(七)
- python实践项目(八)
- python实践项目(九)
- 实践项目三:桌面版python 获取未来七天的天气情况(2)
- 项目管理实践入门初探(三)
- 项目管理实践入门初探(三)
- 第二周实践项目三(1)
- 第二周实践项目三(2)
- Python爬虫实践笔记(三)
- python数据分析实践(三)
- python实践项目(一)
- python实践项目(二)
- python计算机视觉项目实践
- ASP.NET Core 2.0 全局配置项
- java八大基本数据类型及类型转换
- 浅析C#中单点登录的原理和使用
- mybatis 动态创建表
- Android金融支付常见加解密算法及安全防护
- python实践项目(三)
- 基于CentOS 7配置Nginx反向代理
- VMware虚拟机中ubuntu 16.04.3 安装、root密码设置、Xshell无法连接、ubuntu重启关机命令汇总
- 大佬的JAVA游戏服务开发经验
- redis安装
- Oracle(五)Pl/sql语法,record,cursor,Pl/sql控制语句,Pl/sql编写分页过程
- ONVIF协议详解
- android 屏幕旋转(横屏、竖屏、反向横屏、反向竖屏)的实现
- postgresql查看数据库,表,索引,表空间以及大小