Форум сайта python.su
Игра МБ выглядит так:
from random import randint board = [] for x in range(6): board.append(["O"] * 6) def print_board(board): for row in board: print((" ").join(row)) #создаётся игровое поле def random_row(board): return randint(0, len(board) - 1) #фунцкия загадывания корабля по строке def random_col(board): return randint(0, len(board[0]) - 1) #фунцкия загадывания корабля по столбцу print("Начнем игру в Морской бой!") print_board(board) ship_row = random_row(board) #загадываем корабль по строке ship_col = random_col(board) #загадываем корабль по столбцу for turn in range(10): #10 попыток print ("Ход: ", turn) guess_row = int(input("Строка 0-5:")) #ввод строки guess_col = int(input("Столбец 0-5:")) #ввод столбца if guess_row == ship_row and guess_col == ship_col: #если попал print("Поздравляю, ты потопил мой корабль!") break else: if (guess_row < 0 or guess_row > 5) or (guess_col < 0 or guess_col > 5): #если мимо игрового поля print("Oops, эти координаты не в нашем океане.") elif(board[guess_row][guess_col] == "X"): #если назвал повторно координаты print("Эти координаты вы уже называли.") else: print("Мимо!") board[guess_row][guess_col] = "X" #если не попал по кораблю ствлю Х if turn == 9: print("Игра окончена! Я уплываю в закат!") # конец игры #turn =+ 1 print_board(board)
from random import randint board = [] for x in range(6): board.append(["O"] * 6) def print_board(board): for row in board: print((" ").join(row)) def random_row(board): return randint(0, len(board) - 1) def random_col(board): return randint(0, len(board[0]) - 1) print("Начнем игру в Морской бой!") print_board(board) ship_row = random_row(board) ship_col = random_col(board) while True: #просто сделал бесконечный цикл for turn in range(10): print ("Ход: ", turn) guess_row = int(input("Строка 0-5:")) guess_col = int(input("Столбец 0-5:")) if guess_row == ship_row and guess_col == ship_col: print("Поздравляю, ты потопил мой корабль!") break else: if (guess_row < 0 or guess_row > 5) or (guess_col < 0 or guess_col > 5): print("Oops, эти координаты не в нашем океане.") elif(board[guess_row][guess_col] == "X"): print("Эти координаты вы уже называли.") else: print("Мимо!") board[guess_row][guess_col] = "X" print_board(board) if turn == 9: print("Игра окончена! Я уплываю в закат!") ga = input('Вы хотите сыграть ещё раз? Если да - нажмите "Enter", если нет - введите "нет" ') if ga == 'нет': break #turn =+ 1 #print_board(board)
Отредактировано MagentaIceberg (Апрель 27, 2021 12:43:38)
Офлайн
Учительница спрашивает Вовочку:
- Если я дам тебе два яблока, еще два яблока, а потом еще два, сколько всего яблок у тебя будет?
- Семь.
- Вовочка, посчитай внимательнее. Если я дам тебе два яблока, еще два яблока, а потом еще два, сколько всего яблок у тебя будет?
- Семь.
- Хорошо, смотри. Если я дам тебе две груши, еще две груши, а потом еще две, сколько всего груш у тебя будет?
- Шесть.
- Ну, вот видишь! А если тоже самое, но с яблоками???
- Семь.
- Да почему семь-то?
- Потому что одно яблоко у меня уже есть.
Мораль: не забывайте обнулять переменные
найдите переменную где храяться “попытки выстрелов на поле с предыдущей игры” и обнулите ее.
спойлер: это board, вам нужно “обнулять” его каждый раз при новой игре.
[code python][/code]
Отредактировано PEHDOM (Апрель 27, 2021 12:52:11)
Офлайн
PEHDOMда, верно) Спасибо!)
Учительница спрашивает Вовочку:- Если я дам тебе два яблока, еще два яблока, а потом еще два, сколько всего яблок у тебя будет?- Семь.- Вовочка, посчитай внимательнее. Если я дам тебе два яблока, еще два яблока, а потом еще два, сколько всего яблок у тебя будет?- Семь.- Хорошо, смотри. Если я дам тебе две груши, еще две груши, а потом еще две, сколько всего груш у тебя будет?- Шесть.- Ну, вот видишь! А если тоже самое, но с яблоками???- Семь.- Да почему семь-то?- Потому что одно яблоко у меня уже есть.Мораль: не забывайте обнулять переменныенайдите переменную где храяться “попытки выстрелов на поле с предыдущей игры” и обнулите ее.спойлер: это board, вам нужно “обнулять” его каждый раз при новой игре.
Офлайн
PEHDOM
а вот у меня, есс честно конкретный затуп на реализацию загадывания строк и полей в этом коде. Написал в комментах:
def random_row(board): return randint(0, len(board) - 1) #здесь по-идее длина общего списка 6 def random_col(board): return randint(0, len(board[0]) - 1) #здесь длина первого списка в списке тоже 6 '''то есть в этих функциях мы передаём тупо 2 числа (например 1 и 1). Не понятно, как они по итогу становятся координатой строки и столбца,если это просто 2 цифры''' print("Начнем игру в Морской бой!") print_board(board) ship_row = random_row(board) #цифра один ship_col = random_col(board) #и ещё цифра один for turn in range(10): print ("Ход: ", turn) guess_row = int(input("Строка 0-5:")) #опять же просто вводим 2 цифры guess_col = int(input("Столбец 0-5:")) #как они становятся координатами поля и строки - непонятно?..
Отредактировано MagentaIceberg (Апрель 27, 2021 15:08:35)
Офлайн
MagentaIceberg
board = [] for x in range(6): board.append(["O"] * 6)
Офлайн
MagentaIceberg ну координаты это и есть два числа, одно положение “корабля” по горизонтали, другое - по вертикали. они хранятся в соответвующих переменных ship_row и ship_col
пользователь вводи свои координаты(две цифры) и потом проверяется
if guess_row == ship_row and guess_col == ship_col:
тоесть если координаты(цифры) введенные пользователем совпали с координатами выданими генератором случайных чисел, значит попал, а если не равно тогда мы в соответвующую позицию помещаем “Х”
board[guess_row][guess_col] == "X"
[code python][/code]
Отредактировано PEHDOM (Апрель 27, 2021 16:31:04)
Офлайн
PEHDOMда, эти моменты я понимаю. Я не понимаю, как программа отбирает то, чо нужно искать по горизонтали, а, что по вертикали. Мы имеем просто два рандомных числа и всё. Мы же не говорим программе ищи по вертикали/горизонтали. вот это не понятно)
MagentaIceberg ну координаты это и есть два числа, одно положение “корабля” по горизонтали, другое - по вертикали. они хранятся в соответвующих переменных ship_row и ship_colпользователь вводи свои координаты(две цифры) и потом проверяется if guess_row == ship_row and guess_col == ship_col:тоесть если координаты(цифры) введенные пользователем совпали с координатами выданими генератором случайных чисел, значит попал, а если не равно тогда мы в соответвующую позицию помещаем “Х”
Офлайн
FishHookкод придуман курсом. Тоже не вижу в этом смысла)
MagentaIceberg
Отредактировано MagentaIceberg (Апрель 28, 2021 16:49:32)
Офлайн
MagentaIcebergкак не говорим? мы же говорим вот эта переменная это координаты по горизонтали, а эта - по вертикали, а потом спрашиваем у пользвателя , а введи ка нам координаты по горизонтали. а теперь по вертикали.А потом их сравниваем.
Мы же не говорим программе ищи по вертикали/горизонтали. вот это не понятно)
[code python][/code]
Офлайн
PEHDOMне понимаю всё равно) как программа ищет именно по вертикали, а не по горизонтали, например..
Офлайн