Battleship

25 views
Skip to first unread message

José Casadei

unread,
Apr 11, 2014, 11:14:54 PM4/11/14
to programaded...@googlegroups.com
Estou fazendo as tarefas do Codecademy ao mesmo tempo e fiz as tarefas do módulo Battleship, que pede para criar um código para jogar o Batalha Naval.

O problema é que eu sei que não está correto, mas o Codecademy aceita como certo.

O correto seria eu tentar uma vez e, caso eu não acerte logo de cara, ter mais três chances. Mas o código que eu escrevi me dá uma chance e imprime a mesma resposta (ou razão para minha derrota) o restante das vezes.

Será que é só um problema de indentação (que eu não consegui identificar)?

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)

# 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:"))

turn = 0
for turn in range(4):
    if guess_row == ship_row and guess_col == ship_col:
        print "Congratulations! You sunk my battleship!"
        break
    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_board(board)
        if turn == 3:
            print "Game Over"
    print "Turn: ", turn + 1 

Marco Túlio Pires

unread,
Apr 15, 2014, 11:12:40 AM4/15/14
to José Casadei, programadedados2014_01
Zé,

Você só dá uma chance pro usuário. Como esperar que ele peça pra você tentar adivinhar mais vezes?

A parte do código que pede para o usuário tentar adivinhar está fora do loop... Não deveria ser, uma vez que o exercício fala assim:


# Everything from here on should go in your for loop!

abs


--
Você recebeu essa mensagem porque está inscrito no grupo quot;Aprendendo a Programar com o MIT e a Escola de Dados" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para programadedados20...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para programaded...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/programadedados2014_01.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/programadedados2014_01/f97ea666-baa4-4de1-9bfc-bb29921602df%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Marco Túlio Pires :: journogeek :: @mtrpires
Reply all
Reply to author
Forward
0 new messages