头歌Python,7号的,作业,

 

雷几把,不要急了,在帮你抄了。

1,井字棋(分为三个文件,雷几把,你点一下上边那个箭头就可以调开文件夹,别像个竹一样。)

import random
import board
 
 
class Player(object):
    """玩家类"""
 
    def __init__(self, name):
        self.name = name  # 姓名
        self.score = 0  # 成绩
        self.chess = None  # 棋子
 
    def move(self, chess_board):
        """在棋盘上落子
        :param chess_board:
        """
        # 1. 由用户输入要落子索引
        index = -1
        while index not in chess_board.movable_list:
            try:
                index = int(input("请 “%s” 输入落子位置 %s:" %
                                  (self.name, chess_board.movable_list)))
            except ValueError:
                pass
 
        # 2. 在指定位置落子
        chess_board.move_down(index, self.chess)
 
 
class AIPlayer(Player):
    """智能玩家"""
 
    def move(self, chess_board):
        """在棋盘上落子
        :param chess_board:
        """
        print("%s 正在思考落子位置..." % self.name)
 
        # 1. 查找我方必胜落子位置
        for index in chess_board.movable_list:
            if chess_board.is_win(self.chess, index):
                print("走在 %d 位置必胜!!!" % index)
                chess_board.move_down(index, self.chess)
 
                return
 
        # 2. 查找地方必胜落子位置-我方必救位置
        other_chess = "O" if self.chess == "X" else "X"
 
        for index in chess_board.movable_list:
            if chess_board.is_win(other_chess, index):
                print("敌人走在 %d 位置必输,火速堵上!" % index)
                chess_board.move_down(index, self.chess)
 
                return
 
        # 3. 根据子力价值选择落子位置
        index = -1
        # 没有落子的角位置列表
        corners = list(set([0, 2, 6, 8]).intersection(chess_board.movable_list))
        # 没有落子的边位置列表
        edges = list(set([1, 3, 5, 7]).intersection(chess_board.movable_list))
 
        if 4 in chess_board.movable_list:
            index = 4
        elif corners:
            index = random.choice(corners)
        elif ed
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值