Для школьного проекта я должен сделать игру «Броненосец». В игре у игрока 4 корабля, и игра заканчивается, если все корабли одного игрока уничтожены. Я пытаюсь заставить эту функцию работать.Линейный корабль в Python
Это код:
board = []
for x in range(10):
board.append(["O"] * 10)
def print_board(board):
for row in board:
print " ".join(row)
print "Let's play Battleship!"
print_board(board)
def Input_row1(board):
return int(raw_input("In what row do you want to place your first ship?"))
def Input_col1(board):
return int(raw_input("In what col do you want to place your first ship?"))
def Input_row2(board):
return int(raw_input("In what row do you want to place your second ship?"))
def Input_col2(board):
return int(raw_input("In what col do you want to place your second ship?"))
def Input_row3(board):
return int(raw_input("In what row do you want to place your third ship?"))
def Input_col3(board):
return int(raw_input("In what col do you want to place your third ship?"))
def Input_row4(board):
return int(raw_input("In what row do you want to place your fourth ship?"))
def Input_col4(board):
return int(raw_input("In what col do you want to place your fourth ship?"))
ship_row1 = Input_row1(board)
ship_col1 = Input_col1(board)
ship_row2 = Input_row2(board)
ship_col2 = Input_col2(board)
ship_row3 = Input_row3(board)
ship_col3 = Input_col3(board)
ship_row4 = Input_row4(board)
ship_col4 = Input_col4(board)
for turn in range(9):
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
if guess_row == ship_row1 and guess_col == ship_col1 or guess_row == ship_row2 and guess_col == ship_col2 or guess_row == ship_row3 and guess_col == ship_col3 or guess_row == ship_row4 and guess_col == ship_col4:
print "Congratulations! You sunk my battleship!"
if True:
total_ships = 4
total_ships = total_ships - 1
print total_ships
if total_ships == 0:
print "You destroyed all hostile ships!"
else:
if (guess_row < 0 or guess_row > 9) or (guess_col < 0 or guess_col > 9):
print "Oops, that's not even in the ocean."
elif(board[guess_row][guess_col] == "X"):
print "You guessed that one already."
else:
print "You missed my battleship!"
if turn == 9:
print "GAME OVER"
if turn == 9:
print "Game Over"
board[guess_row][guess_col] = "X"
print "Turn", turn + 1
print_board(board)
Проблема заключается в том, что после того, как второй корабль был поражен, тем total_ships остается 3, и не повернется 2. Почему это работает неправильно?
в функциях вам не нужен параметр платы – efirvida
положить 'total_ships = 4' вне контура – efirvida
K Thijssen: Помните, что если ответ решить вашу проблему, вы должны«Принять», что ответ! –