Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ДОЛГОЖДАННЫЙ НАНЫТЫЙ ФИКС САПЁРА #11262

Conversation

DarthSidiousPalpatine
Copy link
Contributor

@DarthSidiousPalpatine DarthSidiousPalpatine commented Apr 10, 2023

Описание изменений

Первая нажатая клетка в сапёре не может быть бомбой.

Почему и что этот ПР улучшит

Наныл на фикс
image

Авторство

AndreyGysev и все все все, кто помогал в дискорде.

Чеинжлог

🆑

  • tweak: Первая нажатая клетка в сапёре не может быть бомбой.

@TauKitty
Copy link
Contributor

Changelog status: ✔️

@TauKitty TauKitty added the Tweak label Apr 10, 2023
@TauKitty
Copy link
Contributor

Этот запрос на слияние был упомянут в Tau Ceti Station Forum. Там могут быть соответствующие подробности:

https://forum.taucetistation.org/t/kak-vskryvat-lutkrejty-spoilers-ahead/30758/18

@4310V343k
Copy link
Member

что

@4310V343k
Copy link
Member

бля, напиши нормально, что первая НАЖАТАЯ клетка не может быть бомбой

@DarthSidiousPalpatine
Copy link
Contributor Author

бля, напиши нормально, что первая НАЖАТАЯ клетка не может быть бомбой

Написал

@Deahaka
Copy link
Contributor

Deahaka commented Apr 10, 2023

Я против потому что ещё меньше шансов не получить лут, а получить мимека. Никогда не слышал об обязательной механике 1-я клетка != мина. Не считаю что рандом в беспроигрышной лотерее стоит каких-то фиксов чтобы было ещё скучнее

@TryXAH
Copy link

TryXAH commented Apr 10, 2023

Никогда не слышал об обязательной механике 1-я клетка != мина

Поиграй в игру
В данном случае, в сапера. Буквально накинь там максимально возможное количество бомб на карту и пробуй. Будь там 90% мин, первая всегда будет клетка

@Deahaka
Copy link
Contributor

Deahaka commented Apr 10, 2023

Windows 7 сапёр без страховки

@DarthSidiousPalpatine
Copy link
Contributor Author

Не проверялась первая кнопка на бомбезность. Теперь проверяется.

populate_mine()

/datum/minigame/minesweeper/proc/populate_mine(exclude_x = 0, exclude_y = 0)
while(TRUE)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Выглядит кринжово. Почему бы не генерить поле только после первого клика?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

чтобы быстрее работало

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В чем заключается быстрота

@LudwigVonChesterfield
Copy link
Contributor

@Deahaka если что сапёр доказуемо не беспроигрышный, и все равно будут ситуации где проигрываешь чисто из-за рандома.

@Deahaka
Copy link
Contributor

Deahaka commented Apr 10, 2023

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

Comment on lines +23 to +25
if(firstpress)
relocate_mine(y,x)
firstpress = FALSE
Copy link
Member

@volas volas Apr 15, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

еще firstpress тут будет работать не для первого нажатия, а для первого нажатия на мину

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я так и сделал, просто перемещается одна мина брух

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ладно, не совсем, код не очень хороший.

Comment on lines 51 to +52
for(var/i = 1 to grid_mines)
while(TRUE)
var/y = rand(1,grid_y)
var/x = rand(1,grid_x)
var/list/L = grid[y][x]
if(L["state"] == STATE_MINE)
continue
else
L["state"] = STATE_MINE
grid_blanks--
break
populate_mine()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

populate_mine стоит переименовать в какой-нибудь place_mine, и пусть он возвращает true/false и на основе этого ты можешь изменять размер grid_blanks.

Сейчас это нечитабельная фигня, когда ты входишь в массив по grid_blanks и потом дергаешь его непонятно где.

@github-actions
Copy link

Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Спасибо за ваш вклад.

@DarthSidiousPalpatine
Copy link
Contributor Author

нет

@DarthSidiousPalpatine
Copy link
Contributor Author

С другой стороны да, Лижард прав.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants