python实现简单井字棋游戏

 更新时间:2020年03月04日 11:24:24   作者:无落  
这篇文章主要为大家详细介绍了python实现简单井字棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

井字棋,英文名叫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获取当前git的repo地址的示例代码

    python获取当前git的repo地址的示例代码

    大家好,当谈及版本控制系统时,Git是最为广泛使用的一种,而Python作为一门多用途的编程语言,在处理Git仓库时也展现了其强大的能力,本文给大家介绍了python获取当前git的repo地址的方法,需要的朋友可以参考下
    2024-09-09
  • python getpass模块用法及实例详解

    python getpass模块用法及实例详解

    这篇文章主要介绍了python getpass模块用法及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 学习python之编写简单乘法口诀表实现代码

    学习python之编写简单乘法口诀表实现代码

    这篇文章主要介绍了学习python之编写简单乘法口诀表实现代码,需要的朋友可以参考下
    2016-02-02
  • Python利用xlwings实现考勤表制作

    Python利用xlwings实现考勤表制作

    这篇文章主要为大家详细介绍了Python如何利用xlwings库操作excel实现考勤表的制作,文中的实现步骤讲解详细,感兴趣的可以尝试一下
    2023-04-04
  • Python使用Scrapy爬取妹子图

    Python使用Scrapy爬取妹子图

    前面我们给大家介绍了使用nodejs来爬取妹纸图片的方法,下面我们来看下使用Python是如何实现的呢,有需要的小伙伴参考下吧。
    2015-05-05
  • python图形工具turtle绘制国际象棋棋盘

    python图形工具turtle绘制国际象棋棋盘

    这篇文章主要为大家详细介绍了python图形工具turtle绘制国际象棋棋盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • pybind11和numpy进行交互的方法

    pybind11和numpy进行交互的方法

    这篇文章主要介绍了pybind11和numpy进行交互的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • 对pandas写入读取h5文件的方法详解

    对pandas写入读取h5文件的方法详解

    今天小编就为大家分享一篇对pandas写入读取h5文件的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python+Selenium键盘鼠标模拟事件操作详解

    Python+Selenium键盘鼠标模拟事件操作详解

    这篇文章主要带大家一起学习一下Selenium的元素的基本操作与鼠标键盘模拟事件的操作,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • Python利用Pytorch实现绘制ROC与PR曲线图

    Python利用Pytorch实现绘制ROC与PR曲线图

    这篇文章主要和大家分享一下Python利用Pytorch实现绘制ROC与PR曲线图的相关代码,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-12-12

最新评论