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中unittest用法实例
Sep 25 Python
总结Python编程中函数的使用要点
Mar 20 Python
Python实现二维有序数组查找的方法
Apr 27 Python
浅谈python字符串方法的简单使用
Jul 18 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
浅析Python四种数据类型
Sep 26 Python
python os.fork() 循环输出方法
Aug 08 Python
Python2与Python3的区别点整理
Dec 12 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
区分python中的进程与线程
Aug 13 Python
python实现图像随机裁剪的示例代码
Dec 10 Python
pandas求平均数和中位数的方法实例
Aug 04 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
JavaScript多线程详解
2015/08/12 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
python异常和文件处理机制详解
2016/07/19 Python
Python模拟登陆实现代码
2017/06/14 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
材料成型专业个人求职信范文
2013/09/25 职场文书
自考自我鉴定范文
2013/10/30 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
工程技术员岗位职责
2014/03/02 职场文书
服务理念口号
2014/06/11 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
2015年见习期工作总结
2014/12/12 职场文书
小学中等生评语
2014/12/29 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
整改通知书格式
2015/04/22 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
JavaScript实现简单计时器
2021/06/22 Javascript