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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
从零学Python之引用和类属性的初步理解
May 15 Python
推荐11个实用Python库
Jan 23 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
python之消除前缀重命名的方法
Oct 21 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 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
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
关于php循环跳出的问题
2013/07/01 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
python实现简单遗传算法
2020/09/18 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
借款民事起诉状范文
2015/05/19 职场文书
关于开学的感想
2015/08/10 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
2016年万圣节活动总结
2016/04/05 职场文书