Last active
April 27, 2022 16:39
-
-
Save albionbrown/045002da6ac9ce78e9dbdb8ed7b8fcda to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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