Dimiron 0 Опубликовано: 28 августа, 2020 (изменено) Прошу сделать рулетку которая будет принимать ставку воронкой а выкидывать выйгрыш выбрасывателем Надо чтобы процент выйгрыша можно было менять. К сожалению ничего в награждение предложить не смогу Но буду Ооочень благодарен тем кто согласится сделать это Изменено 28 августа, 2020 пользователем Dimiron Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 28 августа, 2020 (изменено) 16 часов назад, Dimiron сказал: сделать рулетку которая будет принимать ставку воронкой а выкидывать выйгрыш выбрасывателем Начинал я делать подобную штуку, но как то забросил. В самой игре много скользких моментов. Сначала я делал рулетку на несколько фигур, всякие ягодки, грибочки, BAR-ы, семёрки, в итоги от этой идеи отказался, выиграть в подобное не реально. Упростил до всем понятным крестик и нолик в одну линию. 16 часов назад, Dimiron сказал: Надо чтобы процент выигрыша можно было менять Менять процент выигрыша гиблое дело, игрок должен выигрывать хотя бы иногда, или играть он не будет. Самое сложное оказалось сделать не саму игру, а валюта приемник и выдачу призов, воронка работает медленно, а игроки любят кидать всякий мусор, типа булыги. Приходится от него как-то избавляться, поставил большой сундук сзади автомата, вдруг квант кто выкинет Подключил транспозер и накидал функции, чтоб всем этим управлять. демка: Скрытый текст пример сборки: Скрытый текст Код без выдачи призов (можно потестить в эмуляторе) Скрытый текст local term = require("term") local event = require("event") local computer = require("computer") local com = require("component") local gpu = com.gpu local info = { "чтобы играть коснитесь экрана", "обменяй железную руду на алмазы", "вы выиграете если выпадет три икса", } local frame_1 = [[ ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ]] local frame_2 = [[ █████ ███ ███ ██ ██ ██ ██ ██ ██ ███ ███ █████ ]] local frame_3 = [[ ████████████████████████████████████████████████ █ █ ███ ██ █ ███ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ ███ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ ██ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ █ ██ █ ███ ███ █ █ █ █ ██ █ ████████████████████████████████████████████████ ]] local frame_4 = [[ ██████████████████████████████████████████████████ █ █ ███ ██ █ █ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ ██ █ ███ ███ █ █ █ █ ██ █ ██████████████████████████████████████████████████ ]] local frame_5 = [[ ███ █ ██ █████ █ █ █ ████ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ██ █ █ █ █ ██████ █ █ █ ████ █ █ █ █ ███ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ ███ ████ ██ █ █ █ █ █ ████ █ █ █ █ █ ███ ]] local colors = {0xFF0066,0xFF9900,0xFFFF00,0x00FF00,0x3300FF,0x00FFFF,0xFF00FF} local function draw(x,frame,y) local row = y or 0 for txt in frame:gmatch( "([^\n]+)" ) do row = row + 1 gpu.set(x, row, txt ) end end local function game() term.clear() gpu.setForeground(0xFFFFFF) local a,b,c = 0,0,0 for n,x in pairs({1,24,47}) do local r = math.random(1,2) os.sleep(0.2) if r == 1 then draw(x,frame_1) else draw(x,frame_2) end computer.beep(220) if n == 1 then a = r end if n == 2 then b = r end if n == 3 then c = r end end os.sleep(0.2) if a == 1 and b == 1 and c == 1 then gpu.setForeground(0x00DB00) draw(10,frame_3,12) computer.beep(300, 0.3) computer.beep(500, 0.1) else gpu.setForeground(0xFF0000) draw(10,frame_4,12) computer.beep(500, 0.1) computer.beep(300, 0.3) end end gpu.setResolution(67,20) gpu.setBackground(0x000000) gpu.setForeground(0xFFFFFF) gpu.fill(1,1,67,20," ") draw(4,frame_5) while true do local e = {event.pull(2,"touch")} if e[1] == "touch" then game() else term.clear() gpu.setForeground(colors[math.random(1,#colors)]) draw(4,frame_5) gpu.setForeground(0xFFFFFF) local y = 12 for i = 1,#info do local e = {event.pull(1,"touch")} if e[1] == "touch" then game() break else gpu.set(38-string.len(info[i])/3,y,info[i]) y = y + 1 end end end end Код с выдачей призов(алмаз) и очисткой валюта приёмника от мусора Скрытый текст local term = require("term") local event = require("event") local computer = require("computer") local com = require("component") local gpu = com.gpu local tr = com.transposer local red = com.redstone local whitelist = {"iron","diamond"} -- низ:0, верх:1, тыл:2, перед:3, право:4, лево:5 local dropper_side_red = 1 local chest_for_scrap = 2 local info = { "чтобы играть коснитесь экрана", "обменяй железную руду на алмазы", "вы выиграете если выпадет три икса", } local frame_1 = [[ ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ]] local frame_2 = [[ █████ ███ ███ ██ ██ ██ ██ ██ ██ ███ ███ █████ ]] local frame_3 = [[ ████████████████████████████████████████████████ █ █ ███ ██ █ ███ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ ███ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ ██ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ █ ██ █ ███ ███ █ █ █ █ ██ █ ████████████████████████████████████████████████ ]] local frame_4 = [[ ██████████████████████████████████████████████████ █ █ ███ ██ █ █ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ ██ █ ███ ███ █ █ █ █ ██ █ ██████████████████████████████████████████████████ ]] local frame_5 = [[ ███ █ ██ █████ █ █ █ ████ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ██ █ █ █ █ ██████ █ █ █ ████ █ █ █ █ ███ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ ███ ████ ██ █ █ █ █ █ ████ █ █ █ █ █ ███ ]] local colors = {0xFF0066,0xFF9900,0xFFFF00,0x00FF00,0x3300FF,0x00FFFF,0xFF00FF} local function draw(x,frame,y) local row = y or 0 for txt in frame:gmatch( "([^\n]+)" ) do row = row + 1 gpu.set(x, row, txt ) end end local function drop(source,sink,count,name) local slots = tr.getInventorySize(source) local data = tr.getAllStacks(source).getAll() for i = 0,slots do if data[i] and data[i].name ~= nil then if count == "scrap" then for j,name in pairs(whitelist) do if string.find(data[i].name,name) then break end if j == #whitelist then tr.transferItem(source, chest_for_scrap, 64, i+1) end end elseif string.find(data[i].name,name) then tr.transferItem(source, sink, count, i+1) for i = 1,count do red.setOutput(dropper_side_red, 15) os.sleep(0.1) red.setOutput(dropper_side_red, 0) os.sleep(0.1) end break end end end end local function game() term.clear() gpu.setForeground(0xFFFFFF) local a,b,c = 0,0,0 for n,x in pairs({1,24,47}) do local r = math.random(1,2) os.sleep(0.2) if r == 1 then draw(x,frame_1) else draw(x,frame_2) end computer.beep(220) if n == 1 then a = r end if n == 2 then b = r end if n == 3 then c = r end end os.sleep(0.2) if a == 1 and b == 1 and c == 1 then gpu.setForeground(0x00DB00) draw(10,frame_3,12) computer.beep(300, 0.3) computer.beep(500, 0.1) drop(0,1,1,"diamond") else gpu.setForeground(0xFF0000) draw(10,frame_4,12) computer.beep(500, 0.1) computer.beep(300, 0.3) end end gpu.setResolution(67,20) gpu.setBackground(0x000000) gpu.setForeground(0xFFFFFF) gpu.fill(1,1,67,20," ") draw(4,frame_5) while true do local e = {event.pull(2,"touch")} if e[1] == "touch" then game() else term.clear() gpu.setForeground(colors[math.random(1,#colors)]) draw(4,frame_5) drop(0,1,"scrap") gpu.setForeground(0xFFFFFF) local y = 12 for i = 1,#info do local e = {event.pull(1,"touch")} if e[1] == "touch" then game() break else gpu.set(38-string.len(info[i])/3,y,info[i]) y = y + 1 end end end end Повторюсь проект не завершен и врятли когда то будет, просто делюсь наработками Изменено 28 августа, 2020 пользователем serafim 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Dimiron Автор темы 0 Опубликовано: 28 августа, 2020 Спасибо огромное , мне надо было с чего-то начать!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 29 августа, 2020 (изменено) 7 часов назад, serafim сказал: Приходится от него как-то избавляться, поставил большой сундук сзади автомата, вдруг квант кто выкинет Даже на ваниле делали вороночные фильтры. Скрытый текст Изменено 29 августа, 2020 пользователем BrightYC 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
whiskas 144 Опубликовано: 29 августа, 2020 6 часов назад, BrightYC сказал: Даже на ваниле делали вороночные фильтры. а с помощу ОС ваше изи. 1) Ставиш воронку. 2) закидуеш в каждый слот по 1 предмету (валюта) 3) когда в слоте больше чем 1 валюта то что б транспоузер перемещал их в ме или другой сундук. p.s я б не рекомендувал юзать транспоузер для таких мелких задач ибо он зачастую не может работать в приватах пока ты не добавиш в приват [opencomputers] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах