Game over help


#1

hi can you please check my for turn in range(4) statement this is my code:

if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sunk my battleship!"
else:
    for turn in range(4):
        print "Turn",(turn + 1)
    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."
        print_board(board)
    elif(board[guess_row][guess_col] == "X"):
        for turn in range(4):
            print "Turn",(turn + 1)
        print "You guessed that one already."
    else:
        for turn in range(4):
            print "Turn",(turn + 1)
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
    # Print (turn + 1) here!
        print_board(board)

Game Over -- Please help!
#2

you have multiply for loops? You just need one, it should be before you prompt the user for coordinates, but we can't see this since you didn't include all your code

Please post your full code and use markup:


#3

here you are i have edited it:

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:
    for turn in range(4):
        print "Turn",(turn + 1)
    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."
        print "Turn",(turn + 1)
        print_board(board)
    elif(board[guess_row][guess_col] == "X"):
        print "Turn",(turn + 1)
        print "You guessed that one already."
    else:
        print "Turn",(turn + 1)
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
    # Print (turn + 1) here!
        print_board(board)
    if turn == 3 :
        print'Game Over'

#4

see these comments:

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!

based on them, where do you think your loop should start?

it obviously referring to the loop. Another hint where the loop should start. Also, you don't need that much print statement to show which turn they are at, one should be enough.


#5

i'll try and tell so i must put my code inside the for loop right?


#6

you should place the for loop at the right place, it should be clear by now where this should be


#7

so what do you think in my opinion it's wrong
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:"))
for turn in range(4):
print "Turn",turn+1
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 + 1) here!
print_board(board)


#8

these lines:

guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))

are not in the loop, please use markup so your indent shows on the forum:

I can't repeating things i already said


#9

it worked thanks alot


#10

hey why when i enter 2 in row and 4 in col it gives me congratulations i can see these numbers in the debug screen


#11

because you print them?

they are here:

print ship_row
print ship_col

you can remove these lines if you want


#12

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