Pash1986 commited on
Commit
0464478
·
verified ·
1 Parent(s): 0f9bb91

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -26
app.py CHANGED
@@ -19,28 +19,16 @@ SHIPS = [
19
  {"name": "Destroyer", "size": 2, "symbol": ":speedboat:"}
20
  ]
21
 
22
- # Initialize difficulty in session state if not present
23
- if 'difficulty' not in st.session_state:
24
- st.session_state.difficulty = "Beginner"
25
-
26
- # Add difficulty selector
27
- st.session_state.difficulty = st.selectbox(
28
- "Select Difficulty",
29
- ["Beginner", "Expert"],
30
- index=0 if st.session_state.difficulty == "Beginner" else 1
31
- )
32
-
33
  # MongoDB Atlas Connection
34
  client = MongoClient(os.environ.get('MONGODB_ATLAS_URI'))
35
  db = client['battleship']
36
  games = db['games']
37
 
38
- region = 'us-east-1' if st.session_state.difficulty == "Begginer" else 'us-west-2'
39
  # AWS Bedrock Client Setup
40
  bedrock_runtime = boto3.client('bedrock-runtime',
41
  aws_access_key_id=os.environ.get('AWS_ACCESS_KEY'),
42
  aws_secret_access_key=os.environ.get('AWS_SECRET_KEY'),
43
- region_name=region)
44
 
45
  def get_bedrock_claude_move(board, openent_moves=None):
46
  """
@@ -79,6 +67,47 @@ def create_empty_board():
79
  """Create an empty game board."""
80
  return [[EMPTY for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  def place_ships_randomly(board):
83
  """Place ships randomly on the board."""
84
  for ship in SHIPS:
@@ -91,17 +120,6 @@ def place_ships_randomly(board):
91
  break
92
  return board
93
 
94
- def can_place_ship(board, row, col, size, direction):
95
- """Check if a ship can be placed at the given position."""
96
- if direction == 'horizontal':
97
- if col + size > BOARD_SIZE:
98
- return False
99
- return all(board[row][col+i] == EMPTY for i in range(size))
100
- else:
101
- if row + size > BOARD_SIZE:
102
- return False
103
- return all(board[row+i][col] == EMPTY for i in range(size))
104
-
105
  def place_ship(board, row, col, size, direction, symbol):
106
  """Place a ship on the board."""
107
  if direction == 'horizontal':
@@ -113,6 +131,9 @@ def place_ship(board, row, col, size, direction, symbol):
113
 
114
  def initialize_game():
115
  """Initialize the game state."""
 
 
 
116
  if 'game_state' not in st.session_state:
117
  st.session_state.game_state = {
118
  'player_board': place_ships_randomly(create_empty_board()),
@@ -227,9 +248,18 @@ def opponent_turn():
227
 
228
  def main():
229
  """Main function to run the Battleship game."""
230
- st.title('Battleship Game vs Bedrock 🏴‍☠️')
231
 
232
-
 
 
 
 
 
 
 
 
 
233
 
234
  initialize_game()
235
  if st.session_state.game_state['game_over']:
 
19
  {"name": "Destroyer", "size": 2, "symbol": ":speedboat:"}
20
  ]
21
 
 
 
 
 
 
 
 
 
 
 
 
22
  # MongoDB Atlas Connection
23
  client = MongoClient(os.environ.get('MONGODB_ATLAS_URI'))
24
  db = client['battleship']
25
  games = db['games']
26
 
 
27
  # AWS Bedrock Client Setup
28
  bedrock_runtime = boto3.client('bedrock-runtime',
29
  aws_access_key_id=os.environ.get('AWS_ACCESS_KEY'),
30
  aws_secret_access_key=os.environ.get('AWS_SECRET_KEY'),
31
+ region_name="us-west-2")
32
 
33
  def get_bedrock_claude_move(board, openent_moves=None):
34
  """
 
67
  """Create an empty game board."""
68
  return [[EMPTY for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
69
 
70
+ def is_valid_position(row, col):
71
+ """Check if a position is within the board boundaries."""
72
+ return 0 <= row < BOARD_SIZE and 0 <= col < BOARD_SIZE
73
+
74
+ def check_adjacent_cells(board, row, col):
75
+ """Check if any adjacent cells (including diagonals) contain a ship."""
76
+ for i in range(-1, 2):
77
+ for j in range(-1, 2):
78
+ if i == 0 and j == 0:
79
+ continue
80
+ new_row, new_col = row + i, col + j
81
+ if is_valid_position(new_row, new_col) and board[new_row][new_col] != EMPTY:
82
+ return False
83
+ return True
84
+
85
+ def can_place_ship(board, row, col, size, direction):
86
+ """Check if a ship can be placed at the given position."""
87
+ if direction == 'horizontal':
88
+ if col + size > BOARD_SIZE:
89
+ return False
90
+ # Check the ship's cells and their adjacent cells
91
+ for i in range(-1, size + 1):
92
+ for j in range(-1, 2):
93
+ check_row = row + j
94
+ check_col = col + i
95
+ if is_valid_position(check_row, check_col):
96
+ if board[check_row][check_col] != EMPTY:
97
+ return False
98
+ else: # vertical
99
+ if row + size > BOARD_SIZE:
100
+ return False
101
+ # Check the ship's cells and their adjacent cells
102
+ for i in range(-1, 2):
103
+ for j in range(-1, size + 1):
104
+ check_row = row + j
105
+ check_col = col + i
106
+ if is_valid_position(check_row, check_col):
107
+ if board[check_row][check_col] != EMPTY:
108
+ return False
109
+ return True
110
+
111
  def place_ships_randomly(board):
112
  """Place ships randomly on the board."""
113
  for ship in SHIPS:
 
120
  break
121
  return board
122
 
 
 
 
 
 
 
 
 
 
 
 
123
  def place_ship(board, row, col, size, direction, symbol):
124
  """Place a ship on the board."""
125
  if direction == 'horizontal':
 
131
 
132
  def initialize_game():
133
  """Initialize the game state."""
134
+ if 'difficulty' not in st.session_state:
135
+ st.session_state.difficulty = "Beginner"
136
+
137
  if 'game_state' not in st.session_state:
138
  st.session_state.game_state = {
139
  'player_board': place_ships_randomly(create_empty_board()),
 
248
 
249
  def main():
250
  """Main function to run the Battleship game."""
251
+ st.title('Battleship Game')
252
 
253
+ # Initialize difficulty in session state if not present
254
+ if 'difficulty' not in st.session_state:
255
+ st.session_state.difficulty = "Beginner"
256
+
257
+ # Add difficulty selector
258
+ st.session_state.difficulty = st.selectbox(
259
+ "Select Difficulty",
260
+ ["Beginner", "Expert"],
261
+ index=0 if st.session_state.difficulty == "Beginner" else 1
262
+ )
263
 
264
  initialize_game()
265
  if st.session_state.game_state['game_over']: