首页 > 解决方案 > 如何将python中的对象与整数进行比较

问题描述

这就是我写的一切。我知道 Increment.count 等于 9,因为我已经放置了打印语句并且我已经检查了所有内容,但是当我将 Increment.count 设置为 9 时,由于某种原因它并没有结束游戏。结束游戏的方法是看看棋盘上的每个空间是否都已满,并且还没有人获胜。

import random

board_layout = [
    ' ', ' ', ' ',
    ' ', ' ', ' ',
    ' ', ' ', ' '
]


class Increment:
    count = 0

    def __init__(self):
        Increment.count += 1


def board():
    print(board_layout[0] + '|' + board_layout[1] + '|' + board_layout[2])
    print('-' + '+' + '-' + '+' + '-')
    print(board_layout[3] + '|' + board_layout[4] + '|' + board_layout[5])
    print('-' + '+' + '-' + '+' + '-')
    print(board_layout[6] + '|' + board_layout[7] + '|' + board_layout[8])


def human_turn():
    position = ' '
    position = input('Enter a position from 1-9\n')
    position = int(position) - 1
    board_layout[position] = 'O'
    Increment.count += 1
    board()


def computer_turn():
    while True:
        try:
            position = random.randint(1, 9)
            if is_board_empty(position):
                board_layout[position] = 'X'
                board()
                Increment.count += 1
                break
        except:
            pass


def is_board_empty(position):
    return board_layout[position] == ' '


def is_winner():
    if board_layout[0] != ' ' and board_layout[1] != ' ' and board_layout[2] != ' ' and \
            board_layout[0] == board_layout[1] == board_layout[2]:
        board()
        print(board_layout[0] + ' won!')
        return board_layout[0]
    elif board_layout[3] != ' ' and board_layout[4] != ' ' and board_layout[5] != ' ' and \
            board_layout[3] == board_layout[4] == board_layout[5]:
        board()
        print(board_layout[3] + ' won!')
        return board_layout[3]
    elif board_layout[6] != ' ' and board_layout[7] != ' ' and board_layout[8] != ' ' and \
            board_layout[6] == board_layout[7] == board_layout[8]:
        board()
        print(board_layout[6] + ' won!')
        return board_layout[6]
    elif board_layout[0] != ' ' and board_layout[3] != ' ' and board_layout[6] != ' ' and \
            board_layout[0] == board_layout[3] == board_layout[6]:
        board()
        print(board_layout[0] + ' won!')
        return board_layout[0]
    elif board_layout[1] != ' ' and board_layout[4] != ' ' and board_layout[7] != ' ' and \
            board_layout[1] == board_layout[4] == board_layout[7]:
        board()
        print(board_layout[1] + ' won!')
        return board_layout[1]
    elif board_layout[2] != ' ' and board_layout[5] != ' ' and board_layout[8] != ' ' and \
            board_layout[2] == board_layout[5] == board_layout[8]:
        board()
        print(board_layout[2] + ' won!')
        return board_layout[2]
    elif board_layout[0] != ' ' and board_layout[4] != ' ' and board_layout[8] != ' ' and \
            board_layout[0] == board_layout[4] == board_layout[8]:
        board()
        print(board_layout[0] + ' won!')
        return board_layout[0]
    elif board_layout[2] != ' ' and board_layout[4] != ' ' and board_layout[6] != ' ' and \
            board_layout[2] == board_layout[4] == board_layout[6]:
        board()
        print(board_layout[2] + ' won!')
        return board_layout[2]
    elif Increment.count == 9:
        print('draw')


while is_winner() is None and Increment.count != 9:
    human_turn()
    print('\n')
    computer_turn()
    print('\n')


if Increment.count == 9 and is_winner is None:
    print('draw')

标签: python

解决方案


似乎在计算机进行最后一回合时,电路板已满,计算机进入一个永久循环,因此我们将不得不更改计算机代码来修复它。

替换这个

def computer_turn():
    while True:
        try:
            position = random.randint(1, 9)
            if is_board_empty(position):
                board_layout[position] = 'X'
                board()
                Increment.count += 1
                break
        except:
            pass

def computer_turn():
    while True:
        try:
            if Increment.count == 9:  # If the board is already full
                break
            position = random.randint(1, 9)
            if is_board_empty(position):
                board_layout[position] = 'X'
                board()
                Increment.count += 1
                break
        except:
            pass

推荐阅读