Top.Mail.Ru
Ответы

Помогите с кодом

Что-то типо морского боя, пока не доделанного, нужна помощь с участком кода (не судите строго, первая игра)
Данный код выводит поле игрока и говорит ему поставить единичные корабли на поле, цикл до 5, поэтому кораблей должно быть пять, и все норм, Но там стоит условие если игрок ввел те же координаты, то введи еще раз, однако цикл то проходит, и при одной ошибке и заново введенных координат кораблей на поле уже будет 4 а не 5. при 2-ух ошибках - 3, дальше понятно. Как исправить?
ПС Сорри за сумбур.

userfield = [[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."]]

aifield = [[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."],
[".", ".", ".", ".", "."]]

def printfield():
for i in userfield:
print()
print(i[0],i[1],i[2],i[3],i[4], sep = " ")

printfield()

print('Поставьте 5 ваших единичных кораблей, выберите координаты.')

i = 0
while i !=5:
i += 1
a = int(input('Выберите строку: '))
b = int(input('Выберите столбец: '))
if userfield[a-1][b-1] == ".":
userfield[a-1][b-1] = 1
printfield()

else:
while userfield[a-1][b-1] == 1:
print('Там уже стоит корабль. Выберите другие координаты.')
break

Дополнен

ПС, отступы при вставке пропали, сорян

По дате
По рейтингу
Аватар пользователя
Новичок
8лет

Делай i += 1 только в случае успешного выполнения условия, или отнимай 1 при неудаче.