


Программирование
+4Морской Бой на Python (нужно доделать код)
Нужно дополнить код и исправить ошибки по игре "Морской бой"
А именно:
1. На игровом поле ничего не отображается. (Нужен интерфейс попаданий и промахов)
2. Не простреливаются поля с координатой 10 (А10, B10 и т.д.) - пишет, что нет такой клетки.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
import random
# Создание игрового поля
board_size = 10
board = [[' ' for _ in range(board_size)] for _ in range(board_size)]
# Расстановка кораблей компьютера
def place_ships():
ships = [5, 4, 3, 3, 2] # Длины кораблей
directions = [(0, 1), (1, 0)] # Горизонтальное и вертикальное направления
for ship in ships:
while True:
x = random.randint(0, board_size - 1)
y = random.randint(0, board_size - 1)
direction = random.choice(directions)
ship_cells = []
for i in range(ship):
new_x = x + direction[0] * i
new_y = y + direction[1] * i
if new_x < 0 or new_x >= board_size or new_y < 0 or new_y >= board_size or board[new_x][new_y] != ' ':
break
ship_cells.append((new_x, new_y))
if len(ship_cells) == ship:
for cell in ship_cells:
board[cell[0]][cell[1]] = 'O'
break
# Вывод игрового поля
def print_board(show_ships=False):
print(' ' + ' '.join([chr(i) for i in range(ord('A'), ord('A') + board_size)]))
for i in range(board_size):
print(str(i + 1).rjust(2) + ' ' + ' '.join(board[i]).replace('O', ' ').replace('X', ' ').replace('M', ' '))
# Ход игрока
def player_turn():
while True:
guess = input("Введите координаты (например, A1): ").upper()
if len(guess) != 2 or not guess[0].isalpha() or not guess[1].isdigit():
print("Некорректные координаты. Попробуйте еще раз.")
continue
x = ord(guess[0]) - ord('A')
y = int(guess[1]) - 1
if x < 0 or x >= board_size or y < 0 or y >= board_size:
print("Некорректные координаты. Попробуйте еще раз.")
continue
if board[x][y] == 'O':
print("Попадание!")
board[x][y] = 'X'
return True
elif board[x][y] == ' ':
print("Промах!")
board[x][y] = 'M'
return False
else:
print("Вы уже стреляли в эту клетку. Попробуйте еще раз.")
# Ход компьютера
def computer_turn():
while True:
x = random.randint(0, board_size - 1)
y = random.randint(0, board_size - 1)
if board[x][y] == 'O':
print("Компьютер попал!")
board[x][y] = 'X'
return True
elif board[x][y] == ' ':
print("Компьютер промахнулся!")
board[x][y] = 'M'
return False
# Расстановка кораблей компьютера
place_ships()
# Основной игровой цикл
while True:
print_board()
if player_turn():
# Проверка окончания игры
if all([' ' not in row for row in board]):
print("Вы выиграли!")
break
print("Ваш ход снова.")
print("Ход компьютера:")
if computer_turn():
# Проверка окончания игры
if all([' ' not in row for row in board]):
print("Компьютер выиграл!")
break
print("Ваш ход.")
По дате
По рейтингу
а где сам код умник