Пятнашки электронные

Можно и так.

Темы пока такие сделал:




металл бы ещё найти.

1 лайк

Чтобы комбинация была разрешима, то надо установить фишки в решенное состояние, а затем случайным образом перемешать, не вынимая из “коробки”.

Если взять натуральную игру, высыпать фишки в ладони, перемешать их, вставить в коробку. Если комбинация неразрешимая, то берем “6” превращаем ее в “9”, устанавливаем где была “6”, то берем “9” а ее превращаем ее в “6”, устанавливаем где была “9”. То есть, эти две фишки переворачиваем на 180 градусов, “вверх ногами”. Тогда задача решится.

вспонилось детское “тяжело детство-чугунные игрушки”, а так, мы-дизайнеры делаем металл градиентом

Как-то некрасиво это работает: фишка сначала исчезает в одном месте, затем появляется в другом. Надо сделать анимацию, чтобы перемещение осуществлялось в 2-4 этапа (кадра).

Ещё варианты для тем:



А ещё картинки можно резать:


Пятнашки собираются либо в правильную последовательность, либо в последовательность с одной переставленной парой соседних фишек - например поменяны местами 14 и 15. Алгоритм проверки исходной комбинации на собираемость встречал в какой-то детской книге с математическими головоломками.

Оставлю для следующей версии, туда добавлю ещё счётчик ходов.

Да там всё, как два пальца, считаешь количество “инверсий” (это когда надо поменять местами фишки, и смотришь на его чётность. См., подробнее - Про решаемость пятнашек / Хабр

имеет решение, если число пар чисел, в которых большее число предшествует меньшему, четное

Вставил смену тем.
VID_20240609_075224
С картинками тоже темы интересные.


Ещё два интересных направления это узоры

и краткие тексты типа “МАМА ДОМА МЫЛА ПОЛ”.

Сделал функцию для перемешивания на основе мысли: “Да, изначально у нас игра будет инициализироваться как решенная, а перед началом игры мы будем перемешивать плашки с помощью случайных ходов.” из вот отсюда:

void peremechka(){
  int k;int ran;int st=0; 
 while(st<50){ 
 for( k=0;k<16;k++){//
 if(massiv_[k%4][k/4]==16){break;}
 }
 
ran=random(0,4);
if(ran==0&&k<15){massiv_[k%4][k/4]=massiv_[(k+1)%4][(k+1)/4];massiv_[(k+1)%4][(k+1)/4]=16;}
if(ran==1&&k>0){massiv_[k%4][k/4]=massiv_[(k-1)%4][(k-1)/4];massiv_[(k-1)%4][(k-1)/4]=16;}
if(ran==2&&k<12){massiv_[k%4][k/4]=massiv_[(k+4)%4][(k+4)/4];massiv_[(k+4)%4][(k+4)/4]=16;}
if(ran==3&&k>3){massiv_[k%4][k/4]=massiv_[(k-4)%4][(k-4)/4];massiv_[(k-4)%4][(k-4)/4]=16;}
st++;   
}
}

Направлений тематических по сложности и цели пока 5:

Еще красиво делать перемешивание анимированным.
Например добавить кнопку “Перемешать” и игра начинает делать случайные ходы на доске, до тех пор, пока оператор на нажмет кнопу еще раз.
Вместе с анимацией движения фишки и числом ходов не более 5 в секунду, чтобы видеть, будет очень занимательно-залипательно! На мой вкус! На и автоматическое решение на медленной скорости - 1 ход в секунду, тоже нужно. :wink: Удачи!

Добавлю в новой версии так как переделывать код надо будет серьёзно.

Добавил перемешивание в с исходном варианте.
VID_20240610_191214

4 лайка

классная работа :wink:

Спасибо…Нашёл исходник подходящий, с металлом:


Нашёл ещё один тип, наверное для взрослых игроков - цветовой градиент.

А есть пятнашки для дальтоников?

Я бы еще, пожалуй, ввел мод для блонди - любой результат считается сошедшимся. Ну, и чтобы цвет был - цветом года by Pantone. Безо всяких там прошлогодних коллекций.

2 лайка