2048 (AZJIO)
Сообщений 1 страница 22 из 22
Поделиться212.06.2025 12:36:54
403 Forbidden - очень информативно.
Поделиться312.06.2025 14:41:54
впн, в том числе французский не помогает, офф сайт не грузится..
Поделиться412.06.2025 23:20:02
Добавил ссылку для скачивания архива в первый пост. У меня оф.форум отлично открывается и с компа и с телефона.
Отредактировано AZJIO (12.06.2025 23:20:21)
Поделиться513.06.2025 06:49:30
Чистил кэш, удалял куки, менял прокси/впн - ничего не помогало. Отключил всё, включил надстройку на подмену юзер-агента (Win10+Crome125) и заработало! Похоже, стоит блок на старые браузеры (и/или винду). Я сижу на Win7 (параллельно есть Win10 для игрушек) на firefox. Более старые версии Crome на Win10 тоже не работают.
Поделиться613.06.2025 16:38:34
Добавлен запрет на добавление плитки, если не происходит изменение поля.
Я давно хотел попробовать массив 4х4 рассмотреть как последовательность 16-ти чисел (4*4=16). Попробовал сначала как структуру, потом решил проще последовательно по числам. Мне показалось что доступ к ячейке методом умножения индексов для получения сдвига работает медленно, чем просто сделать сдвиг на Integer, хотя в плане надёжности менее, но думаю массив никогда не будет изменён в другой формат.
Отредактировано AZJIO (13.06.2025 19:31:47)
Поделиться713.06.2025 18:54:15
(4*4=12)
Я почему-то думал что 4*4=16, но наверное ошибался.
Поделиться813.06.2025 19:30:52
Да я 2 раза себя обманул, сначала массив от 0 до 3, но не 9, каким то образов взял ближайшее целое, добавил ещë тройку, вместо того, чтобы умножить.
Поделиться913.06.2025 21:22:30
Заразная
А 2048 это максимальное число, которое можно получить?
Поделиться1013.06.2025 21:32:43
Предложение - Откат сделать просто по Z (CtrlZ можно оставить).
Поделиться1114.06.2025 20:58:55
Откат сделать просто по Z
Пока сделал Backspace как вариант одной кнопки
Добавлен подсчёт очков в окне программы. И сделан он по правилам (из википедии), не методом взятие чисел на поле, а в момент сложения плиток, и этот метод даёт больше очков, так как 512 предварительно складывалось из 256, 128, 64 и т.д. что в сумме почти в 2 раза больше, чем если просто сложить числа на поле.
Ещё обновление
При увеличении числа на плитках шрифт уменьшается, чтобы число уместилось на плитке.
Отредактировано AZJIO (15.06.2025 00:49:01)
Поделиться1215.06.2025 14:15:49
AZJIO, класс ! Молодец ! Спасибо ! От души !
Получил эстетическое удовольствие. Счёт: 5180. У меня в телефоне эта игрушка была предустановлена по умолчанию. После обновлений всё испортили, как обычно.
Из пожеланий: можно ещё добавить итоговую сетку с именами участников и соответственно занимаемые места (согласно заработанным очкам), чтобы при следующем запуске программа показывала предыдущие достижения
Можно ещё аудиосопровождение добавить, чтобы уж совсем интерактив был aka полное погружение (музычку наложить поверх процесса игры + звуковые эффекты при складывании чисел (как они в игрушках назывались ? sfx ?)). Плюс визуальные, что-то в стиле тетриса (чтобы уж совсем красиво). Насколько помню, в телефоне было так: когда ходов (свободных клеток) оставалось не так много, то музычка становилась более напряжённой, какой-то зловещей что ли. Ну и уровень громкости, как-будто увеличивался.
Плюс контроль времени. Вот тогда это уже можно будет считать более-менее законченным продуктом, что называется на уровне... и его уже можно будет выкатывать куда-нибудь в магазин (просто увидел папку 'android' внутри).
Ещё раз спасибо. Это были всего лишь пожелания.
P.S. про управление мышкой забыл. Хорошо бы добавить сию возможность. Сначала пытался управлять именно ей. Думаю, что многие, чисто интуитивно, тоже попытаются перемещать кубики мышью.
P.S.2 egons, спасибо за то, что поделились. Не встречалось ранее.
Отредактировано Пар (15.06.2025 21:27:58)
Поделиться1315.06.2025 15:44:27
уже было(нашел в своих архивах)
https://github.com/Dadido3/2048/releases
Поделиться1415.06.2025 21:54:42
можно ещё добавить итоговую сетку с именами участников
Теоретически можно, тем более, что есть готовый пример из игры CubePicker, где рекорды сохраняются в шифрованный файл, а в игре BallBrick прикручивал музыку, скачивая из источников свободного распространения.
Счёт: 5180
Я пока тестил, дошёл до 13772, и тут я понял что надо исправлять косяк с размером шрифта (и встроил уменьшение коэффициента размера шрифта при перерисовке).
Отредактировано AZJIO (15.06.2025 22:23:40)
Поделиться1515.06.2025 21:58:02
Не побоюсь показаться банальным, ссылка на википедию
Отредактировано Smitis (15.06.2025 21:58:31)
Поделиться1615.06.2025 22:07:33
А 2048 это максимальное число, которое можно получить?
Да я сам до этого вскользь смотрел на эту игру на оф.форуме. А когда тему подняли второй раз, то решил и сам попробовать. В теории как видно на скринах максимум можно набрать 32 тыс, если удача будет сопутствовать на каждом ходе, что вряд ли, это как 10 раз подряд выиграть лотерею. А 2048 это наверно реальное практичное число, которое можно достичь. В это я поверил достигнув 1024 за пару дней теста.
Стратегия такова, что нужно создавать плитки в одном углу, например правом нижнем, а если перемещать плитки во все стороны, то 2-ки создаются в 4-х углах и их уже ни с чем ни склеить. Только в начале игры можно позволить такое, но не после того, когда часть поля уже занята крупными плитками. Ещё правило победы - создавать плитки рядом, то есть если плитка 64 в одном углу, то не надо её создавать в другом углу, так как её потом ни как не придвинуть, придётся портить поле махинациями для приближения плитки и это при удачном раскладе, когда случайная плитка не испортит расклад. Ещё правило победы - не занимать 2 или 3 ряда, которые по итогу передвигаются кучей, надо всегда иметь 1 вертикальный и 1 горизонтальный свободный ряд, тогда плитки могут создавать комбинации совпадения, а сплошняком ряды ничего не создают кроме как перемещаются слева направо или сверху вниз
Отредактировано AZJIO (15.06.2025 22:20:26)
Поделиться1715.06.2025 22:43:33
Я пока тестил, дошёл до 13772, и тут я понял что надо исправлять косяк с размером шрифта
Там нужно еще обрезку (ClipOutput() / UnclipOutput()) использовать чтобы не рисовало за пределами выделенного региона. Тогда текст и остальная графика за пределы ячейки не выйдет.
OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) If CreateImage(0, 200, 200, 24, $FFFFFF) And StartDrawing(ImageOutput(0)) DrawingMode(#PB_2DDrawing_Transparent) FrontColor(0) DrawText(20, 20, "Пример текста") ClipOutput(50, 50, 50, 20) DrawText(20, 50, "Пример текста") UnclipOutput() StopDrawing() ImageGadget(0, 0, 0, 200, 200, ImageID(0)) EndIf Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow
Поделиться1815.06.2025 23:01:14
Там нужно еще обрезку (ClipOutput() / UnclipOutput()) использовать чтобы не рисовало за пределами выделенного региона.
Спасибо, не знал о такое фичи.
Но я сделал пример, чтобы проверить правильность коррекции для ширины числа. В примере надо жать Enter, чтобы посмотреть как уменьшаются числа для следующей группы.
#Delay = 300 #cnv = 0 #Window = 0 #mDummy = 0 #Font = 0 #Font1 = 1 Global s = 80 Global FontDivider.f = 2.5 Global Dim nxy(3, 3) LoadFont(#Font, "Arial", s / FontDivider) Procedure ResizeFont() indentY = 0 FreeFont(#Font) If LoadFont(#Font, "Arial", s / FontDivider) isLFont = 1 EndIf Repeat Select WaitWindowEvent() Case #PB_Event_Menu Select EventMenu() Case #mDummy Break EndSelect Case #PB_Event_CloseWindow CloseWindow(#Window) End EndSelect ForEver EndProcedure Procedure reDraw() Protected index, s2 = s If StartDrawing(CanvasOutput(#cnv)) Box(0, 0, s2 * 4, s2 * 4, $696969) DrawingMode(#PB_2DDrawing_Transparent) ; If isLFont DrawingFont(FontID(#Font)) ; EndIf If Not indentY indentY = (s2 - TextHeight("1")) / 2 EndIf For x = 0 To 3 For y = 0 To 3 indentX = (s2 - TextWidth(Str(nxy(x, y)))) / 2 Box(x * s2 + 1, y * s2 + 1, s2 - 2, s2 - 2, $333333) Select nxy(x, y) Case 0 : tmp = $3f3f3f Case 2 : tmp = $453B9B Case 4 : tmp = $4B0195 Case 8 : tmp = $B400B4 Case 16 : tmp = $AD006A Case 32 : tmp = $878F00 Case 64 : tmp = $BFA800 Case 128 : tmp = $FF9F00 Case 256 : tmp = $D26068 Case 512 : tmp = $00A3A0 Case 1024 : tmp = $4ECA8E Case 2048 : tmp = $22A24F Case 4096 : tmp = $72ADC0 Case 8192 : tmp = $3EAFFC Case 16384 : tmp = $C0AD72 Case 32768 : tmp = $DBA6AA EndSelect Box(x * s2 + 2, y * s2 + 2, s2 - 4, s2 - 4, tmp) If nxy(x, y) DrawText(x * s2 + indentX, y * s2 + indentY, Str(nxy(x, y)), $FFFFFF, tmp) EndIf Next Next StopDrawing() EndIf EndProcedure Procedure New() Protected indentX, index, s2 = s, i i = 1 For x = 0 To 3 For y = 0 To 3 n = Pow(2, i) i + 1 nxy(x, y) = n ; Debug n If FontDivider = 2.5 And n > 127 FontDivider = 2.8 ResizeFont() ElseIf FontDivider = 2.8 And n > 512 FontDivider = 3.5 ResizeFont() ElseIf FontDivider = 3.5 And n > 8192 FontDivider = 4.5 ResizeFont() EndIf reDraw() ; Debug n Next Next EndProcedure ;-┌──GUI──┐ If OpenWindow(#Window, 0, 0, 4*s, 4*s, "Press Enter three times", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_SizeGadget) CanvasGadget(#cnv, 0, 0, 4*s, 4*s) ;-└──GUI──┘ AddKeyboardShortcut(#Window, #PB_Shortcut_Return, #mDummy) New() Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
Поделиться1916.06.2025 13:17:25
не пробовал, меня больше пасьянсы привлекают
В примере надо жать Enter, чтобы посмотреть как уменьшаются числа для следующей группы.
не понимаю почему нельзя сразу сделать из расчёта на максимальные числа
ещё лучше самому окно растянуть кому как удобно
Я почему-то думал что 4*4=16, но наверное ошибался.
это устаревшие данные, для дебилов проблема, поэтому упростили
это вспомнил что амерекосы в школах упростили некоторые вещи потому что дебилам сложно
было в новостях
Поделиться2016.06.2025 17:56:27
не понимаю почему нельзя сразу сделать из расчёта на максимальные числа
потому что вероятность максимальных чисел равна нулю, и ради них делать микро размер цифр на плитках не айс.
Поделиться2118.06.2025 08:11:26
ради них делать микро размер цифр на плитках не айс.
где ты увидел предложение уменьшить шрифт?
Поделиться22Сегодня 03:29:16
где ты увидел предложение уменьшить шрифт?
Из этих слов:
не понимаю почему нельзя сразу сделать из расчёта на максимальные числа
---------------------
Добавил для Андроид.
На скорую руку, лишь бы работал. Там надо ещё на весь экран делать, управление жестами и т. д.
Отредактировано AZJIO (Сегодня 07:53:07)