Pyhton五子棋(无界面)

# 一、棋盘,加上行号,规格10X10
# 1.设置行列
qipan = [["-" for i in range(10)] for j in range(10)]
print("  1  2  3  4  5  6  7  8  9  10")
# 2.打印棋盘
def qipan_print():
    for i in range(10):
        A=65+i
        print(chr(A), end=" ")
        for it in qipan[i]:
            print(it, end="  ")
        print()
qipan_print()
# 二、下棋,有子位置不能再下,只能再A1-J10范围内,输入其他的重新输入,你(棋子*)下了之后我(棋子o)下
who = 1
while 1:
    if who%2==1:
        qizi="*"
        wuzi="*****"
    elif who%2==0:
        qizi = "o"
        wuzi = "ooooo"
    while 1:
        numbers_list = "0123456789"
        zuobiao=input("%s棋下,输入位置,如A1"%qizi)
        if zuobiao=="A10":
            y = ord(zuobiao[0]) - 65
            x = 9
            if qipan[y][x] == "-":
                qipan[y][x] = qizi
                break
            else:
                print("该位置已经有棋了,请你重新选择")
        elif (len(zuobiao)==2 and str(ord(zuobiao[0]) - 65) in numbers_list and str(int(zuobiao[1]) - 1) in numbers_list):
            y = ord(zuobiao[0]) - 65
            x = int(zuobiao[1]) - 1
            if qipan[y][x] == "-":
                qipan[y][x] = qizi
                break
            else:
                print("该位置已经有棋了,请你重新选择")
        else:
            print("输入错误请重新输入")
    who += 1
    print("")
    qipan_print()
    #列
    y_all="".join(qipan[y])#列的所有棋子
    # join函数将列表转换为字符串
    if wuzi in y_all:
        # in,判断前面的,后面是否也有
        break
    #行
    x_all=''#行的所有棋子
    x0_all=""
    for i in range(10):
        x_all+=x0_all.join(qipan[i][x])
    #     join函数
    if wuzi in x_all:
        break
    # 斜着右
    r_all=""
    r0_all=""
    y0 = y + 4
    x0 = x - 4
    for i in range(9):
        try:
            r_all+=r0_all.join(qipan[y0][x0])
            y0-=1
            x0+=1
        except:
            continue
    if wuzi in r_all:
        break
    # 斜着左
    l_all=""#左斜的一行
    l0_all=""
    y0 = y - 4
    x0 = x - 4
    for i in range(9):
        try:
            l_all += l0_all.join(qipan[y0][x0])
            y0 += 1
            x0 += 1
        except:
            continue
    if wuzi in l_all:
        break
print("%s棋胜利,666"%qizi)


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值