Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import random, randint
- hit_board = []
- enemy_ship_board = []
- for x in range(10):
- hit_board.append(["0"] * 10)
- enemy_ship_board.append(["0"] * 10)
- def new_screen():
- print("Battleship!")
- print_board(hit_board)
- def print_board(board):
- for row in board:
- print(" ".join(row))
- print("\n")
- def random_position(board, xBound, yBound):
- xCoordinate = randint(0, (len(board) - 1) - xBound)
- yCoordinate = randint(0, (len(board[0]) - 1) - yBound)
- return (xCoordinate, yCoordinate)
- class Ship:
- def __init__(self, name, size):
- self.size = size
- self.name = name
- self.direction = (int)(random() * 2) * 90
- self.positions = []
- self.damage = 0
- empty_space = False
- row = 0
- col = 0
- while not empty_space:
- empty_space = True
- if self.direction == 0:
- (row, col) = random_position(hit_board, self.size, 0)
- for i in range(self.size):
- if enemy_ship_board[row + i][col] == 1:
- empty_space = False
- break
- elif self.direction == 90:
- (row, col) = random_position(hit_board, 0, self.size)
- for i in range(self.size):
- if enemy_ship_board[row][col + i] == 1:
- empty_space = False
- break
- if self.direction == 0:
- for i in range(self.size):
- self.positions.append((row + i, col))
- enemy_ship_board[row + i][col] = 1
- elif self.direction == 90:
- for i in range(self.size):
- self.positions.append((row, col + i))
- enemy_ship_board[row][col + i] = 1
- ships = []
- ships.append(Ship("submarine", 1))
- ships.append(Ship("corsair", 2))
- ships.append(Ship("cruiser", 3))
- ships.append(Ship("battleship", 4))
- ships.append(Ship("carrier", 5))
- #for debugging
- for ship in ships:
- print(ship.name + " positions: ")
- for position in ship.positions:
- print(str(position[0]) + "," + str(position[1]))
- def main():
- while(len(ships) > 0):
- new_screen()
- guess_row = int(input("Enter Row: "))
- guess_col = int(input("Enter Col: "))
- if (guess_row < 0 or guess_row > (len(hit_board) - 1) or guess_row == "") or (guess_col <0 or guess_col > (len(hit_board[0]) - 1) or guess_col == ""):
- print("That Position is not on the board")
- elif(hit_board[guess_row][guess_col] != "0"):
- print("You already fired at that spot")
- else:
- hit = False
- for ship in ships:
- for position in ship.positions:
- if guess_row == position[0] and guess_col == position[1]:
- hit = True
- ship.damage += 1
- if ship.damage == ship.size:
- print("You sunk my " + ship.name)
- for section in ship.positions:
- hit_board[section[0]][section[1]] = "D"
- ships.remove(ship)
- else:
- print("You hit my " + ship.name)
- hit_board[guess_row][guess_col] = "H"
- break
- if hit == True:
- break
- if hit == False:
- print("Ha you missed")
- hit_board[guess_row][guess_col] = "X"
- print("you sunk all my ships")
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement