吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1950|回复: 28
收起左侧

[Python 原创] python写了一个五子棋小游戏

[复制链接]
caihuang 发表于 2023-3-16 21:41
本帖最后由 wushaominkk 于 2023-3-17 08:37 编辑

[Python] 纯文本查看 复制代码
# coding:UTF-8
# [url=home.php?mod=space&uid=238618]@Time[/url] : 2023/3/16 21:17
# @Autor : 菜皇
# [url=home.php?mod=space&uid=267492]@file[/url] : damo1.py
# [url=home.php?mod=space&uid=371834]@SOFTWARE[/url] : PyCharm

import sys

BOARD_SIZE = 15

# 初始化棋盘
def init_board():
    board = [['.' for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
    return board

# 绘制棋盘
def print_board(board):
    for row in board:
        print(" ".join(row))
    print()

# 检查是否有玩家获胜
def check_winner(board, player):
    for x in range(BOARD_SIZE):
        for y in range(BOARD_SIZE):
            if board[x][y] == player:
                # 水平方向
                if y <= BOARD_SIZE - 5 and all(board[x][y + i] == player for i in range(5)):
                    return True
                # 垂直方向
                if x <= BOARD_SIZE - 5 and all(board[x + i][y] == player for i in range(5)):
                    return True
                # 主对角线方向
                if x <= BOARD_SIZE - 5 and y <= BOARD_SIZE - 5 and all(board[x + i][y + i] == player for i in range(5)):
                    return True
                # 副对角线方向
                if x >= 4 and y <= BOARD_SIZE - 5 and all(board[x - i][y + i] == player for i in range(5)):
                    return True
    return False

def main():
    board = init_board()
    print_board(board)
    players = ['X', 'O']
    current_turn = 0

    while True:
        try:
            x, y = map(int,
                       input("玩家 {} 的回合,请输入落子坐标(逗号分隔,0-14):".format(players[current_turn])).split(','))
        except ValueError:
            print("输入错误,请输入逗号分隔的两个数字(0-14)。")
            continue

        if x < 0 or x >= BOARD_SIZE or y < 0 or y >= BOARD_SIZE:
            print("坐标超出范围,请输入0-14之间的数字。")
            continue

        if board[x][y] != '.':
            print("该位置已有棋子,请重新输入。")
            continue

        board[x][y] = players[current_turn]
        print_board(board)

        if check_winner(board, players[current_turn]):
            print("恭喜玩家 {} 获胜!".format(players[current_turn]))
            break

        current_turn = (current_turn + 1) % 2

if __name__ == "__main__":
    main()


[/mw_shl_code]

想搞成一个窗口小游戏,还不会搞,没学到

五子棋.zip

1.02 KB, 下载次数: 65, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 4吾爱币 +7 热心值 +3 收起 理由
AshesofTime + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lookteas + 1 用心讨论,共获提升!
KEEPTRYing + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2023-3-17 01:47
推荐使用这种方式插入代码
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
 楼主| caihuang 发表于 2023-3-17 08:51
苏紫方璇 发表于 2023-3-17 01:47
推荐使用这种方式插入代码
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thr ...

好东西,多谢
ganon 发表于 2023-3-17 09:03
kiikki 发表于 2023-3-17 09:12
优秀,支持原创
LZJ123lzj 发表于 2023-3-17 09:41
牛呀,支持原创
Easonll 发表于 2023-3-17 09:52
不错的思路,借鉴下,学习学习
echoaku 发表于 2023-3-17 09:52
支持一下大佬
quakewg 发表于 2023-3-17 10:02
思路清晰,值得学习
linczh 发表于 2023-3-17 10:06
感谢分享,支持原创!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表