저는 플레이어와 보드라는 2 개의 파이썬 클래스가 있습니다. 보드에는 공백에 대한 "A1"참조 스타일이있는 사전이 있습니다.오브젝트 내부의 오브젝트를 참조하는 파이썬
player.py의 플레이어 클래스 :
from board import Board
class Player:
def __init__(self):
self.name = input("Name: ")
self.board = Board(3, ["A", "B", "C"])
board.py의 보드 클래스 :
플레이어가 인스턴스화class Board:
EMPTY = "0"
spaces = {}
def __init__(self, size, letters):
for let in letters:
for num in range(1, size + 1):
self.spaces["{}{}".format(let, num)] = self.EMPTY
def place_piece(self, spot):
self.spaces[spot] = "X"
def display_board(self):
for let in letters:
for num in range(1, size + 1):
print("\n" + self.spaces["{}{}".format(let, num)]
, 그것은 내부 보드 개체를 만듭니다. 2 명의 플레이어가 생성되고 각각이 플레이어 []에 추가됩니다. 각 플레이어의 턴은 current_player라는 간단한 1/0 변수로 선택됩니다.
from player import *
from board import *
current_player = 1
players = []
player_1 = Player()
player_2 = Player()
players.append(player_1)
players.append(player_2)
while True:
# Switches players
current_player = abs(current_player - 1)
# Prints the current player's name
print(players[current_player].name)
# Calls some method which should alter the current player's board
players[current_player].board.place_piece(input("> "))
# Calls some method which should show the current player's board
players[current_player].board.show_board()
분명히 매우 간단. 이름은 매번 정확하게 인쇄됩니다. 그러나 보드는 두 플레이어 모두에게 첫 번째 플레이어의 보드만을 사용합니다. 플레이어의 이름이 올바르게 인쇄되기 때문에 작동하는 것입니다.
보드를 별도로 만들고 자체 목록에 배치하더라도 문제가 지속됩니다.
내가 뭘 잘못하고 있니?
귀하의 질문에'Player'와'Board' 클래스를 넣어야합니다. 여기에'player.py'와'board.py' 파일을 넣으면 더 좋을 것입니다. –
파일별로 파일 내용을 의미합니다. 당신이'에서 가져 오기 *'를하고 있기 때문에 [좋지 않습니다] (http://stackoverflow.com/questions/2386714/why-is-import-bad). –
그리고 무엇을'print ("{}) 보드에 조각을 넣으십시오."형식 (players [current_player] .name) players [current_player] .board.place_piece()'가 맞습니까? 그 코드는 무엇입니까? 또한 place_piece() 함수는 무엇입니까? –