Python实现井字棋小游戏

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日

相关文章

  • Python线性网络实现分类糖尿病病例

    Python线性网络实现分类糖尿病病例攻略 1. 介绍 本攻略将介绍如何使用Python实现一个线性神经网络来对糖尿病病例进行分类。经过训练后,该神经网络可以根据患者的人口学资料(例如年龄、BMI指数等)来预测其是否患有糖尿病。 本教程基于Python 3和NumPy库,并使用了Jupyter Notebook编写。我们将使用Pima Indians Dia…

    python 2023年6月3日
    00
  • python如何统计代码运行的时长

    统计Python代码的运行时长,可以使用Python内置的time模块。具体实现步骤如下: 步骤一:导入time模块 在Python脚本中,通过import time语句导入time模块。 import time 步骤二:获取代码开始执行时的时间 使用time模块的time()函数,获取代码开始执行时的时间戳。 start_time = time.time(…

    python 2023年6月2日
    00
  • Python中使用中文的方法

    下面是Python中使用中文的方法的完整攻略,分别从编码和输出两个方面进行介绍。 编码 在Python中使用中文需要注意编码格式的问题。一般情况下,我们使用的编码格式是UTF-8。在Python中,可以通过以下两种方式指定文件的编码格式。 1. 在文件头部添加注释 在Python文件的头部添加以下注释,指定文件的编码格式为UTF-8。 # -*- codin…

    python 2023年5月20日
    00
  • python subprocess 杀掉全部派生的子进程方法

    好的。首先需要了解一些基本概念: 进程:操作系统中正在运行的程序实例。 子进程:由父进程启动的新进程。 Python中,可以使用subprocess模块创建新的进程,例如: import subprocess process = subprocess.Popen([‘ls’, ‘-l’]) 上述代码启动了一个ls -l命令,返回值为一个Popen对象,该对象…

    python 2023年6月2日
    00
  • Django model序列化为json的方法示例

    Django model序列化为json的方法示例需要注意以下几个步骤: 1. 数据库模型定义 首先,我们需要在 Django 中定义一个数据库模型。由于 Django 使用的是类似 ORM 的操作方式,因此需要定义一个可以映射数据库表的类。例如,我们定义一个 BlogPost 类,用于表示博客文章。在这个类中,我们需要定义相应的字段,例如文章标题、内容、时…

    python 2023年6月3日
    00
  • 使用python连接mysql数据库之pymysql模块的使用

    使用Python连接MySQL数据库之pymysql模块的使用 MySQL是目前最流行的数据库之一,而Python中使用pymysql模块连接MySQL也是比较常见的方式之一。下面就是使用Python连接MySQL数据库之pymysql模块的完整攻略。 步骤一:安装pymysql模块 使用Python连接MySQL需要先安装pymysql模块。在cmd或终端…

    python 2023年5月13日
    00
  • 如何使用Python查询某个列中的最小值?

    以下是如何使用Python查询某个列中的最小值的完整使用攻略。 步骤1:导入模块 在Python中,我们需要导入相应的模块来连接数据库和执行查询操作。以下是导入mysql-connector-python模块的基本语法: import mysql.connector 以下是导入psycopg2模块的基本语法: import psycopg2 步骤2:连接数据…

    python 2023年5月12日
    00
  • 基于Python实现语音识别和语音转文字

    下面是基于Python实现语音识别和语音转文字的完整攻略。 一、准备工作 1.安装必要的Python库 在进行语音识别和语音转文字操作之前,需要安装以下Python库: PyAudio:用于录制语音 SpeechRecognition:用于进行语音识别 可以使用以下命令来安装这两个库: pip install pyaudio pip install Spee…

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