如何创建一个玩家必须猜测随机生成的 pin 的 Roblox 游戏?

Posted

技术标签:

【中文标题】如何创建一个玩家必须猜测随机生成的 pin 的 Roblox 游戏?【英文标题】:How to create a Roblox game where the player has to guess a randomly generated pin? 【发布时间】:2020-08-06 01:50:52 【问题描述】:

所以,过去一周我一直在研究这个问题。我已经尝试了一切(基于我所知道的知识),但什么都没有......我的代码第一次,第二次,第三次......第四次......等等......最后,我让沮丧控制了我,我最终删除了整个脚本。幸好不是零件和模型,否则我真的搞砸了......

我需要创建一个游戏,我必须在其中创建一个键盘,起初我认为 GUI 可以工作......不,它需要是 SurfaceGUI,我不知道如何处理好...... . 无论如何,我需要使用 SurfaceGUI 创建一个键盘,并将其显示在一个单独的屏幕上,就像典型的键盘一样......

玩家首先必须输入一个“初始”数字,这意味着为了输入随机生成的数字,他首先需要输入静态密码才能“登录”,然后他会尝试猜测号码……

我确实尝试了所有我能做的事情,但一无所获...这主要是因为我缺乏 LUA 经验,我在 Python 方面更先进,对 Java 几乎一无所知...如果有人可以帮助我如何做到这一点,我将不胜感激

【问题讨论】:

【参考方案1】:

首先,下载this 并将其放入 StarterGui 中的 ScreenGui 中。然后,使用下面的LocalScript 放置在 PIN 框内:

-- Script settings

local len = 4 -- replace this as needed...
local regen = false -- determines whether PIN will regenerate after a failed attempt
local regmes = "Enter PIN..." -- start message of PIN pad
local badmes = "Wrong PIN!" -- message displayed when PIN is wrong
local success = "Correct PIN!" -- message displayed when PIN is right


-- Script workings

local pin = script.Parent
local top = pin.Top
local txt = top.Numbers
local nums = top.NumKeys
local pin
local stpin
local nms
txt.Text = regmes
local see = game:GetStorage("ReplicatedStorage").PINActivate
local function activate()
    if pin.Visible then
        pin.Visible = false
        for _, btn in pairs(nums:GetChildren()) do
            btn.Active = false
        end
        return
    else
        pin.Visible = true
        for _, btn in pairs(nums:GetChildren()) do
            btn.Active = true
        end
        return
    end
end
local function rand()
    math.randomseed(os.time) -- better random numbers this way
    return tostring(math.floor(math.random(0,9.9)))
end
local function gen()
    nms = rand()
    for i=2, len, 1 do
        nms[#nms+1]=rand()
    end
    stpin = nms[1]
    for i=2, #nms, 1 do
        stpin = stpin..nms[i]
    end
    pin = tonumber(stpin) -- converts the number string into an actual number
end
gen()
local function activate(str)
    if tonumber(str) ~= pin then
        txt.Text = badmes
        wait(2)
        txt.Text = regmes
        if regen then
            gen()
            wait(0.1)
        end
        return
    else
        txt.Text = success
        wait(2)
        activate()
        -- insert code here...
    end
end
for _, btn in pairs(nums:GetChildren()) do
    btn.Activated:Connect(function()
        if txt.Text == "Wrong PIN!" then return end
        txt.Text = txt.Text..btn.Text
        if string.len(txt.Text) >= len then
            activate(txt.Text)
        end
        wait(0.1)
    end)
end
see.OnClientEvent:Connect(activate)

并在脚本中输入:

local Players = game:GetService("Players")
local see = game:GetService("ReplicatedStorage").PINActivate
local plr
-- replace Event with something like Part.Touched
Event:Connect(function(part)
    if part.Parent.Head then
        plr = Players:GetPlayerFromCharacter(part.Parent)
        see:FireClient(plr)
    end
end)

这将只为该玩家显示ScreenGui,以便他们可以输入 PIN,也可以关闭它。您可以根据需要进行修改;祝你有美好的一天! :D

【讨论】:

以上是关于如何创建一个玩家必须猜测随机生成的 pin 的 Roblox 游戏?的主要内容,如果未能解决你的问题,请参考以下文章

用Java编程实现一个猜数字的游戏:系统随机产生一个1~100的数字,然后让玩家猜测这个数字,如果玩家猜错,

如何使用 python 3.2 生成(和标记)随机整数?

用C语言实现一个简单的猜数字游戏

确保相邻节点不共享相同的值

如何使用 for 循环为二维数组中的元素设置数据值?

201621123065《JAVA课程设计报告》