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交换变量
Sep 06 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
Python使用django搭建web开发环境
Jun 09 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
Python何时应该使用Lambda函数
Jul 02 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
python两种注释用法的示例
Oct 09 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
Python使用tkinter制作在线翻译软件
Feb 22 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文件读写操作相关函数总结
2014/11/18 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
php源码的使用方法讲解
2019/09/26 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
如何让Java程序执行效率更高
2014/06/25 面试题
小学生检讨书大全
2014/02/06 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
语文教师求职信范文
2015/03/20 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
python实现简单的名片管理系统
2021/04/26 Python