Skip to content

Instantly share code, notes, and snippets.

@albionbrown
Last active April 27, 2022 16:39
Show Gist options
  • Save albionbrown/045002da6ac9ce78e9dbdb8ed7b8fcda to your computer and use it in GitHub Desktop.
Save albionbrown/045002da6ac9ce78e9dbdb8ed7b8fcda to your computer and use it in GitHub Desktop.
#! /bin/python
import turtle
import random
print("Let's play Battleships!")
columns = 8
rows = 8
line_length = 300
cell_length = 42
your_ships = []
opp_ships = []
all_cells = []
originX = -100
originY = 100
ship_offset = -21
numbers = []
font_size = 30
number_of_ships = 2
def write_letter(number, x, y):
a = turtle.Turtle()
a.penup()
a.speed("fastest")
a.color("black")
style = ('Arial', font_size)
a.setx(x)
a.sety(y)
a.write(number, font=style, align='center')
a.hideturtle()
numbers.append(a)
# End of write_letter
def print_grid():
#screen_turtle = turtle.Turtle()
#screen_turtle.bgcolor('blue')
grid_turtle = turtle.Turtle()
grid_turtle.penup()
grid_turtle.speed("fastest")
# Draw rows
grid_turtle.setx(originX)
grid_turtle.sety(originY)
grid_turtle.pendown()
for i in range(0, rows):
grid_turtle.forward(line_length)
grid_turtle.penup()
grid_turtle.back(line_length)
grid_turtle.right(90)
grid_turtle.forward(cell_length)
grid_turtle.left(90)
grid_turtle.pendown()
# Draw columns
grid_turtle.setx(-100)
grid_turtle.sety(100)
grid_turtle.pendown()
grid_turtle.right(90)
for i in range(0, columns):
grid_turtle.forward(line_length)
grid_turtle.penup()
grid_turtle.back(line_length)
grid_turtle.left(90)
grid_turtle.forward(cell_length)
grid_turtle.right(90)
grid_turtle.pendown()
write_letter('1', originX+20, originY+20)
write_letter('2', originX+62, originY+20)
write_letter('3', originX+104, originY+20)
write_letter('4', originX+146, originY+20)
write_letter('5', originX+188, originY+20)
write_letter('6', originX+230, originY+20)
write_letter('7', originX+272, originY+20)
write_letter('1', originX-20, originY-35)
write_letter('2', originX-20, originY-77)
write_letter('3', originX-20, originY-119)
write_letter('4', originX-20, originY-161)
write_letter('5', originX-20, originY-203)
write_letter('6', originX-20, originY-245)
write_letter('7', originX-20, originY-287)
# End of print_grid
def print_my_ships():
for i in your_ships:
ship = turtle.Turtle()
ship.penup()
ship.speed("fastest")
ship.shape("circle")
ship.color("blue")
ship.setx(originX + (i["column"] * cell_length) + ship_offset)
ship.sety(originY - ((i["row"] - 1) * cell_length) + ship_offset)
# End of print_my_ships
def check_ship_exists(x, y):
for ship in your_ships:
if (ship["column"] == x and ship["row"] == y):
return True
return False
# Set up the game
print_grid()
def enter_my_ships() :
print("Your turn to place your battleships!")
for i in range(0, number_of_ships):
entry_valid = False
while (not entry_valid):
print("Ship "+str(i+1))
column = int(input("Enter the column: "))
row = int(input("Enter the row: "))
#orientation = input("Enter the orientation. H for horizontal and V for vertical")
if (check_ship_exists(column, row)):
print("A ship is already in that location! Try again.")
else:
entry_valid = True
your_ships.append({
"column": column,
"row": row,
#"orientation": orientation
})
# End of enter_my_ships
def gen_opp_ships():
opp_ships.append({
"column": random.randint(1,7),
"row": random.randint(1,7),
#"orientation": orientation
})
enter_my_ships()
print_my_ships()
gen_opp_ships()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment