Hello. I recently started to code a battleship game in python and after debugging, I wanted to see if I could write a piece of code that places the ship in a random location each time I run the game. I shall place the code below, and if anyone could help me it would be much appreciated. If anyone has any ideas on how to improve the general code. I'm following a set of challenges along with this in order to learn how to create games in python because it's part of my coursework for school. The ship seems to spawn at the same location every time which is 2,3. Can someone help?
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[1][2] = "S" #Place the ship in position x,y
ships = 1 #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("An enemy ship is hidden somewhere at sea")
print("You only have 10 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...")
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")
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[1][2] = "S" #Place the ship in position x,y
ships = 1 #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("An enemy ship is hidden somewhere at sea")
print("You only have 10 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...")
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")