python制作井字棋程序

井字棋的九个格子可以用二进制表示,整个运算过程用位运算。

三个相同标记连续在一条直线,事先准备好样本,如果样本与使用and运算相同,就判断三个标记是一起的。

代码如下

import random

goal=[
    0b111000000,0b000111000,0b000000111,0b100100100,
    0b010010010,0b001001001,0b100010001,0b001010100
]

def check(player):
    for mask in goal:
        if player & mask ==mask:
            return True
    return False
    
def play(p1,p2):
    if check(p2):
        print([bin(p1),bin(p2)])    
        return
        
    board=p1 | p2
    if board==0b111111111:
        print([bin(p1), bin(p2)])  
        return
        
    w=[i for i in range(9) if(board & (1<<i))==0]     
    r=random.choice(w) 
    play(p2,p1| 1<<r)
play(0,0)    
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值