16/19 "game over" won't print


#1

could you tell me if this is the correct place to put the if statement for printing out "game over"

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!

for turn in range(4):
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"
    print "Turn", turn+1
    if turn == 3:
        print "Game over"
    print_board(board)

#2

Try capitalizing the "O" in "Game over". I spent a lot of time trying to figure that one out. It shouldn't matter, but it made the difference for me.


#3

You have it inside the else function. This is where u want it to be

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"
    print "Turn", turn+1
if turn == 3:
    print "Game over"
print_board(board)

#4

Thank you both very much. It worked with what you suggested.


#5

Bloody capital "O"! I've spent days debuging the code! Thanks :+1:


#6

Where exactly are we suppose to put the ....print "Turn", turn + 1...because my code is the same but it keeps telling me oops, try again. Did you remember to print out turn + 1 each turn?


#7

It is inside the block of code that is comparing the guess to the position of the ship. It is under the last else: block and indented the same as all the else blocks.
I hope that helps


#8

Thank you! That solved my problem (which I had spent a lot of time on).


#9

thanks ...yes, it should be outisde else function to print this "Game Over"..nice catch..


#10

Make sure its not inside of the 'else' statement. you probably figured it out already since its been 17 days but if not post the code if that didnt work and ill try and see whats up


#11

for turn in range(4):
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
print "Turn", turn +1