python实现简单井字棋游戏


Posted in Python onMarch 04, 2020

井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。

游戏的难点在于,如何判断连接成了一条线;横、竖、斜三个方向;

游戏的代码:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
u'''
Created on 2019年4月13日

@author: wuluo
'''
__author__ = 'wuluo'
__version__ = '1.0.0'
__company__ = u'重庆交大'
__updated__ = '2019-04-13'


# 创建井字棋的程序
def initBoard():
 global board # 调用全局的board
 board = [None] * 3
 print("井字棋:")
 for i in range(len(board)):
  board[i] = ["+ "] * 3


# 打印井字棋的程序
def printBoard():
 global board
 for i in range(len(board)):
  for j in range(len(board[i])):
   print(board[i][j], end=" ")
  print("")


# 开始下棋的程序
def startGame():
 global board
 player = 0
 while isGameContinue():
  if player <= 8:
   if player % 2 == 0:
   # 甲方下棋
   print("==>黑方下棋")
   if not playChess("x"):
    continue
   else:
   # 乙方下棋
   print("==>白方下棋")
   if not playChess("○"):
    continue
   player += 1
  else:
   print("平局")
   break

def playChess(chess):
 # 获取位置
 x = int(input("==> X=")) - 1
 y = int(input("==> Y=")) - 1
 if board[x][y] == "+ ":
  board[x][y] = chess
  printBoard()
  return True # 落子成功
 else:
  print("==> 已有棋子 请重新落子\a")
  printBoard()
  return False # 落子失败


def isGameContinue():
 for i in range(len(board)):
  for j in range(len(board[i])):
   if board[i][j] != "+ ":
   # 横向
   if j == 0:
    if board[i][j] == board[i][j + 1] == board[i][j + 2]:
     whoWin(i, j)
     return False
   # 竖向
   if i == 0:
    if board[i][j] == board[i + 1][j] == board[i + 2][j]:
     whoWin(i, j)
     return False
   # 正斜
   if i == 0 and j == 0:
    if board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2]:
     whoWin(i, j)
     return False
   # 反斜
   if i == 2 and j == 0:
    if board[i][j] == board[i - 1][j + 1] == board[i - 2][j + 2]:
     whoWin(i, j)
     return False
 return True


def whoWin(i, j):
 if board[i][j] == "x":
  print("黑方胜!")
 else:
  print("白方胜!")
 for i in range(3):
  print("win")


class main():
 board = []
 initBoard()
 printBoard()
 startGame()


if __name__ == "__main__":
 main()

游戏结果:

python实现简单井字棋游戏

python实现简单井字棋游戏

还有一种结果是平局:

python实现简单井字棋游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python查看FTP是否能连接成功的方法
Jul 30 Python
python中的错误处理
Apr 10 Python
Python采用Django开发自己的博客系统
Sep 29 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
Python中使用subprocess库创建附加进程
May 11 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 #Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 #Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 #Python
使用Python发现隐藏的wifi
Mar 04 #Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 #Python
python实现井字棋小游戏
Mar 04 #Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 #Python
You might like
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
前端必学之PHP语法基础
2016/01/01 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
javascript封装的sqlite操作类实例
2015/07/17 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python简单分割文件的方法
2015/07/30 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python3 反射的四种基本方法解析
2019/08/26 Python
python列表推导式操作解析
2019/11/26 Python
在django中自定义字段Field详解
2019/12/03 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
keras K.function获取某层的输出操作
2020/06/29 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS