음 ... 코드를 작동 시키는데 끔찍한 시간이 걸렸지 만 일을 재정렬하고 갑자기 올바르게 작동하기 시작했습니다. 내가 솔직하게 무엇을했는지 확신 할 수 없으므로이 질문의 주제가 될 것입니다. 두 개의 .txt 파일에서 업로드 한 데크를 사용하는 간단한 텍스트 기반 카드 게임을 제작 중입니다. Magic : the Gathering을 목표로하지만 사람들이 창의력을 발휘하면 다른 사람들과 함께 작업 할 것입니다. 여기에, 대략적인 개요를 제공하는 것은 일을 배열하는 방법입니다 파이썬 할당 연산자, 함수 정의 및 변수 정의
import random
def shuffle(board1):
def game():
#board=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
#performs most of the actions relating to the game
board[0]=20
board[10]=20
def gameboard(board2):
#displays game board
def draw(board3, numcards, player):
#draws cards
def upload(deckname):
#uploads cards from file
def life(board4):
#asks about which player the life total is changing on, by how much, etc.
#and then does it
def maketoken(board5):
#creates tokens, counters, etc. based on user input
def move(board5):
#accepts user input and moves cards from zone to zone
def play(board6):
#handles casting spells, using abilities, triggered abilities, etc.
#main body of program is below function definitions
board=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
deckname1=input("\nWhat is the name of deck 1?")
deckname2=input("\nWhat is the name of deck 2?")
deck1=upload(deckname1)
deck2=uplaod(deckname2)
board[1]=deck1
board[11]=deck2
#this is where a lot of the other variables get set
game()
(주의 : 대부분의 코드는 간결하고 귀여움 제거되었습니다, 내 코드는 아주 못생긴로)
을 나는 대학을 -level C++ 배경을 만들었고, 최근에 키보드를 고르려고 결정을 내 렸습니다. 할당 연산자 (=)가 예상대로 작동하지 않아서 나를 괴롭 히고 있습니다. 따라서, 파이썬에서 C++의 기능을 사용할 수있는 방법이 있는지 궁금 해서요 .txt 파일에서 데크를 업로드하고 완료되면 upload() 함수를 사용하고 싶습니다. (나는 deck1 = upload (deckname)을 사용한다. (deck2와 같다.) 각 게임 후에 데크를 보충하기 위해 'deck1'과 'deck2'를 사용하고 싶지만, '=' ] = deck1은 보드 [1]이 deck1의 저장 영역을 가리키고 보드 [1] 로의 변경은 deck1을 변경할 것임을 의미하지만, 나는 그것을 원하지 않습니다 ... GRRRR !!!!!! 11). 나에게 열매를 맺기 때문에 어딘가에 해결책이있을 것이라고 확신하지만 그것을 찾을 수 없었다. 감사!!!
편집 : 이것은 내가 일이 이런 식으로 설정할 때받은 오류였다
Traceback (most recent call last):
File "C:\Users\inventor487\Desktop\simplepy.py", line 444, in <module>
game()
File "C:\Users\inventor487\Desktop\simplepy.py", line 114, in game
board[1]=deck1
UnboundLocalError: local variable 'board' referenced before assignment
요약 :
- 가 나는 경우에도 게임() 함수에 보드를 통과해야합니까 그것은 전역 변수로 설정되어 있습니다 (또는 적어도 나는 그것이라고 생각 했었습니다)? 내가 게임() 함수 (이걸 보여주기 위해 주석 처리 한 것) 안에 배정하면 모든 것이 잘 작동하는 것처럼 보입니다. (편집 : 신경 쓰지 마 ... 나는 바보 야.)
- board (보드)의 일부를 game() 내의 값에 할당하면 로컬 변수가됩니다 (예 : board [0] = 20). (편집 : 예, 분명히 ...)
글로벌 스코프 다른 사용하는 것입니다, 어떻게 파이썬 핸들 경계. 그러나 더 많은 정보가 없으면 여기서 우리가 당신을 도울 수있는 것이별로 없습니다. 오류가 무엇입니까? –
예기치 않은 동작을 실제로 재생하는 코드를 표시하면 대답하기가 훨씬 쉽습니다. – sth
C++ 배경 : 목록을 사용하여 참조/개체에 대한 포인터로 작업하고 있습니다. 그래서 여러분이'a = b = c = []'라고 말할 때 모든 변수는 같은 목록 객체를 참조합니다. 리스트를 전달할 때/변수를 할당/수정할 때 만들어지는 복사본은 없습니다. – sth