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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
基于python实现微信模板消息
Dec 21 Python
python字符串中的单双引
Feb 16 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
python学习必备知识汇总
Sep 08 Python
Python简单生成随机数的方法示例
Mar 31 Python
Python读写文件基础知识点
Jun 10 Python
Python秒算24点实现及原理详解
Jul 29 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 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
网页里控制图片大小的相关代码
2006/06/13 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
零基础学Python(一)Python环境安装
2014/08/20 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
Python列表切片常用操作实例解析
2019/12/16 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
如何利用python 读取配置文件
2021/01/06 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
学生会个人自荐书范文
2014/02/12 职场文书
文明生主要事迹
2014/05/25 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL