2016-04-11 29 views
-1

Ben temel savaş gemileri oyunun bu script üzerinde çalışıyorum. Python'a yeniyim ve yanlış gittiğim yerlere rehberlik istiyorum. Bence tüm kodlar, ihtiyaç duyulan herhangi bir yardımın çok takdir edeceği üzere teşekkürler!Temel python savaş gemisi oyunu ile gerekli rehberlik

def main(): 

    from random import randint 

#initializing board 

board = [] 

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

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

#starting the game and printing the board 

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

#defining where the ship is 
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) 

#asking the user for a guess 

for turn in range(4): 
    guess_row = int(raw_input("Guess Row:")) 
    guess_col = int(raw_input("Guess Col:")) 

    # if the user's right, the game ends 
    if guess_row == ship_row and guess_col == ship_col: 
     print ("Congratulations! You sunk my battleship!") 
     break 
    else: 
     #warning if the guess is out of the board 
     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.") 

     #warning if the guess was already made 

     elif(board[guess_row][guess_col] == "X"): 
      print ("You guessed that one already.") 

     #if the guess is wrong, mark the point with an X and start again 

     else: 
      print ("You missed my battleship!") 
      board[guess_row][guess_col] = "X" 

     # Print turn and board again here 
     print ("Turn " + str(turn+1) + " out of 4.") 
     print_board(board) 

#if the user have made 4 tries, it's game over 
if turn >= 10: 
    print ("Game Over") 



if __name__ == '__main__': 
    main() 
+2

Yaşadığınız sorun nedir? Gönderdiğiniz kod garip, ana() işleviniz sadece bir satırdır ve tek yaptığı ithalat randinttir. –

+2

Soru nedir? – jDo

+0

Merhaba esas olarak nerede yanlış gidiyor! – John

cevap

1

Her şeyden önce, kodunuz girilmez çünkü girinti kırılmıştır. Python'da, girinti programınızı daha okunabilir kılan iyi bir stil değildir; Bu, bilgisayara programınızın yapısını anlatır. Girintiyi düzelttikten sonra, programınızı denedim ve beklendiği gibi çalıştı. “Game Over” mesajı basılmamış olsa da, yazdırılacağı noktada turn değişkeni, 10 değil, en son atanan 3 değerini içerir. kodunuzu

Bazı rastgele düşünceler:

  • Size aksi yapmak için bir nedeniniz yoksa dosyasının başında tüm ithalat ifadeleri koymak iyi tarzı.
  • board değişkeni random_row ve random_col'un tanımlandığı alanda görünür durumdadır, dolayısıyla bunu bir parametre olarak iletmeniz gerekmez.
  • Kartın boyutu ve dönüş sayısı iki kez sabit kodlanmıştır; İkinci durumda, (muhtemelen yanlışlıkla) farklı numaralar kullanıyorsunuz. Sen o değerler için sabitleri (değiştirilemez büyük harf adları ile değişkenleri) tanımlayan ve daha sonra bunları kullanarak kod daha okunabilir yapabilirsiniz:

    BOARD_WIDTH = 5 
    BOARD_HEIGHT = 5 
    MAX_TURNS = 4 
    
    ... 
    
    def random_col(): 
        return random.randint(0, BOARD_WIDTH - 1) 
    
  • break sonra, else çünkü ihtiyacım yok döngü zaten bırakılır.

  • elif ile parantezlere ihtiyacınız yoktur.