python实现简单井字棋游戏

 更新时间:2020年03月04日 11:24:24   作者:无落  
这篇文章主要为大家详细介绍了python实现简单井字棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

井字棋,英文名叫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: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例

    Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例

    这篇文章主要介绍了Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python多行字符串拼接使用小括号的方法

    python多行字符串拼接使用小括号的方法

    今天小编就为大家分享一篇python多行字符串拼接使用小括号的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • pytest中的fixture基本用法

    pytest中的fixture基本用法

    fixture是pytest特有的功能,用以在测试执行前和执行后进行必要的准备和清理工作,这篇文章主要介绍了pytest中的fixture基本用法,需要的朋友可以参考下
    2023-02-02
  • Python3生成手写体数字方法

    Python3生成手写体数字方法

    本篇文章给大家分享习如何Python3生成手写体数字方法以及实例代码分享,有兴趣的朋友参考下吧。
    2018-01-01
  • 详解Python if-elif-else知识点

    详解Python if-elif-else知识点

    本篇文章给大家总结了Python中if-elif-else的相关知识点以及语法相关内容,有兴趣的朋友参考学习下。
    2018-06-06
  • Sanic框架蓝图用法实例分析

    Sanic框架蓝图用法实例分析

    这篇文章主要介绍了Sanic框架蓝图用法,结合实例形式分析了Sanic框架中蓝图的功能以及路由控制中蓝图的定义、注册、简单使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-07-07
  • Python通过m3u8文件下载合并ts视频的操作

    Python通过m3u8文件下载合并ts视频的操作

    这篇文章主要介绍了Python通过m3u8文件下载合并ts视频的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python?matplotlib.pyplot.hist()绘制直方图的方法实例

    Python?matplotlib.pyplot.hist()绘制直方图的方法实例

    直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据类型,纵轴表示分布情况,下面这篇文章主要给大家介绍了关于Python?matplotlib.pyplot.hist()绘制直方图的相关资料,需要的朋友可以参考下
    2022-06-06
  • Python实现简单的用户交互方法详解

    Python实现简单的用户交互方法详解

    这篇文章给大家分享了关于Python实现简单的用户交互的相关知识点内容,有需要的朋友们可以学习下。
    2018-09-09
  • Python中缓存lru_cache的基本介绍和讲解

    Python中缓存lru_cache的基本介绍和讲解

    缓存是一种将定量数据加以保存以备迎合后续请求的处理方式,旨在加快数据的检索速度,下面这篇文章主要给大家介绍了关于Python中缓存lru_cache的基本介绍和讲解的相关资料,需要的朋友可以参考下
    2022-01-01

最新评论

?


http://www.vxiaotou.com