Какие другие изменения можно внести в игру Морской бой ? Например, добавить компьютерного игрока, который будет делать

  • 49
Какие другие изменения можно внести в игру "Морской бой"? Например, добавить компьютерного игрока, который будет делать ход после игрока. Теперь цель игры - набрать больше очков, чем компьютер. В начале можно выбирать цель для компьютера случайным образом. Однако игрок, скорее всего, не будет стрелять в клетку, которая уже помечена как "Мимо". Предлагается позволить компьютеру стрелять только в "неизведанные клетки". Также возможно внести другие модификации в игру по вашему усмотрению. Начало кода: from random import randint board = [] for x in range(6): board.append(["0"] * 4) for row in board: print(" ".join(row)) ship_row = randint(0
Schelkunchik
48
Чтобы добавить компьютерного игрока в игру "Морской бой" и изменить цель игры так, чтобы игрок должен был набрать больше очков, чем компьютер, мы можем внести следующие изменения в код:

1. Создание функции для хода компьютера:
Добавим новую функцию `computer_turn()`, которая будет генерировать случайные координаты и выполнять ход компьютера. Мы также добавим проверку на то, чтобы компьютер не стрелял в клетку, которая уже помечена как "Мимо".

python
def computer_turn():
while True:
x = randint(0, 3)
y = randint(0, 5)
if board[y][x] == "0":
if board[y][x] == "M":
board[y][x] = "X"
else:
board[y][x] = "M"
break


2. Изменение цикла игры:
Изменим цикл игры так, чтобы он продолжался до тех пор, пока оба игрока не наберут определенное количество очков. В каждой итерации цикла игрок будет делать ход, а затем компьютер.

python
player_score = 0
computer_score = 0
while player_score < 20 and computer_score < 20:
# Ход игрока
print("Ход игрока:")
player_turn()
print_board()

# Ход компьютера
print("Ход компьютера:")
computer_turn()
print_board()

player_score = count_score(board)
computer_score = count_score(board, "M")

print("Игра окончена!")
if player_score > computer_score:
print("Вы победили!")
elif player_score < computer_score:
print("Вы проиграли!")
else:
print("Ничья!")


3. Другие возможные модификации:
Выше мы представили лишь базовые изменения для добавления компьютерного игрока. Однако, мы можем добавить и другие модификации по своему усмотрению. Например, можно реализовать разные уровни сложности для компьютера или дополнительные правила и возможности, такие как использование бонусов или специальных атак.

Вот полный код с внесенными изменениями:

python
from random import randint

board = []
for x in range(6):
board.append(["0"] * 4)

def print_board():
for row in board:
print(" ".join(row))

def player_turn():
while True:
x = int(input("Введите номер столбца (от 1 до 4): ")) - 1
y = int(input("Введите номер строки (от 1 до 6): ")) - 1
if 0 <= x < 4 and 0 <= y < 6:
if board[y][x] == "0":
board[y][x] = "X"
break
else:
print("Вы уже стреляли в эту клетку!")
else:
print("Некорректные координаты!")

def computer_turn():
while True:
x = randint(0, 3)
y = randint(0, 5)
if board[y][x] == "0":
if board[y][x] == "M":
board[y][x] = "X"
else:
board[y][x] = "M"
break

def count_score(board, symbol="X"):
score = 0
for row in board:
score += row.count(symbol)
return score

player_score = 0
computer_score = 0
while player_score < 20 and computer_score < 20:
# Ход игрока
print("Ход игрока:")
player_turn()
print_board()

# Ход компьютера
print("Ход компьютера:")
computer_turn()
print_board()

player_score = count_score(board)
computer_score = count_score(board, "M")

print("Игра окончена!")
if player_score > computer_score:
print("Вы победили!")
elif player_score < computer_score:
print("Вы проиграли!")
else:
print("Ничья!")


После добавления этих изменений, игра "Морской бой" будет иметь компьютерного игрока, который будет делать ход после игрока, и целью игры будет набрать больше очков, чем компьютер. Компьютер будет стрелять только в "неизведанные клетки". Вы также можете вносить другие модификации по вашему усмотрению, чтобы сделать игру еще интереснее.