All streams
Search
Write a publication
Pull to refresh

Comments 16

  1. ООП у вас не используется);

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

  3. Как по мне, для хранения игрового поля удобнее использовать словарь, вот так:
    map = {}
    map[(x, y)] = 'M'

Сначала спасибо за комментарий!

1 - Насчет ООП согласен, поставил тэг, потому что хотел написать сразу две сатьи про игру “Сапёр” (консоль и Gui) и в Gui есть немного от ООП, поэтому и добавил, но согласен, что в этой статье его нет, поэтому уже убрал.

2 – Звучит логично и мне нравиться эта идея, поэтому постараюсь в скором времени поменять, но до вашего комментария я даже не думал об этом

3 – Честно, когда писал пришло в голову множество set(), чтобы не было повторов, но сейчас согласен можно и даже лучше использовать словарь. Исправлю!  

А где тут про GUI? Только ради него открыл статью. В консоле такое сделать дело не хитрое.

Полностью согласен, что консольную игру может написать любой, поэтому в заголовке написано игра с нуля версия консоли, насчет GUI, обещаю в ближайшие дни выпустить вторую часть уже как раз с GUI, и буду благодарен, если там тоже оставите комментарий, спасибо!

get_bomb_count()

Что там происходит? "Ввидите два число" - на каком языке? Почему "два число", если вводится только одно. Что за магические числа 40.5 и 39.5, а логика проверки вообще непонятна.

if abs(count_of_bomb - 40.5) > 39.5:
            continue

1 -    Насчет ввода извиняюсь, так как при копирование из строчки в строчку не заметил ошибку в тексте, уже исправил, спасибо (вводить нужно одно число)

2 -  Этот код пытается отсечь крайние значения count_of_bomb.

Если count_of_bomb меньше 1 (40.5 - 39.5 = 1) или больше 80 (40.5 + 39.5 = 80), то условие срабатывает, и такое значение игнорируется, то есть допустимый диапазон для count_of_bomb — от 1 до 80. Согласен, что проще вот так if count_of_bomb < 1 or count_of_bomb > 80, поэтому в финальном варианте оставлю так.

Спасибо за комментарий и если есть еще вопросы или жалобы пишите

if abs(count_of_bomb - 40.5) > 39.5: continue

не могу представить, что может побудить написать проверку на 80 именно так. Чатик надиктовал?

Если говорить честно, то в тиктоке увидел такой метод проверки решил повторить. А если про чатик говорить, то он наоборот всегда пиши самый простой способ.

Возможно это был чемпионат на использование пикабушной константы.

в тиктоках про пайтон пишуть?

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

...
# Проверяем диапазон координат (1-9)
if abs(x - 5.5) > 4.5 or abs(y - 5.5) > 4.5:
    print("Координаты должны быть от 1 до 9!")
    continue
...

Волшебство, не иначе!

Согласен с замечанием. Действительно, использование 'магических чисел' снижает читаемость кода и усложняет его поддержку, но как писал в сообщении выше увидел этот способ и решил повторить. Всегда можно использовать простой метод и что будет правильным с точки 'чистоты кода', например вот такой:

Min = 1

MAX = 9

if not (Min <= x <= Max) or not (Min <= y <= Max):

print(f"Координаты должны быть от {Min} до {Max}!")

Ну или что-то похожие

...
# Проверяем диапазон координат (1-9)
if abs(x - 5.5) > 4.5 or abs(y - 5.5) > 4.5:
    print("Координаты должны быть от 1 до 9!")
    continue
...

Тем более такой вариант будет работать не так как ожидается: |1-5.5|=4,5; |9-5.5|=4.5, а 4,5 не > 4,5. Жертвовать читаемостью, чтобы сократить на одно сравнение думаю того вообще не стоит. Также при проверке условий стоит тестировать граничные значения, в данном случае для интервала 1...9 - это 0;2 и 8;10

Согласен, как уже писал выше с этим методом проверки я погорячился, возможно, я его не правильно повторил или не так понял, но на данный момент уже изменил код на более лёгкий и понятный, спасибо за комментарий

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

Я думаю, что это касается и моей статьи, потому что я не говорю, что написал что-то гениально или чего не видел мир, а наоборот, что это один из простых способов написать игру, чтобы каждый мог повторить сам или просто запустить мой код для себя.

А так я рад, что в хабр есть люди, которые стремятся улучшить свой код до идеала и минимализма, как человек, который написал игру в 66 строк.

Sign up to leave a comment.

Articles