首页 > 解决方案 > 我需要帮助我不断收到此错误。TypeError:'Board' 对象不可下标

问题描述

我一直有同样的错误出现


    Tracback (most recent call last):
  File "main.py", line 7, in <module>
    game = Game(board, screensize)
  File "/home/runner/Minesweeper-game/game.py", line 7, in __init__
    self.board = Board(size, prob)
  File "/home/runner/Minesweeper-game/board.py", line 9, in __init__
    for row in range(size[0]):
TypeError: 'Board' object is not subscriptable 

import random

from piece import Piece class Board: def init (self, size, prob): self.size = size self.board = [] self.won = False self.lost = False for row in range(size[0]): row = [] for col in range(size[1]): bomb = random.random() < prob piece = Piece(bomb) row.append(piece) self.board.append(row) self.setNeighbors() self. setNumAround()

def print(self):
    for row in self.board:
        for piece in row:
            print(piece, end=" ")
        print()

def getBoard(self):
    return self.board

def getSize(self):
    return self.size

def getPiece(self, index):
    return self.board[index[0]][index[1]]

def handleClick(self, piece, flag):
    if piece.getClicked() or (piece.getFlagged() and not flag):
        return
    if flag:
        piece.toggleFlag()
        return
    piece.handleClick()
    if piece.getNumAround() == 0:
        for neighbor in piece.getNeighbors():
            self.handleClick(neighbor, False)
    if piece.getHasBomb():
        self.lost = True
    else:
        self.won = self.checkWon() 



def checkWon(self):
    for row in self.board:
        for piece in row:
            if piece.getHasBomb() and not piece.getClicked():
                return False
    return True

def getWon(self):
    return self.won

def getLost(self):
    return self.lost

def setNeighbors(self):
    for row in range(len(self.board)):
        for col in range(len(self.board[0])):
            piece = self.board[row][col]
            neighbors = []
            self.addToNeighborsList(neighbors, row, col)
            piece.setNeighbors(neighbors)

def addToNeighborsList(self, neighbors, row, col):
    for r in range(row - 1, row + 2):
        for c in range(col - 1, col + 2):
            if r == row and c == col:
                continue
            try:
                neighbors.append(self.board[r][c])
            except:
                pass

def setNumAround(self):
    for row in self.board:
        for piece in row:
            piece.setNumAround()

我不知道发生了什么,但我一直在尝试修复它,但没有任何帮助。我确实有更多 .py 但这是有问题的。我不知道该怎么办了。似乎当我修复某些东西时它会损坏并且某些东西甚至没有被使用。

标签: pythonpygame

解决方案


推荐阅读