Один в море не воин. Добавим еще два корабля.
1 . Сделаем отдельно список кораблей и будем хранить в нем пары (списки) из двух координат кораблей.
2. Изменим проверку попадания, теперь сначала надо посмотреть весь список и решить, попали мы или нет.
3. Если попали, будем удалять корабль из списка и помечать их на поле с буквы S (ship)
4. Игра не заканчивается если потопить один корабль, значит надо изменить условие победы.
Исходный код:
from random import randint
board = []
row = 4 # Здесь можете изменить размерность нашего поля
col = row
for i in range (row):
board.append(["О"] * row)
print('1. Лёгкий: 12 попыток')
print('2. Средний: 8 попыток')
print('3. Сложный: 4 попытки')
level = int(input('Выбирай уровень сложности:'))
if level== 3:
game_hard_lvl = 4
elif level== 2:
game_hard_lvl = 8
else:
game_hard_lvl = 12
print('Начнём игру!')
for i in range(len(board)):
print((" ").join(board[i]))
ship_row = randint(0, row - 1)
ship_col = randint(0, col - 1)
for i in range(game_hard_lvl):
print('Ход', i+1 )
user_row = int(input('Введите номер строки от 0-3!'))
user_col = int(input('Введите номер колонки от 0-3!'))
if user_row == ship_row and user_col == ship_col:
print("Ты попал по кораблю ракетой! Победа!")
board[user_row][user_col] = 'S'
for i in range(len(board)):
print((" ").join(board[i]))
break
elif user_row < 0 or user_row > row - 1 or user_col < 0 or user_col > row - 1:
print("Введенные координаты не входят в игровое поле!")
elif board[user_row][user_col] == 'x':
print("На данные координаты уже была отправлена ракета!")
else:
print("Мимо! Ты не попал по кораблю ракетой!")
board[user_row][user_col] = 'x'
for i in range(len(board)):
print((" ").join(board[i]))
{данная программа переводит любое сочетание символов ascii в систему счисления заданную пользователем.}
//pascal abc.net v3.0 сборка 1111
var
a,i,b,r,n,j,bug: integer;
s,se,slo,slof: string;
procedure preob(var a,b,n: integer; var se: string);
begin
repeat
b: =a mod n;
a: =a div n;
str(b,se);
s+=se;
until (a< =n-1);
end;
beginreadln(slo);
readln(n);
for j: =1 to length(slo) do
begin;
a: =ord(slo[j]);
preob(a,b,n,se);
str(a,se);
s+=se;
for i: =1 to length(s) div 2 do
begin;
se: =s[i];
s[i]: =s[length(s)-i+1];
s[length(s)-i+1]: =se[1];
end;
write(s,'-');
slof: =slof+s;
delete(s,1,length(s));
end;
end.
пример ввода:
работа на завтра.
2
пример вывода:
11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-
{таким образом, фразу " работа на завтра." можно закодировать как "11000100-11101110-11101100-11100000-11111000-11101101-11111111-11111111-100000-11110000-11100000-11100001-11101110-11110010-11100000-100000-11101101-11100000-100000-11100111-11100000-11100010-11110010-11110000-11100000-101110-".}