栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python:井字棋游戏

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:井字棋游戏

打印棋盘:通过每次列表的改变刷新打印棋盘。

# 棋盘号
board = list('123456789')
# 打印棋盤
def print_board():
    print("      井字棋      ")
    print("=================")
    print("t{0} | {1} | {2}".format(board[0], board[1], board[2]))
    print("t_ | _ | _")
    print("t{0} | {1} | {2}".format(board[3], board[4], board[5]))
    print("t_ | _ | _")
    print("t{0} | {1} | {2}".format(board[6], board[7], board[8]))
    print("=================")

 

选择个人图标:由p1选择一个心仪图标,另一个为p2图标。

# 選p1個人圖標(p2则为另一个)
while True:
    select = input('请玩家1输入您想要的图标序号(1.*,2.X)n')
    if select == '1':
        player1_icon = '*'
        player2_icon = 'X'
        break
    elif select == '2':
        player1_icon = 'X'
        player2_icon = '*'
        break
    else:
        print('输入不合规,重试!')

 判断输赢:定义了能赢的数的组合序列,判断棋盘在这些序列的位置上是否图标一样。

win_method = ['123', '456', '789', '147', '258', '369', '159', '357']
# 判斷輸贏
    for r in win_method:
        if board[int(r[0]) - 1] == board[int(r[1]) - 1] == board[int(r[2]) - 1]:
            winner += 'winner1'
            print('游戲結束勝者:33[31m winner1 33[0m')

判断是否平局:两玩家每次落子记录下子位置,如果位置总数超过9即定为平局。

# 判斷是否死局
    if len(p1_place) + len(p2_place) == 9:
        print('33[31m平局33[0m!游戲結束')
        break

醒目:将重要信息颜色改变。

p1 = int(input('请33[31m玩家133[0m落子:'))

 整体运行:

 整体代码:轮流下子,判定输赢。

# 棋盘号
board = list('123456789')
# 打印棋盤
def print_board():
    print("      井字棋      ")
    print("=================")
    print("t{0} | {1} | {2}".format(board[0], board[1], board[2]))
    print("t_ | _ | _")
    print("t{0} | {1} | {2}".format(board[3], board[4], board[5]))
    print("t_ | _ | _")
    print("t{0} | {1} | {2}".format(board[6], board[7], board[8]))
    print("=================")


print(' ' * 10 + '歡迎進入井字棋小游戲!' + ' ' * 10)

# 選p1個人圖標(p2则为另一个)
while True:
    select = input('请玩家1输入您想要的图标序号(1.*,2.X)n')
    if select == '1':
        player1_icon = '*'
        player2_icon = 'X'
        break
    elif select == '2':
        player1_icon = 'X'
        player2_icon = '*'
        break
    else:
        print('输入不合规,重试!')

# 记录玩家1和玩家2所下的位置
p1_place = []
p2_place = []
# 赢棋所对应的位置
win_method = ['123', '456', '789', '147', '258', '369', '159', '357']
winner = ''
print('n游戲開始!')
while True:
    # 打印棋盤
    print_board()

    '''玩家1'''
    try:
        p1 = int(input('请33[31m玩家133[0m落子:'))
    except ValueError:  # 使用try-except判定输入是否合法;
        print('n请输入一个数字而不是字母或空格(请由玩家1开始落子)n')
        continue
    if p1 < 1 or p1 > 9:
        print('无此位置!重试')
        continue
    elif p1 in p2_place:
        print('此位置已被占用!请重试')
        continue
    else:
        # 落子成功 记录位置动作 并将此位置改为玩家所选图案
        p1_place.append(p1)
        board[p1 - 1] = player1_icon
    print_board()
    print()
    # 判斷輸贏
    for r in win_method:
        if board[int(r[0]) - 1] == board[int(r[1]) - 1] == board[int(r[2]) - 1]:
            winner += 'winner1'
            print('游戲結束勝者:33[31m winner1 33[0m')
    if winner == 'winner1':
        break
    # 判斷是否死局
    if len(p1_place) + len(p2_place) == 9:
        print('33[31m平局33[0m!游戲結束')
        break

    '''玩家2'''
    try:
        p2 = int(input('请33[31m玩家233[0m落子:'))
    except ValueError:  # 使用try-except判定输入是否合法;
        print('n请输入一个数字而不是字母或空格(请由33[31m玩家133[0m开始落子)n')
        continue

    if p2 < 1 or p2 > 9:
        board[p1 - 1] = p1
        print('无此位置!重试(请由33[31m玩家133[0m开始落子)')
        continue
    elif p2 in p1_place:
        board[p1 - 1] = p1
        print('此位置已被占用(请由33[31m玩家133[0m开始落子)')
        continue
    else:
        # 落子成功 记录位置动作 并将此位置改为玩家所选图案
        p2_place.append(p2)
        board[p2 - 1] = player2_icon
    print_board()
    print()
    # 判断赢输
    for r in win_method:
        if board[int(r[0]) - 1] == board[int(r[1]) - 1] == board[int(r[2]) - 1]:
            winner += 'winner2'
            print('游戲結束勝者:33[31m winner2 33[0m')
    if winner == 'winner2':
        break

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号