功能演示

描述
- 这段 PICO-8 代码实现了一个简单的弹跳效果:
- 屏幕上的精灵(spr (1))从中心位置开始,以随机初速度在 128×128 像素的屏幕内移动。
- 当精灵碰到屏幕边缘(上下左右边界)时,会反弹并略微改变速度(加入随机变量),同时随机切换颜色(1-15 号色)并播放 0 号音效(sfx (0))。
- 每次运行时,精灵的初始移动方向和速度都是随机的,形成一个持续弹跳、变色并伴随音效反馈的动态效果。
核心逻辑
function bounce()
pos_x += spd_x
pos_y += spd_y
rnd_f = -2 + rnd(2)
if pos_x >= 120 then
pos_x = 120
spd_x = -spd_x + rnd_f
elseif pos_x <= 0 then
pos_x = 0
spd_x = -spd_x + rnd_f
end
if pos_y >= 120 then
pos_y = 120
spd_y = -spd_y + rnd_f
elseif pos_y <= 0 then
pos_y = 0
spd_y = -spd_y + rnd_f
end
end
完整代码
pos_x=64
pos_y=64
spd_x=2
spd_y=3
col=7
rnd_f=0
function _init()
cls()
spd_x=-3+rnd(3)
spd_y=-3+rnd(3)
end
function _update()
bounce()
end
function _draw()
cls()
pal(7,col)
spr(1,pos_x,pos_y)
end
function bounce()
pos_x+=spd_x
pos_y+=spd_y
rnd_f=-2+rnd(2)
if pos_x>=120 then
pos_x=120
spd_x=-spd_x+rnd_f
col=1+rnd(15)
sfx(0)
elseif pos_x<=0 then
pos_x=0
spd_x=-spd_x+rnd_f
col=1+rnd(15)
sfx(0)
end
if pos_y>=120 then
pos_y=120
spd_y=-spd_y+rnd_f
col=1+rnd(15)
sfx(0)
elseif pos_y<=0 then
pos_y=0
spd_y=-spd_y+rnd_f
col=1+rnd(15)
sfx(0)
end
end