井字棋游戏

import random

#测试井字棋游戏

ROW = 3

COL = 3

def PlayerMove(board,row,col):

   print("玩家走: >")

   x,y = map(int,input().split())

   if(x>=1 and x<= row and y>=1 and y <= col):

        if(board[x-1][y-1]=='_'):

            board[x-1][y-1]='*'

        else:

            print("被占用")

   else:

        print("你乱输是吧,重新写")




 

def ComputerMove(board,row,col):

    x=0

    y=0

    print("电脑走: >")

    while(1):

        x=int(random.uniform(1,10))%row

        y=int(random.uniform(1,10))%col

        if(board[x][y]=='_'):

            board[x][y]='#'

            break


 

def IsFull(board,row,col):

    for i in range(row):

        for j in range(col):

            if board[i][j] == '_':

                return False

    return True


 

def IsWin(board,row,col):

  for i in range(row):

   

    if(board[i][0]==board[i][1] and board[i][1]==board[i][2] and board[i][0]!='_' and board[i][1] != '_' and board[i][2] != '_'):

        return board[i][0]

  for i in range(col):

    if(board[0][i]==board[1][i] and board[1][i]==board[2][i] and board[0][i]!='_' and board[1][i] != '_' and board[2][i] != '_'):

        return board[1][i]


 

    if(board[0][0]==board[1][1] and board[1][1]==board[2][2] and board[0][0] !='—' and board[1][1] != '_' and board[2][2] != '_'):

       return board[0][0]

    if(board[2][0]==board[1][1] and board[1][1]==board[0][2] and board[2][0] !='_' and board[1][1] != '_' and board[0][2] != '_'):

       return board[1][1]

    if IsFull(board,3,3):

        return 'Q'

    return 'C'

def DisplayBoard(board,row,col):

    for i in range(row):

        for j in range(col):

            print(f'{board[i][j]} ',end='')

        print('\n')


 

def IntBoard(board,row,col):

    for i in range(row):

        board.append([])

        for j in range(col):

            board[i].append('_')

    return board



 

def menu():

    print("****************\n")

    print("*****1.play  0.exit*****\n")

    print("****************\n")

    spot = input()

    if spot == '1':

        return True

    elif spot == '0':

        return False

    else:

        print("你tm乱输是吧,重新写")

        menu()

#游戏的实现

def game(board):

    check = menu()

    if check:    

        ret =0

    #创建数组 3 3  

        board = IntBoard(board,3,3)#初始化棋盘

    #打印棋盘

        DisplayBoard(board,3,3)

        while(1):

       

            PlayerMove(board,3,3)

            DisplayBoard(board,3,3)

            ret=IsWin(board,3,3)

            if ret != 'C':

           

                break

           

            ComputerMove(board,3,3)

            DisplayBoard(board,3,3)

            ret=IsWin(board,3,3)

            if ret != 'C':

           

                break

           

   

        if ret=='*':

       

            print("玩家赢\n")

       

        elif ret=='#':

       

            print("电脑赢\n")

        else:

       

            print(f'平局{ret}')

    else:

        print("退出游戏")

       

if __name__ == '__main__':

    board = []

    game(board)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值