我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python写一个创意五子棋游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python写一个创意五子棋游戏

前言

在本教程中,我们将使用Python写一个创意五子棋游戏

b1691e6f246947eeb06ee06469621bc2.gif

 

 

📝个人主页→数据挖掘博主ZTLJQ的主页

个人推荐python学习系列:

☄️爬虫JS逆向系列专栏 爬虫逆向教学

☄️python系列专栏 - 从零开始学python


首先

GomokuGame 类的构造函数 __init__ 初始化游戏。board_size 参数默认为 15,表示棋盘大小。board 是一个二维列表,代表棋盘上的状态。current_player 记录当前玩家,初始为 'X'。winner 记录胜利者,初始为 None。

class GomokuGame:    def __init__(self, board_size=15):        self.board_size = board_size        self.board = [[' ' for _ in range(board_size)] for _ in range(board_size)]        self.current_player = 'X'        self.winner = None

print_board 方法用于打印当前棋盘的状态。首先,它打印列索引。然后,遍历每一行打印出当前行的棋子状态。

    def print_board(self):        print("  " + " ".join(str(i) for i in range(self.board_size)))        for i in range(self.board_size):            print(str(i) + " " + " ".join(self.board[i]))        print()

make_move 方法用于玩家落子。如果指定位置为空,将当前玩家的标记放置在该位置。然后调用 check_winner 方法检查是否有胜利者。最后,切换当前玩家。

    def make_move(self, row, col):        if self.board[row][col] == ' ':            self.board[row][col] = self.current_player            if self.check_winner(row, col):                self.winner = self.current_player            self.current_player = 'X' if self.current_player == 'O' else 'O'            return True        return False

check_winner 方法用于检查是否有玩家获胜。它通过检查当前位置的四个方向来判断是否有五个连续相同的棋子。如果存在,则返回 True,表示有玩家获胜。

    def check_winner(self, row, col):        directions = [(0, 1), (1, 0), (1, 1), (1, -1)]        for dr, dc in directions:            count = 1            for i in range(1, 5):                r, c = row + i * dr, col + i * dc                if 0 <= r < self.board_size and 0 <= c < self.board_size and self.board[r][c] == self.current_player:                    count += 1                else:                    break            for i in range(1, 5):                r, c = row - i * dr, col - i * dc                if 0 <= r < self.board_size and 0 <= c < self.board_size and self.board[r][c] == self.current_player:                    count += 1                else:                    break            if count >= 5:                return True        return False

play 方法是游戏的主循环。它持续运行直到有玩家获胜。在每一轮中,它打印当前棋盘,然后获取玩家输入的行和列,进行落子操作。如果落子无效,则要求玩家重新输入。如果有玩家获胜,则打印胜利信息并结束游戏。

    def play(self):        while not self.winner:            self.print_board()            try:                row = int(input("玩家{}的回合,请输入你要下的行数: ".format(self.current_player)))                col = int(input("请输入你要下的列数: "))                if 0 <= row < self.board_size and 0 <= col < self.board_size:                    if self.make_move(row, col):                        if self.winner:self.print_board()print("玩家{},你赢了".format(self.winner))break                    else:                        print("无效移动。再试一次。")                else:                    print("输入无效。再试一次。")            except ValueError:                print("输入无效。输入一个数字。")

在代码的末尾,通过这个条件判断,确保仅在直接运行该脚本时才会执行创建游戏对象并开始游戏。

if __name__ == "__main__":    game = GomokuGame()    game.play()

下面是完全代码,可以直接复制运行

class GomokuGame:    def __init__(self, board_size=15):        self.board_size = board_size        self.board = [[' ' for _ in range(board_size)] for _ in range(board_size)]        self.current_player = 'X'        self.winner = None    def print_board(self):        print("  " + " ".join(str(i) for i in range(self.board_size)))        for i in range(self.board_size):            print(str(i) + " " + " ".join(self.board[i]))        print()    def make_move(self, row, col):        if self.board[row][col] == ' ':            self.board[row][col] = self.current_player            if self.check_winner(row, col):                self.winner = self.current_player            self.current_player = 'X' if self.current_player == 'O' else 'O'            return True        return False    def check_winner(self, row, col):        directions = [(0, 1), (1, 0), (1, 1), (1, -1)]        for dr, dc in directions:            count = 1            for i in range(1, 5):                r, c = row + i * dr, col + i * dc                if 0 <= r < self.board_size and 0 <= c < self.board_size and self.board[r][c] == self.current_player:                    count += 1                else:                    break            for i in range(1, 5):                r, c = row - i * dr, col - i * dc                if 0 <= r < self.board_size and 0 <= c < self.board_size and self.board[r][c] == self.current_player:                    count += 1                else:                    break            if count >= 5:                return True        return False    def play(self):        while not self.winner:            self.print_board()            try:                row = int(input("玩家{}的回合,请输入你要下的行数: ".format(self.current_player)))                col = int(input("请输入你要下的列数: "))                if 0 <= row < self.board_size and 0 <= col < self.board_size:                    if self.make_move(row, col):                        if self.winner:self.print_board()print("玩家{},你赢了".format(self.winner))break                    else:                        print("无效移动。再试一次。")                else:                    print("输入无效。再试一次。")            except ValueError:                print("输入无效。输入一个数字。")if __name__ == "__main__":    game = GomokuGame()    game.play()

 

 

来源地址:https://blog.csdn.net/SUEJESDA/article/details/132390225

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python写一个创意五子棋游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python编写五子棋游戏

本文实例为大家分享了python编写五子棋游戏的具体代码,供大家参考,具体内容如下 游戏代码及部分注释import pygame #导入pygame游戏模块 import time #调用time库 imp
2022-06-02

怎么用Js写一个简单的五子棋小游戏

这篇文章主要讲解了“怎么用Js写一个简单的五子棋小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Js写一个简单的五子棋小游戏”吧!这里的五子棋只做一些基础的功能,对于相对专业的规则
2023-07-02

使用QT如何实现一个五子棋游戏

今天就跟大家聊聊有关使用QT如何实现一个五子棋游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。FIR.pro QT += core gui TARGET = FIRTE
2023-06-15

Python:游戏:五子棋之人机对战

本文代码基于 python3.6 和 pygame1.9.4。五子棋比起我之前写的几款游戏来说,难度提高了不少。如果是人与人对战,那么,电脑只需要判断是否赢了就可以。如果是人机对战,那你还得让电脑知道怎么下。我们先从简单的问题来看。开端画棋
2023-01-30

怎么使用Vue开发一个五子棋小游戏

这篇文章主要讲解了“怎么使用Vue开发一个五子棋小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Vue开发一个五子棋小游戏”吧!1.绘制游戏区域和游戏元素开始写代码之前,一定要记
2023-07-02

Python+Pygame实现彩色五子棋游戏

这篇文章主要为大家详细介绍了如何溧阳Python和Pygame实现彩色五子棋游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2023-02-10

利用C语言编写一个三子棋游戏

这篇文章给大家介绍利用C语言编写一个三子棋游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体内容如下说明:该游戏的实现需要用到三个文件1、test.c:放置主函数(main())和菜单函数(menu())和游戏函数
2023-06-06

如何用Python实现简易五子棋游戏

这篇文章主要介绍了如何用Python实现简易五子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用Python实现简易五子棋游戏文章都会有所收获,下面我们一起来看看吧。具体代码如下class Check
2023-06-30

怎么在VUE中使用Canvas实现一个五子棋游戏

怎么在VUE中使用Canvas实现一个五子棋游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与
2023-06-15

java实现五子棋小游戏的代码怎么写

这篇文章的内容主要围绕java实现五子棋小游戏的代码怎么写进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!讲解在第一步实现的基础上,添加游戏结束条件。
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录