Python Forum
Battleships Program must display how many ships are left after each turn
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Battleships Program must display how many ships are left after each turn
#1
Hello everyone. This is my Battleships program for python. I currently want to make the program to display how many ships are left after each turn. The way I've coded is that it tells me after the second turn. However I want to make it to display the message after each turn. If anyone can help that would be much appriciated

import random
store =
for x in range(9):
store.append(random.randint (0 , 8))
for y in range(9):
store.append(random.randint (0 , 8))

#Setup Global Variables------------------

torpedos = 30
theSea = [["_" for i in range(9)] for j in range(9)] #2D list 9x9
theSea[x][y] = "S" #Place the ship in position x,y
ships = 10 #How many ships to find

#Define procedures and functions --------------------------------

def displayGrid():
print()
print(" 1 2 3 4 5 6 7 8 9 ") #display column headings
for y in range(0,9):
print((y+1), " " , end="") #print without new line
for x in range(0,9):
if (theSea[x][y] =="S"):
print("_", " " , end="") #hide the ship
else:
print(theSea[x][y] , " " , end="") #print contents of array
print() #next line
print()

#begin main thread -------------------------------------------------
name = input("What is your name:")
print("Welcome to BATTLESHIPS!" + name)
print("10 enemy ships are hidden somewhere at sea")
print("You only have 30 torpedos to find it!")

while ships > 0 and torpedos > 0:

displayGrid()

print()

print("You have " +str(torpedos) + " torpedos left.")

print("Target coordinates, Captain?")

refx = int(input("Enter the x coordinate: "))
refy = int(input("Enter the y coordinate: "))

refx = refx -1 #computers count from 0
refy = refy -1 #this could be done with fewer lines

if (theSea[refx][refy] == "S"):
theSea[refx][refy] = "X"
print(" DIRECT HIT, CAPTAIN!")
ships = ships - 1
else:
theSea[refx][refy] = "M"
print("You missed..." + name)
print("You will waste tropedos if you fire here again!")
torpedos = torpedos - 1
input() #wait for user to press enter before redrawing grid

if ships == 0:
print("Huzah! You sunk all the ships.")
else:
print("You ran out of torpedos" + name)

print("GAME OVER" + name )
print("It took {} torpedos to sink this ship".format(torpedos))
Reply
#2
1. USE CODE TAGS. If you want people to help you. It that python symbol. Then put code between the block.
I really want you to edit your post and show us you can do it.

2. I'm really confuse that you haven't figure it out. If you can print torpedos every turn. You can print ship left every turn.
99 percent of computer problems exists between chair and keyboard.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Pyglet] Space ships movements pierrem13 1 3,139 Nov-29-2017, 04:50 AM
Last Post: Windspar
  Python BattleShips Random Ship placement FnaticPutin 2 7,746 Oct-13-2017, 11:33 PM
Last Post: Windspar

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020