python实现简易五子棋游戏(控制台版)

yizhihongxing

下面是详细的攻略:

python实现简易五子棋游戏(控制台版)

本文将介绍如何通过Python语言实现一个简易的五子棋游戏,主要使用Python基础语法和标准库函数,适合初学者或想进一步熟悉Python语法的人。游戏使用控制台进行展示,不涉及图形界面。

思路与实现

  1. 初始化棋盘

棋盘的使用采用二维列表来实现,棋盘大小为15*15,每格状态用0、1、2表示,0为无人占位,1为黑方占位,2为白方占位。

def init_board():
    board = []
    for i in range(15):
        row = []
        for j in range(15):
            row.append(0)
        board.append(row)
    return board
  1. 显示棋盘

使用for循环逐行输出棋盘,并根据棋盘状态在对应位置输出黑棋、白棋或空位。其中用到了转移字符\033[31m\033[37m来控制输出颜色。

def show(board):
    print(' ', end='')
    for i in range(15):
        print(chr(65+i), end='')
    print()
    for i in range(15):
        print(chr(65+i), end='')
        for j in range(15):
            if board[i][j] == 0:
                print('·', end='')
            elif board[i][j] == 1:
                print('\033[31m●\033[37m', end='')
            else:
                print('\033[37m●\033[37m', end='')
        print()
  1. 下棋操作

通过while循环获取用户输入的坐标点,如果该点未被占用,则根据当前下棋方确定占位状态,并更新棋盘。下棋方轮流切换。

def play(board, turn):
    while True:
        pos = input('请落子,格式如 A3:')
        row, col = ord(pos[0])-65, int(pos[1:])-1
        if board[row][col] == 0:
            board[row][col] = turn
            break
        else:
            print('该位置已经有子,请重新下棋!')
    return 3 - turn  # 切换下棋方,1为黑方,2为白方
  1. 判断胜负

通过两重for循环,分别判断横向、纵向、左斜向、右斜向是否存在五子连珠。如果存在,则返回对局方,否则返回0,表示继续对局。

def judge(board):
    for i in range(15):
        for j in range(15):
            if board[i][j] != 0:
                if j<=10 and board[i][j]==board[i][j+1]==board[i][j+2]==board[i][j+3]==board[i][j+4]:
                    return board[i][j]
                if i<=10 and board[i][j]==board[i+1][j]==board[i+2][j]==board[i+3][j]==board[i+4][j]:
                    return board[i][j]
                if i<=10 and j<=10 and board[i][j]==board[i+1][j+1]==board[i+2][j+2]==board[i+3][j+3]==board[i+4][j+4]:
                    return board[i][j]
                if i<=10 and j>=4 and board[i][j]==board[i+1][j-1]==board[i+2][j-2]==board[i+3][j-3]==board[i+4][j-4]:
                    return board[i][j]
    return 0
  1. 完整程序
def init_board():
    board = []
    for i in range(15):
        row = []
        for j in range(15):
            row.append(0)
        board.append(row)
    return board


def show(board):
    print(' ', end='')
    for i in range(15):
        print(chr(65+i), end='')
    print()
    for i in range(15):
        print(chr(65+i), end='')
        for j in range(15):
            if board[i][j] == 0:
                print('·', end='')
            elif board[i][j] == 1:
                print('\033[31m●\033[37m', end='')
            else:
                print('\033[37m●\033[37m', end='')
        print()


def play(board, turn):
    while True:
        pos = input('请落子,格式如 A3:')
        row, col = ord(pos[0])-65, int(pos[1:])-1
        if board[row][col] == 0:
            board[row][col] = turn
            break
        else:
            print('该位置已经有子,请重新下棋!')
    return 3 - turn


def judge(board):
    for i in range(15):
        for j in range(15):
            if board[i][j] != 0:
                if j<=10 and board[i][j]==board[i][j+1]==board[i][j+2]==board[i][j+3]==board[i][j+4]:
                    return board[i][j]
                if i<=10 and board[i][j]==board[i+1][j]==board[i+2][j]==board[i+3][j]==board[i+4][j]:
                    return board[i][j]
                if i<=10 and j<=10 and board[i][j]==board[i+1][j+1]==board[i+2][j+2]==board[i+3][j+3]==board[i+4][j+4]:
                    return board[i][j]
                if i<=10 and j>=4 and board[i][j]==board[i+1][j-1]==board[i+2][j-2]==board[i+3][j-3]==board[i+4][j-4]:
                    return board[i][j]
    return 0


def main():
    board = init_board()
    turn = 1
    while True:
        show(board)
        turn = play(board, turn)
        winner = judge(board)
        if winner:
            print('胜利者为:', '黑方' if winner==1 else '白方')
            break


if __name__ == '__main__':
    main()

示例

示例1:黑方落子

请落子,格式如 A3:B6
 A B C D E F G H I J K L M N O
A· · · · · · · · · · · · · · ·
B· · · · · ● · · · · · · · · ·
C· · · · · ○ · · · · · · · · ·
D· · · · · · · · · · · · · · ·
E· · · · · · · · · · · · · · ·
F· · · · · · · · · · · · · · ·
G· · · · · · · · · · · · · · ·
H· · · · · · · · · · · · · · ·
I· · · · · · · · · · · · · · ·
J· · · · · · · · · · · · · · ·
K· · · · · · · · · · · · · · ·
L· · · · · · · · · · · · · · ·
M· · · · · · · · · · · · · · ·
N· · · · · · · · · · · · · · ·
O· · · · · · · · · · · · · · ·
请落子,格式如 A3:

示例2:胜利者为白方

  A B C D E F G H I J K L M N O
A○ ○ ○ ○ ○ ○ ○ ○ · · · · · · ·
B· · · · · · · · · · · · · · ·
C· · · · · · · · · · · · · · ·
D· · · · · · · · · · · · · · ·
E○ ○ ○ ○ · · · · · · · · · · ·
F· · · · ○ · · · · · · · · · ·
G· · · · · ○ · · · · · · · · ·
H· · · · · · ○ · · · · · · · ·
I· · · · · · · ○ · · · · · · ·
J· · · · · · · · ○ · · · · · ·
K· · · · · · · · · · · · · · ·
L· · · · · · · · · · · · · · ·
M· · · · · · · · · · · · · · ·
N· · · · · · · · · · · · · · ·
O· · · · · · · · · · · · · · ·
胜利者为: 白方

以上就是Python实现简易五子棋游戏(控制台版)的完整攻略,希望能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现简易五子棋游戏(控制台版) - Python技术站

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

相关文章

  • 详解Python PIL的logical_and()和logical_or()方法

    Python PIL(Python Imaging Library)是Python编程语言中的图像处理库。它允许开发人员在Python代码中处理图像,进行各种复杂的图像操作,如裁剪、调整大小、改变图像格式、增加滤镜等。其中,logical_and()和logical_or()是PIL库提供的图像逻辑运算函数,用于将两张二进制图像进行逻辑与操作和逻辑或操作。 …

    python-answer 2023年3月25日
    00
  • 浅谈python类属性的访问、设置和删除方法

    浅谈Python类属性的访问、设置和删除方法 在Python中,类属性是指属于类而不是类的实例的属性。本文将为您详细讲解Python属性的访问、设置和删除方法,包括类属性的定义、访问、设置和删除等。过程中提供两个示例说明。 属性的定义 在Python中,类属性可以在类定义中直接定义,也可以在类方法中定义。以下是一个示例代码: class MyClass: c…

    python 2023年5月14日
    00
  • python中re模块知识点总结

    以下是详细讲解“Python中re模块知识点总结”的完整攻略,包括re模块的介绍、正则表达式的基本法、re模块的常用函数、两个示例说明和注意事项。 re模块的介绍 在Python中,re模块是用于处理正则表达式的模块。正则表达式是一种用于匹配字符串的模式,可以用于搜索、替换和验证字符串。模块提供了一系列函数,用于处理正则表达式。 正则表达式的基本语法 正则表…

    python 2023年5月14日
    00
  • python字符串操作详析

    Python字符串操作详析 Python是一种解释性语言,具有强大的字符串处理能力。在Python中,对字符串进行操作非常方便,开发者可以使用内置的函数和方法来满足日常需要。本文将详细讲解Python中字符串的各种操作,包括字符串的基本操作,格式化字符串,字符串的搜索和替换,字符串的切片和拼接等。 字符串的基本操作 在Python中,字符串是一种不可变的数据…

    python 2023年6月5日
    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第一天

    Python使用基本规 (一)、关于注释   注释是编程语言必备的,以下是几种常用的注释方式。 1 # 这是单行注释 2 3 4 ”’ 这是多行注释1 ”’ 5 6 7 “”” 这是多行注释2 “””  (二)、关于打印   与C#中的WriteLine相似,Python中Print 的输出是默认换行的,以下是Print几种使用方式。 # 使用一个Pri…

    python 2023年4月17日
    00
  • 2019年Python趋势解析!(程序员转型需知)

    2019年Python趋势解析 Python作为一门高级、通用、解释型编程语言, 近年来越来越受到程序员和企业的青睐。本文将分析2019年Python的主要趋势。 Python在程序员领域的应用 Python在程序员领域的应用越来越广泛,从web开发到数据科学,从人工智能到自动化测试。其中最流行的方向是数据科学和人工智能。下面将对这两个领域进行详细介绍。 数…

    python 2023年5月20日
    00
  • Python实现拼音转换

    Python实现拼音转换 拼音转换是指将中文汉字转换成对应的拼音字母,常用于中文输入法中的候选词显示和搜索引擎中的中文搜索。Python提供了多种方法实现拼音转换,包括使用第三方库和自定义转换函数等。 使用第三方库 Python中常用的第三方库有pypinyin和xpinyin。 pypinyin库 pypinyin库是一个完全用Python编写的、功能简单…

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