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类定义和类继承详解
May 08 Python
python监控文件或目录变化
Jun 07 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
对python读取CT医学图像的实例详解
Jan 24 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
简单了解python数组的基本操作
Nov 26 Python
python多线程使用方法实例详解
Dec 30 Python
python批量生成条形码的示例
Oct 10 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
python 如何在测试中使用 Mock
Mar 01 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
Python 读写文件的操作代码
2018/09/20 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
解决python对齐错误的方法
2020/07/16 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
P/Invoke是什么
2015/07/31 面试题
九年级化学教学反思
2014/01/28 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
硕士学位论文评语
2014/12/31 职场文书
学校中秋节活动总结
2015/03/23 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS