Lua [mimgui] Игра в 15

Oleg Sleash

Участник
Автор темы
69
97
Добрый день, решил как-то набросать игру на lua, выбрал игру в 15, пойдёт для заливания и ожидания до подключения на фулл сервер.
Кто не знает правила:
Пятнашки – одна из известнейших миру головоломок. Она представляет набор, в который входит квадратная коробка, сторона которой равна 4 сторонам костяшки, то есть. 4х4. Внутри этой коробки 15 квадратных костяшек. В коробке остается 1 свободное место под одну костяшку. Цель игры – упорядочивание костяшек по порядку. Концом игры считается, когда все костяшки от 1 до 15 стоят друг за другом
Зависимости:
-- Moonloader 0.26-5 beta
-- mimgui
Активация /15
Установка: Закинуть файл и папку из архива в папку moonloader
P.S. Содержимое архива: Скрипт с открытым кодом и папка с картинками для скрипта
 

Вложения

  • 15.zip
    122.9 KB · Просмотры: 28

spelare for filmer

Потрачен
154
187
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пиздец как же я ненавидел эту игру все свое детство, ни разу эту хуйню не мог собрать. держи лайк!
 
  • Нравится
Реакции: nightaiga и хуега)

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,226
я бы советовал совместить все картинки в 1 и рисовать ее по частям, так же можно "конвертировать" ее в base85 и запихнуть в код, так вообще можно будет не тащить файлы. Вот пример:
1669122101507.png

Lua:
local imgui = require('mimgui')

local renderWindow = imgui.new.bool(true)
local IMG = nil
local Number = imgui.new.int(1)

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local IMAGE_BASE85 = "ТУТ КАРТИНКА base85" -- во вложениях скрипт с готовой картинкой

    --IMG = imgui.CreateTextureFromFile('C:\\Users\\admin\\Desktop\\Новая папка (7)\\img.png')
    IMG = imgui.CreateTextureFromFileInMemory(imgui.new('const char*', IMAGE_BASE85), #IMAGE_BASE85)
end)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(self)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 1000, 1000
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow, imgui.WindowFlags.NoDecoration) then
            imgui.SetCursorPos(imgui.ImVec2(100, 75))
            imgui.SliderInt('Number', Number, 1, 15)

            imgui.SetCursorPos(imgui.ImVec2(100, 100))
            DrawImagePart(IMG, imgui.ImVec2(800, 800), Number[0])
            imgui.End()
        end
    end
)

function DrawImagePart(img, size, number)
    local LineIndex = math.ceil(number / 4)
    local slotIndex = number - (4 * (LineIndex - 1))
    imgui.Image(img, size,
        imgui.ImVec2((slotIndex - 1) * 0.25, (LineIndex - 1) * 0.25),
        imgui.ImVec2((slotIndex - 1) * 0.25 + 0.25, (LineIndex - 1) * 0.25 + 0.25)
    )
end

хотя лично я бы просто рисовал квадраты и числа через DrawList
 

Вложения

  • img.png
    img.png
    63.9 KB · Просмотры: 30
  • oneimage.lua
    257.1 KB · Просмотры: 6

ARMOR

kjor32 is legend
Модератор
4,849
6,102
Давно хочу Пакмана написать на mimgui, но никак не дойдут руки. Сделайте кто-то.
 

nightaiga

Известный
270
97
что насчет тетрис на ЛУА?? 😳😳 я как понимаю у тебя сезон тайм-киллеров какой-то начался
 

XRLM

Известный
2,562
882
можно как варик еще Кубик Рубика сделать.

еще разных форм и размеров, вообще имба будет
 
  • Нравится
  • Клоун
Реакции: Air_Official и nightaiga

Oleg Sleash

Участник
Автор темы
69
97
что насчет тетрис на ЛУА?? 😳😳 я как понимаю у тебя сезон тайм-киллеров какой-то начался
Можно, но не сейчас.
пасьянс на луа😎😎😎😎 я б в него бесконечно играл
Хочу, очень хочу начать это писать, что скорее всего скоро и сделаю

я бы советовал совместить все картинки в 1 и рисовать ее по частям, так же можно "конвертировать" ее в base85 и запихнуть в код, так вообще можно будет не тащить файлы. Вот пример:
Посмотреть вложение 178859
Lua:
local imgui = require('mimgui')

local renderWindow = imgui.new.bool(true)
local IMG = nil
local Number = imgui.new.int(1)

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local IMAGE_BASE85 = "ТУТ КАРТИНКА base85" -- во вложениях скрипт с готовой картинкой

    --IMG = imgui.CreateTextureFromFile('C:\\Users\\admin\\Desktop\\Новая папка (7)\\img.png')
    IMG = imgui.CreateTextureFromFileInMemory(imgui.new('const char*', IMAGE_BASE85), #IMAGE_BASE85)
end)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(self)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 1000, 1000
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow, imgui.WindowFlags.NoDecoration) then
            imgui.SetCursorPos(imgui.ImVec2(100, 75))
            imgui.SliderInt('Number', Number, 1, 15)

            imgui.SetCursorPos(imgui.ImVec2(100, 100))
            DrawImagePart(IMG, imgui.ImVec2(800, 800), Number[0])
            imgui.End()
        end
    end
)

function DrawImagePart(img, size, number)
    local LineIndex = math.ceil(number / 4)
    local slotIndex = number - (4 * (LineIndex - 1))
    imgui.Image(img, size,
        imgui.ImVec2((slotIndex - 1) * 0.25, (LineIndex - 1) * 0.25),
        imgui.ImVec2((slotIndex - 1) * 0.25 + 0.25, (LineIndex - 1) * 0.25 + 0.25)
    )
end

хотя лично я бы просто рисовал квадраты и числа через DrawList
Вот, скрипт с конвертированной картинкой, всё работает
 

Вложения

  • 15.lua
    94 KB · Просмотры: 5
Последнее редактирование:
  • Влюблен
Реакции: nightaiga

webb_

Участник
50
4
пиздец как же я ненавидел эту игру все свое детство, ни разу эту хуйню не мог собрать. держи лайк!
Ага, я вспоминаю как видел у всех эти пятнашки, и считал их больными шо играют в такое дерьмо. Время попробовать!)