저는 파이썬에서 초보자이며 플레이어가 왼쪽/오른쪽으로 이동하려는 곳의 수를 입력하는 보드 게임을 만들고 있습니다. 그러나 때로는 올바르게 움직이고 때로는 움직이지 않는 경우도 있습니다. 내 격자 배열과 관련이 있다고 생각하지만 확실하지 않습니다 ... 누군가가 나를 도울 수 있다면 좋을 것입니다, 감사합니다! 나는 내 문제와 프로그램이 명확하게 포함하는 부품 모르겠어요으로 사용자가 그리드를 탈출하지 않도록 내가 검증을 포함한 모든 내 코드를 첨부왜 내 배열 편집이 제대로 작동하지 않습니까?
choice=0
b=0
oldP=0
newP=0
player_location='X'
x=8
y=0
xi=0
yi=0
up=0
down=0
left=0
right=0
new_board=[xi][yi]
gold_coins=0
bandits=5
treasure_chests=10
a=1
xi2=0
yi2=0
import random
def menu():
print('If you would like to play the Treasure Hunt , press 1')
choice=input('If not, press any key to exit')
if choice=='1':
print('Great! You have made the right choice :)')
else:
print('Goodbye.')
quit()
menu()
def grid():
new_board = [ ]
def board():
new_board = [ ]
top_row = [' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ']
new_board.append(top_row)
for x in range(0,8):
row = [' 0 ']*8
new_board.append(row)
return new_board
def print_board(b):
row_letters = [' ','A','B','C','D','E','F','G','H']
i = 0
for row in b:
print (row_letters[i],''.join(row))
i=i+1
new_board = board()
xi=int(8)
yi=int(0)
new_board[xi][yi] = player_location
print_board(new_board)
while a==1:
upordown=input('Would you like to move up or down? Enter \'u\' for up or \'d\' for down.').lower()
upordown=upordown.lower()
while not (upordown== 'u' or upordown== 'd'):
print('Invalid input. Please try again')
upordown= input().lower()
while upordown=='u':
try:
up=int(input('How many spaces would you like to move up?'))
b=0
except:
print('This is not a valid input, please enter a number.')
b=1
if b==0:
break
while upordown=='d':
try:
down=int(input('How many spaces would you like to move down?'))
b=0
except:
print('This is not a valid input, please enter a number.')
b=1
if b==0:
break
leftorright=input('Would you like to move left or right Enter \'l\' for left or \'r\' for right.').lower()
leftorright.lower()
while not (leftorright== 'l' or leftorright== 'r'):
print('Invalid input. Please try again')
leftorright= input().lower()
while leftorright=='l':
try:
left=int(input('How many spaces would you like to move left?'))
b=0
except:
print('This is not a valid input, please enter a number.')
b=1
if b==0:
break
while leftorright=='r':
try:
right=int(input('How many spaces would you like to move right?'))
b=0
except:
print('This is not a valid input, please enter a number.')
b=1
if b==0:
break
print('Okay...')
grid()
while True:
board()
player_location=' X '
if upordown=='d' and leftorright=='l':
new_board[y-down][x-left] = player_location
new_board = board()
xi2=int(xi2-left)
yi2=int(yi2-down)
print ("The current x location is",xi)
print ("The current y location is",yi)
print ("The amount you chose to go down was",down)
print ("The amount you chose to go right was",left)
xi = int(xi+left)
print("The new x location is",xi2)
yi = int(yi+down)
print("The new y location is",yi2)
print(' ')
while 0>xi2 or xi2>8 or 0>yi2 or yi2>8:
print('Your move was illegal. Please enter a move that will position you within the grid')
left=int(input('Please enter the number of moves you would like to move right'))
down=int(input('Please enter the number of moves you would like to move up.'))
xi=int(xi+left)
yi=int(yi+down)
new_board[xi][yi] = player_location
print_board(new_board)
break
elif upordown=='d' and leftorright=='r':
new_board = board()
xi2=int(xi2+right)
yi2=int(yi2-down)
print ("The current x location is",xi)
print ("The current y location is",yi)
print ("The amount you chose to go down was",down)
print ("The amount you chose to go right was",right)
xi = int(xi+right)
print("The new x location is",xi2)
yi = int(yi+down)
print("The new y location is",yi2)
print(' ')
while 0>xi2 or xi2>8 or 0>yi2 or yi2>8:
print('Your move was illegal. Please enter a move that will position you within the grid')
right=int(input('Please enter the number of moves you would like to move right'))
down=int(input('Please enter the number of moves you would like to move down.'))
xi=int(xi+right)
yi=int(yi+down)
new_board[xi][yi] = player_location
print_board(new_board)
break
elif upordown=='u' and leftorright=='l':
new_board = board()
xi2=int(xi2+left)
yi2=int(yi2-up)
print ("The current x location is",xi)
print ("The current y location is",yi)
print ("The amount you chose to go up was",up)
print ("The amount you chose to go left was",left)
xi = int(xi+left)
print("The new x location is",xi2)
yi = int(yi-up)
print("The new y location is",yi2)
print(' ')
while 0>xi2 or xi2>8 or 0>yi2 or yi2>8:
print('Your move was illegal. Please enter a move that will position you within the grid')
left=int(input('Please enter the number of moves you would like to move right'))
up=int(input('Please enter the number of moves you would like to move up.'))
xi=int(xi-left)
yi=int(yi-up)
new_board[xi][yi] = player_location
print_board(new_board)
break
elif upordown=='u' and leftorright=='r':
new_board = board()
xi2=int(xi2+right)
yi2=int(yi2+up)
print ("The current x location is",xi)
print ("The current y location is",yi)
print ("The amount you chose to go up was",up)
print ("The amount you chose to go right was",right)
xi = int(xi-right)
print("The new x location is",xi2)
yi = int(yi+up)
print("The new y location is",yi2)
print(' ')
while 0>xi2 or xi2>8 or 0>yi2 or yi2>8:
print('Your move was illegal. Please enter a move that will position you within the grid')
right=int(input('Please enter the number of moves you would like to move right'))
up=int(input('Please enter the number of moves you would like to move up.'))
xi=int(xi-right)
yi=int(yi-up)
new_board[xi][yi] = player_location
print_board(new_board)
break
.
_ "저는 파이썬에서 초보자입니다."- _ 그만해! 몇 걸음 뒤로 물러서 야합니다. 이런 프로젝트는 초보자가해야 할 일이 아닙니다. tic-tac-toe 제작과 같은 것을 시도한 다음 위로 이동하십시오. –
@leaf 확실히 사실이지만 조금 모험적입니다! 그러나 나는 이것을 웹 사이트에서 초보자가하는 도전으로 보았고 실제로 그것을 끝내기를 원했습니다. – user5095215
"초보자"를 정의하십시오. _Just Python_을 다운로드하거나 _I에서 몇 달 동안 Python을 사용하고있는 초보자를 의미합니다. 바로 지금 당신의 코드에서 볼 수있는 가장 큰 문제점은 매우 장황하다는 것입니다. –