Python实现井字棋小游戏

yizhihongxing

Python实现井字棋小游戏

简介

这是一个简单的Python井字棋小游戏,玩家和电脑轮流下棋,先在棋盘上形成三个连续的棋子的一方获胜。代码运行于Python 3.x,需要安装Python 3.x。

实现思路

  1. 定义棋盘二维列表,并初始化为"-"。
  2. 创建一个游戏函数,游戏函数中不断循环,玩家和电脑轮流下棋。下棋函数中判断当前位置是否可用,如果可用就下棋并返回True,否则返回False。
  3. 当检测到某方胜利或者棋盘下满时,游戏结束并显示游戏结果,询问是否再玩一局。

代码实现

import random

board = [
    ["-", "-", "-"],
    ["-", "-", "-"],
    ["-", "-", "-"]
]

def print_board():
    for row in board:
        print("|".join(row))

def player_move():
    while True:
        try:
            row = int(input("请输入行号[1-3]: "))
            col = int(input("请输入列号[1-3]: "))
            if row < 1 or row > 3 or col < 1 or col > 3:
                print("输入不合法,请重新输入。")
                continue
            if board[row-1][col-1] != "-":
                print("该位置已被占用,请重新输入。")
                continue
            board[row-1][col-1] = "X"
            return True
        except ValueError:
            print("输入错误,请重新输入。")

def computer_move():
    while True:
        row = random.randint(1, 3)
        col = random.randint(1, 3)
        if board[row-1][col-1] != "-":
            continue
        board[row-1][col-1] = "O"
        return True

def check_win():
    for i in range(3):
        if board[i][0] == board[i][1] == board[i][2] != "-":
            return board[i][0]
        if board[0][i] == board[1][i] == board[2][i] != "-":
            return board[0][i]
    if board[0][0] == board[1][1] == board[2][2] != "-":
        return board[0][0]
    if board[0][2] == board[1][1] == board[2][0] != "-":
        return board[0][2]
    return None

def play_game():
    print("欢迎来到井字棋游戏!")
    while True:
        print_board()
        if player_move():
            if check_win() == "X":
                print("你赢了!")
                break
            if not any("-" in row for row in board):
                print("平局!")
                break
            if computer_move():
                if check_win() == "O":
                    print("电脑赢了!")
                    break

    play_again = input("是否再玩一局(Y/N): ")
    if play_again == "Y":
        reset_game()
        play_game()
    else:
        print("谢谢游玩!")

def reset_game():
    global board
    board = [
        ["-", "-", "-"],
        ["-", "-", "-"],
        ["-", "-", "-"]
    ]

if __name__ == "__main__":
    play_game()

示例说明

示例1

欢迎来到井字棋游戏!
-|-|-
-|-|-
-|-|-
请输入行号[1-3]: 2
请输入列号[1-3]: 2
-|-|-
-|X|-
-|-|-
O|-|-
请输入行号[1-3]: 3
请输入列号[1-3]: 3
-|-|-
-|X|-
-|-|X
O|-|-
电脑赢了!
是否再玩一局(Y/N): N
谢谢游玩!

示例2

欢迎来到井字棋游戏!
-|-|-
-|-|-
-|-|-
请输入行号[1-3]: 1
请输入列号[1-3]: 1
X|-|-
-|-|-
-|-|-
O|-|-
请输入行号[1-3]: 2
请输入列号[1-3]: 2
X|-|-
-|X|-
-|-|-
O|-|-
请输入行号[1-3]: 2
请输入列号[1-3]: 3
X|-|-
-|X|O
-|-|-
O|-|-
请输入行号[1-3]: 1
请输入列号[1-3]: 2
X|X|-
-|X|O
-|-|-
O|-|-
请输入行号[1-3]: 3
请输入列号[1-3]: 1
X|X|-
-|X|O
O|-|-
O|-|-
电脑赢了!
是否再玩一局(Y/N): N
谢谢游玩!

以上示例展示了两局游戏的过程和结果。玩家输入行列坐标,先下的是玩家,后下的是电脑,直到有一方获胜或者棋盘下满结束游戏,询问是否再玩一局。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现井字棋小游戏 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解Pandas与openpyxl库的超强结合

    标题:详解Pandas与openpyxl库的超强结合 在本文中,我们将详细讲解如何使用Pandas与openpyxl库的超强结合来进行数据处理和文件读写。我们将通过两个实际的例子来演示如何使用这两个库进行文件的读取和处理。 1. Pandas和openpyxl库的介绍 Pandas是一个强大的Python数据分析库,它提供了一些功能强大的数据结构和数据分析工…

    python 2023年5月13日
    00
  • 在Python中评估Hermite_e数列在点x上广播的系数列

    我们来详细讲解一下如何在Python中评估Hermite_e数列在点x上广播的系数列。 步骤一:导入Numpy和Scipy库 在Python中实现Hermite_e数列,我们需要使用Numpy和Scipy库。因此,我们在代码文件的开头插入以下代码: import numpy as np from scipy.special import hermite_e …

    python-answer 2023年3月25日
    00
  • Python实现数据透视表详解

    下面我将详细讲解“Python实现数据透视表详解”的完整实例教程。 标题 一、背景 在数据分析中,数据透视表是一种常用的数据分析工具。数据透视表可以帮助我们对数据进行多维度的分析,使得数据的分析更加易于理解和处理。Python也提供了一个强大的数据透视功能,即pandas.pivot_table()函数。本文将详细讲解如何使用Python实现数据透视表分析。…

    python 2023年5月13日
    00
  • python实现名片管理系统项目

    下面将为大家讲解如何实现“python实现名片管理系统项目”,具体步骤如下: 步骤一:创建项目和目录结构 在终端中,使用mkdir命令创建一个名为cards的文件夹,进入该文件夹,使用touch命令创建两个文件:README.md和card_manager.py。 mkdir cards cd cards touch README.md card_manag…

    python 2023年5月30日
    00
  • Python 实现Windows开机运行某软件的方法

    Python 实现Windows开机运行某软件的方法 背景 很多时候我们需要在Windows操作系统中开机自动运行某个软件,例如开机自动运行QQ,自动运行Chrome等。本文将使用Python来实现这个功能。 实现过程 第一步:制作VBS脚本 首先我们需要制作一个VBS脚本,以实现在Windows开机时自动启动某个应用程序的目的。具体的代码如下: Set W…

    python 2023年5月30日
    00
  • Python实现把json格式转换成文本或sql文件

    要把Json格式转换成文本或Sql文件,可以通过Python自带的json库来实现。 1. Json转文本 将Json格式转换成文本,主要是通过序列化Json数据为Python的字符串格式,然后再将字符串输出到文件中,代码如下: import json # 读取Json文件中的数据 with open(‘data.json’) as f: data = js…

    python 2023年6月3日
    00
  • 微信公众号接入ChatGPT机器人的方法

    接入ChatGPT机器人的方法需要经过以下步骤: 1. 注册微信公众号 如果你还没有自己的微信公众号,可以先去微信公众平台官网注册一个。注册成功后,在基本配置里面获取到你的AppID和AppSecret。 2. 获取ChatGPT API Key 前往AI开放平台官网注册一个账号并登录,然后在“自然语言处理”分类下点击“ChatGPT一键接入”。在这里你可以…

    python 2023年5月23日
    00
  • Python3访问并下载网页内容的方法

    针对“Ilona-Blog”网站,演示如何用Python3访问并下载网页内容的方法: 获取网页内容 我们可以使用Python中的requests库来访问获取网页内容,我们需要做的是: 安装requests:如果你尚未安装它,运行!pip install requests即可安装。 获取网页内容:我们可以使用requests库中的get()函数获取网页内容,其…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部