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中Django框架利用url来控制登录的方法
Jul 25 Python
详解python单例模式与metaclass
Jan 15 Python
使用Python对Excel进行读写操作
Mar 30 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
Python中文编码知识点
Feb 18 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
python实现数据分析与建模
Jul 11 Python
python实现简单颜色识别程序
Feb 19 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
如何教少儿学习Python编程
Jul 10 Python
详解Python 中的容器 collections
Aug 17 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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 session 检测和注销
2009/03/16 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
prototype1.4中文手册
2006/09/22 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python中的字符串替换操作示例
2016/06/27 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
《颐和园》教学反思
2014/02/26 职场文书
实习协议书
2015/01/27 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang