三子棋(python)

今天做一个三子棋

定义 变量和二维列表

首先定义变量和二维列表:

q=0
info = [['.', '.', '.','.','.'],
        ['.', '.', '.','.','.'],
        ['.', '.','.','.','.'],
        ['.','.','.','.','.'],
        ['.','.','.','.','.']]

(不是三子棋吗?,现在怎么变成五子棋了???)

定义 函数

现在定义超级‘简简简简简简简简简简简简简单’的函数!

def hg():
    global h
    #global 函数声明h可以在函数外使用
    h = int(input('输入次数:'))

​

上面的代码定义了玩的次数(函数名为什么要叫hg???)

然后定义显示棋盘的函数:

def show():
    print('  0 1 2 3 4')
    for i in range(5):
     #利用循环遍历   
        print(i, info[i][0], info[i][1], info[i][2],info[i][3],info[i][4])

最后定义一个超级简单的函数(真的吗?我不信)

def judge():
    #检查斜线1
    if info[0][0] == info[1][1] and info[1][1] == info[2][2] == info[3][3] == info[4][4]:
        if info[0][0] != '.':
            return info[0][0]
    #检查斜线2
    if info[0][4] == info[1][3] and info[2][2] == info[3][1] == info[4][0]:
        if info[0][4] != '.':
            return info[0][4]
    #检查横排
    for i in range(5):
        if info[i][0] == info[i][1] and info[i][1] == info[i][2] == info[i][3] ==info[i][4]:
            if info[i][0] != '.':
                return info[i][0]
    #检查竖排
    for i in range(5):
        if info[0][i] == info[1][i] and info[1][i] == info[2][i] == info[3][i] == info[4][i]:
            if info[0][i] != '.':
                return info[0][i]

    return 'y'

怎么样?是不是很‘简单’?

利用列表遍历,这里就不多说了

 

调用函数

接下来做最重要的一步————调用函数

hg()
show()
for i in range(h):
    a = input('玩家x,您要把棋子放到第几行:')
    b = input('玩家x,您要把棋子放到第几列:')
    a = int(a)
    b = int(b)

    if a>3:
        print('数字错误!')
    info[a][b] = 'x'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break
    if flag == 'o':
        print('玩家o胜利')
        break
    if flag == '△':
        print('玩家o胜利')
        break
    a1 = input('玩家o,您要把棋子放到第几行:')
    b1 = input('玩家o,您要把棋子放到第几列:')
    a1 = int(a1)
    b1 = int(b1)
    if a>4:
        print('数字错误!')
        print('用了%d次'%q)
    info[a1][b1] = 'o'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break
    if flag == 'o':
        print('玩家o胜利')
        break
    q+=1
    if i == h-1:
        print('次数用完了!')
    a1 = input('玩家△,您要把棋子放到第几行:')
    b1 = input('玩家△,您要把棋子放到第几列:')
    a1 = int(a1)
    b1 = int(b1)
    if a > 4:
        print('数字错误!')
        print('用了%d次' % q)
    info[a1][b1] = '△'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break
    if flag == 'o':
        print('玩家o胜利')
        break
    if flag == '△':
        print('玩家△胜利')
        break
    q += 1
    if i == h - 1:
        print('次数用完了!')

对,你没看错!这是三人游戏!!!

附上全部代码(很长长长长长长长长长长长)

q=0
info = [['.', '.', '.','.','.'],
        ['.', '.', '.','.','.'],
        ['.', '.','.','.','.'],
        ['.','.','.','.','.'],
        ['.','.','.','.','.']]

def hg():
    global h
    h = int(input('输入次数:'))

def show():
    print('  0 1 2 3 4')
    for i in range(5):
        print(i, info[i][0], info[i][1], info[i][2],info[i][3],info[i][4])

def judge():
    #检查斜线1
    if info[0][0] == info[1][1] and info[1][1] == info[2][2] == info[3][3] == info[4][4]:
        if info[0][0] != '.':
            return info[0][0]
    #检查斜线2
    if info[0][4] == info[1][3] and info[2][2] == info[3][1] == info[4][0]:
        if info[0][4] != '.':
            return info[0][4]
    #检查横排
    for i in range(5):
        if info[i][0] == info[i][1] and info[i][1] == info[i][2] == info[i][3] ==info[i][4]:
            if info[i][0] != '.':
                return info[i][0]
    #检查竖排
    for i in range(5):
        if info[0][i] == info[1][i] and info[1][i] == info[2][i] == info[3][i] == info[4][i]:
            if info[0][i] != '.':
                return info[0][i]

    return 'y'
hg()
show()
for i in range(h):
    a = input('玩家x,您要把棋子放到第几行:')
    b = input('玩家x,您要把棋子放到第几列:')
    a = int(a)
    b = int(b)

    if a>3:
        print('数字错误!')
    info[a][b] = 'x'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break
    if flag == 'o':
        print('玩家o胜利')
        break
    if flag == '△':
        print('玩家o胜利')
        break
    a1 = input('玩家o,您要把棋子放到第几行:')
    b1 = input('玩家o,您要把棋子放到第几列:')
    a1 = int(a1)
    b1 = int(b1)
    if a>4:
        print('数字错误!')
        print('用了%d次'%q)
    info[a1][b1] = 'o'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break
    if flag == 'o':
        print('玩家o胜利')
        break
    q+=1
    if i == h-1:
        print('次数用完了!')
    a1 = input('玩家△,您要把棋子放到第几行:')
    b1 = input('玩家△,您要把棋子放到第几列:')
    a1 = int(a1)
    b1 = int(b1)
    if a > 4:
        print('数字错误!')
        print('用了%d次' % q)
    info[a1][b1] = '△'
    show()
    flag = judge()
    if flag == 'x':
        print('玩家x胜利')
        break
    if flag == 'o':
        print('玩家o胜利')
        break
    if flag == '△':
        print('玩家△胜利')
        break
    q += 1
    if i == h - 1:
        print('次数用完了!')

最后把你的

变成

 

........

啦 啦 啦 啦 啦 啦 啦 啦 我们下期再见啦 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值