Why doesn't this work? Error: Did you create an if statement that prints out "Game Over" if the player reaches 4 incorrect guesses?


#1


I am stuck on the Game Over portion of the exercise.

The error is "Did you create an if statement that prints out "Game Over" if the player reaches 4 incorrect guesses?"


It looks right, though.


from random import randint

board = []

for x in range(5):
    board.append(["O"] * 5)

def print_board(board):
    for row in board:
        print " ".join(row)

print "Let's play Battleship!"
print_board(board)

def random_row(board):
    return randint(0, len(board) - 1)

def random_col(board):
    return randint(0, len(board[0]) - 1)

ship_row = random_row(board)
ship_col = random_col(board)
print ship_row
print ship_col

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))

if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sunk my battleship!"
else:
    if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
        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!"
        board[guess_row][guess_col] = "X"
        if turn == 3:
            print "Game Over"
print_board(board)

for turn in range(5):
    print "Turn"
    print turn + 1


#2

@tmans
You need to write in an if statement at the beginning of your code that checks if the variable "turns" is greater than four. If they have reached this point, it means they have entered 4 incorrect guesses. It would be placed before the first for loop, and would look like this:

if (turn>4):
   print ("Game Over")
else:
   #The rest of your code goes here.

This way, your program will, every time, check if the turns variable is greater than 4. Hope this helps.


#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.