显示计算步骤p5.js

问题描述 投票:0回答:1

我正在制作草图以显示排序算法。算法本身有效,但是当我执行它时,它直接进入解决状态,而我希望它显示所有计算。我已经尝试将帧速率设置得低一点,但这只会延迟视觉效果。如何设置它以便在每次计算后执行drawRect()函数?这是我的代码:

let elements = 25
var array = []
let goal = []
let tempAr = []
let i = 1
let sorted = false

function setup() {
    // frameRate(5)
    // put setup code here
    createCanvas(600, 600)
    background(25)
    // make the goal array ascending
    while (goal.length < elements) {
        goal.push(i)
        i++
    }
    // make the scrambled array
    i = 0
    tempAr = goal
    while (i < elements) {
        let rng = Math.floor(random(tempAr.length))
        array.push(tempAr[rng])
        tempAr.splice(rng, 1)
        i++
    }
}

function draw() {
    fill('#f1f442')
    drawRect()
    if (!sorted) {
        mysort()
    }
}
function drawRect() {
    i = 1
    while (i <= elements) {
        rect(i * (width / elements) - (width / elements), height - array[i - 1] * height / elements, width / elements, array[i - 1] * height / elements)
        i++
    }
}
async function mysort() {
    sorted = false
    while (!sorted) {
        sorted = true
        var e = 0
        while (e < array.length) {
            if (array[e] > array[e + 1]) {
                clear()
                background(25)
                let temp = array[e + 1]
                array[e + 1] = array[e]
                array[e] = temp
                sorted = false
            }
            e++
        }
    }
}
javascript p5.js
1个回答
0
投票

在P5中,setup()中发生的一切都会立即发生,draw()会在此之后被调用,并且会在@ 60fps(或任何你设置的帧速率)下连续调用它。如果要显示算法的进度,请根据draw()调用执行一次算法迭代(或者需要多次迭代以获得所需的输出)。

© www.soinside.com 2019 - 2024. All rights reserved.