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中的多线程实例教程
Aug 27 Python
简洁的十分钟Python入门教程
Apr 03 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
Python中的下划线详解
Jun 24 Python
Python的装饰器使用详解
Jun 26 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
Python subprocess模块常见用法分析
Jun 12 Python
对python3标准库httpclient的使用详解
Dec 18 Python
python实现ip代理池功能示例
Jul 05 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 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应用技巧
2008/03/27 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python字典操作简明总结
2015/04/13 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python最长回文串算法
2018/06/04 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
教师自荐书
2013/10/08 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
家庭困难证明
2014/10/12 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
博士给导师的自荐信
2015/03/06 职场文书
2015年度企业工作总结
2015/05/21 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
python神经网络Xception模型
2022/05/06 Python