我需要为朋友展示一些简单的代码示例,例如沿屏幕边缘顺时针移动一个按钮。当然这是非常简单的事情,不,这是最简单的。但我发现自己在这上面花了将近 30 分钟。我很尴尬,因为我是 20 多年的专业程序员,我什至需要多次启动程序才能让按钮飞到正确的方向。我在想,为什么?所以我推测这种代码很难立即正确,因为它是非常古老的风格,每个案例都是单独输入的,每次检查都必须手动输入,你需要经过每次迭代并仔细确保所有数字和检查是完全正确的,由于代码风格的性质,这很难做到,那就是,呃,意大利面条,凌乱?
所以我想,有没有办法将它转换为“现代”方式,比如使用循环而不是案例,使用模板或其他元编程,使用函数方法或至少使用数组。看来我找不到任何好的方法。
var mx = screen.width - b.w, my = screen.height - b.h
setInterval(function() {
var step = 3
if (state == 1) {
b.x += step
if (b.x >= mx) b.x = mx, state++
} else if (state == 2) {
b.y += step
if (b.y >= my) b.y = my, state++
} else if (state == 3) {
b.x -= step
if (b.x <= 0) b.x = 0, state++
} else if (state == 4) {
b.y -= step
if (b.y <= 0) b.y = 0, state = 1
}
b.apply()
}, 1)
这是 JavaScript,在 C 中要快速正确会更加困难,因为您需要考虑类型。
这是我自己提出的……这可能证明了我正在努力实现的目标。我不是在谈论选择不同的算法。而是探索语言特性和编程技术。
var D = 3, name = ['x','y'], delta = [D,D,-D,-D],
limit = [screen.width - b.w, screen.height - b.h,0,0]
setInterval(function() {
b[name[0]] += delta[0]
if (delta[0] > 0 && b[name[0]] > limit[0] || b[name[0]] <= 0)
b[name[0]] = limit[0],
[name,delta,limit].some(function(x){ x.push(x.shift()) })
b.apply()
},1)
这至少将数据与代码分开,使其更容易正确处理。从第一次尝试开始它就对我有用。但我仍然不完全满意)