Войти
ПрограммированиеФорумИгровая логика и ИИ

[C++ + SFML] Помогите с одноруким бандитом

#0
17:38, 7 янв 2022

Хай народ, помогите с кодом однорукого бандита. Я не имею представление о шаблоне программирование игр. Как мне плавно остановить споты и как засчитать эти очки?
Вот скрин

+ Показать

Вот код пытался но не поулчилось (только крутиться):

+ Показать
#1
0:47, 8 янв 2022

Когда нажимаете энтер - барабан начинает крутиться, после этого жмякаете пробел - должен остановиться. Разве нет?

#2
12:53, 10 янв 2022

R1pp3R
> должен остановиться. Разве нет?
Я не спец в этом, но думаю иначе...
Должно быть две кнопки Bet и Spin, мы не можем нажать Spin (крутить барабан), до тех пор пока не сделаем ставку, ставка сделана, доступна кнопка Spin.
Так же у нас нет возможности самостоятельно останавливать барабаны, т.е. после нажатия Spin барабаны рандомно останавливаются, игрок на этот процесс никак повлиять не может.
выглядеть это может как-то так:

int stop1 = rand() % 1000;
#3
14:49, 10 янв 2022

std::variant
> Должно быть две кнопки Bet и Spin, мы не можем нажать Spin (крутить барабан),
> до тех пор пока не сделаем ставку, ставка сделана, доступна кнопка Spin.
> Так же у нас нет возможности самостоятельно останавливать барабаны, т.е. после
> нажатия Spin барабаны рандомно останавливаются, игрок на этот процесс никак
> повлиять не может.
Это уже формальности и, по-сути, не относятся к вопросу. Просто, в коде есть некая механика, основанная на переменной gameState. Есть условия запуска барабана, и условие его остановки - я и предложил его использовать. Однако, основываясь на активности ТС на форуме, можно считать, что тема создана в качестве троллинга, и обсуждение не имеет смысла

#4
10:58, 11 янв 2022

Нужно начать с класса Baraban, всегда лучше использовать узкую нотацию, чтобы всякие нерусские не могли пользоваться кодом. Объявите спицы и ось барабана как protected, чтобы их никак нельзя было крутить из другого места. Класс должен быть шаблонизирован, чтобы можно было передать свою RNGPolicy, чтобы всегда можно было настроить барабан под конкретные правила безопасности генерации случайных чисел и законодательство страны, где крутят барабан. Затем создайте BarabanFactory, чтобы можно было легко создавать барабаны разных подсущностей, например Поле Чудес. Таким же образом проектируйте класс BarabanBox, чтобы отделить модель от данных, а данные от характеристик. BarabanBox должен иметь возможность кастомизироваться под разные формы представления — например чтобы был рендеринг барабана через Вулкан, чтобы барабан очень эффективно уходил в память видеокарты. Обязательно использовать data-driven подход, чтобы данные задавали барабаннистость — так с барабаном сможет работать даже непрограммист. И покройте внутренности барабана юнит-тестами, это защитит вас от всяких ошибок. Используйте для юнит-тестов паттерн Стриптизер из знаменитой книги банды на чепырке, он позволяет открывать доступ к членам класса только тем, кому вы хотите. Заодно вы сможете запретить хакерам получать доступ к барабану.

#5
11:38, 11 янв 2022

NyakNyakProduction
Рассмешил.... сделал мой день!

> Используйте для юнит-тестов паттерн Стриптизер из знаменитой книги банды на
> чепырке
:-[ ]    Тот случай, когда однорукий бандит уже "снимает с тебя трусы".... )))))

#6
23:22, 28 фев 2022

Еще один вопрос нубасика:
Как подсчитать очки? И вероятность что я не сделаю 3 одинаковых иконок 80%. Отнять всю ставку слишком строго и игрок расстроиться. Нужно сделать средний выигрыш, и чтоб когда разные как-то сумму вычислить. Че думаете ребятки? В барабане 7 разных иконок, какой из них самый крутой?
И еще мне нужен чистый код для сценария и каст сцен. Хотя это уже в другой теме надо будет объяснить пытаться)

+ Показать
#7
23:43, 28 фев 2022

std::variant
Ты неплохо так подал идею пацан! Харош. Возможно переделаю, если не лень будет. Щас занимаюсь в плотную графикой локаций и игры и анимированием персонажей.
R1pp3R
Извините, я немного забил в это время на "игру". На дошик подрабатывал) А это моя механика gameState она крутая? Или еще есть покруче? Я хочу сделать код игры очень чистым и профессиональным, хотя бы попытаться) А то афигел от жизни написав игру +10к строк. Щас боюсь открыть этот проект. Для меня это был большим уроком - чистый и понятный код - признак упорядоченности и и в последствии не разочароваться от помойки, который ты написав месяц назад всё забыл.
NyakNyakProduction
Спасибо за совет! Объязательно так и сделаю! XD ахахахха

#8
4:10, 1 мар 2022

MicroEx
> Отнять всю ставку слишком строго и игрок расстроиться. Нужно сделать средний
> выигрыш, и чтоб когда разные как-то сумму вычислить.
Это какой-то бред, а не однорукий бандит!
В этом весь смысл, если нет трёх в ряд, ставка уходит однорукому бандиту, если выпало три в ряд ставка уходит игроку.

> В барабане 7 разных иконок, какой из них самый крутой?
твой подход неверный, там нет градаций, что какой-то символ хуже или лучше - они одинаковые.

> Как подсчитать очки?

+ Показать
#9
6:28, 1 мар 2022

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

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

ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.