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中内置的itertools模块
Apr 29 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
详解python字节码
Feb 07 Python
单链表反转python实现代码示例
Feb 08 Python
Python装饰器基础概念与用法详解
Dec 22 Python
基于python修改srt字幕的时间轴
Feb 03 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
python实现自动清理文件夹旧文件
May 10 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 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 cron中的批处理
2008/09/16 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
基于Redis位图实现用户签到功能
2021/05/08 Redis
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python