Random 如何在love2d中随机抽取某样东西
我目前正在尝试使用love2d创建砖块分解器,但问题是无论何时使用math.random()生成随机砖块,love应用程序都会多次运行,砖块会不断移动 编辑:所以我想在特定的列上生成砖块,但行应该是随机选择的。我的基本想法是做数学运算。random(2)==1,然后使用for循环绘制砖块,但问题是它每秒钟更新/绘制一次,砖块不断闪烁/移动。我只是想随机(只随机选择y坐标,我的x坐标是固定的)在执行代码时画一次,但它一直在闪烁 我面临的问题- 我的代码Random 如何在love2d中随机抽取某样东西,random,lua,random-seed,love2d,Random,Lua,Random Seed,Love2d,我目前正在尝试使用love2d创建砖块分解器,但问题是无论何时使用math.random()生成随机砖块,love应用程序都会多次运行,砖块会不断移动 编辑:所以我想在特定的列上生成砖块,但行应该是随机选择的。我的基本想法是做数学运算。random(2)==1,然后使用for循环绘制砖块,但问题是它每秒钟更新/绘制一次,砖块不断闪烁/移动。我只是想随机(只随机选择y坐标,我的x坐标是固定的)在执行代码时画一次,但它一直在闪烁 我面临的问题- 我的代码 for y = 0, VIRTUAL
for y = 0, VIRTUAL_HEIGHT- 4, 10 do
if math.random(2) == 1 then
love.graphics.rectangle('line', VIRTUAL_WIDTH - 10, y, 5, 10)
end
end
在love.load()中生成块位置
好的,在你编辑了这个问题之后,这听起来更像你所说的。只需取出#列循环,并将其设置为在最后一列上创建单元格 love.load()
如果在draw函数中生成随机砖块,那么每次绘制新帧时都会生成它们。所以如果你画60帧每秒,那么你每秒生成60块新砖块。您可能需要在内部生成砖块的条件。你的问题有点让人困惑,我不太清楚你在问什么。@Sam是的,问题是砖块每60年代产生一次。我只想在应用程序启动时生成一次砖块(为不同级别生成随机放置的砖块),希望它对您有所帮助。{在我的代码中,砖块被dt更新。}“所以我改变了,我尝试在load函数和draw函数中初始化一个随机变量,如果值相等,那么它就会绘制砖块”这是一种方法,但我认为你没有显示足够的代码来解决问题的确切原因。@MukeshIngham我更新了帖子,希望我现在能更好地解释我的问题。这会随机选择砖块颜色,但位置不是随机生成的。我尝试删除RGB颜色部分。在此之后,这段代码只是在相同的位置绘制砖块,我尝试了多次,减少了生成的机会。你必须“输入错误”或者你的虚拟宽度、虚拟高度设置错误,因为它在这里工作得很好。非常感谢这项工作。我想画一个特定尺寸的砖块,所以我在love.graphics.rectangle中改变了这个尺寸。这个网站上的人真的很有帮助
--VIRTUAL_WIDTH, VIRTUAL_HEIGHT = love .graphics .getDimensions( )
block_pos = {} -- table to store block positions
rows, columns = 5, 8 -- you decide how many
chance_of_block = 75 -- % chance of placing a block
block_width = math .floor( VIRTUAL_WIDTH /columns )
block_height = math .floor( VIRTUAL_HEIGHT /rows )
for row = 0, rows -1 do
for col = 0, columns -1 do
if love .math .random() *100 <= chance_of_block then
local xpos = col *block_width
local ypos = row *block_height
local red = love .math .random()
local green = love .math .random()
local blue = love .math .random()
block_pos[ #block_pos +1 ] = { x = xpos, y = ypos, r = red, g = green, b = blue }
end -- rand
end -- #columns
end -- #rows
for b = 1, #block_pos do
local block = block_pos[b]
love .graphics .setColor( block.r, block.g, block.b )
love .graphics .rectangle( 'fill', block.x, block.y, block_width, block_height )
end -- #block_pos
--VIRTUAL_WIDTH, VIRTUAL_HEIGHT = love .graphics .getDimensions()
block_pos = {} -- table to store block positions
rows, columns = 30, 20 -- you decide how many
chance_of_block = 33 -- % chance of placing a block
block_width = math .floor( VIRTUAL_WIDTH /columns )
block_height = math .floor( VIRTUAL_HEIGHT /rows )
col = columns -1 -- don't loop through columns, just use final column
for row = 0, rows -1 do
if love .math .random() *100 <= chance_of_block then
local xpos = col *block_width
local ypos = row *block_height
block_pos[ #block_pos +1 ] = { x = xpos, y = ypos }
end -- rand
end -- #columns
r, g, b = 0.5, 0.5, 0.0
love .graphics .setColor( r, g, b )
for b = 1, #block_pos do
local block = block_pos[b]
love .graphics .rectangle( 'line', block.x, block.y, block_width, block_height )
end -- #block_pos