DVD弹球

功能演示

在这里插入图片描述

描述

  1. 这段 PICO-8 代码实现了一个简单的弹跳效果:
  2. 屏幕上的精灵(spr (1))从中心位置开始,以随机初速度在 128×128 像素的屏幕内移动。
  3. 当精灵碰到屏幕边缘(上下左右边界)时,会反弹并略微改变速度(加入随机变量),同时随机切换颜色(1-15 号色)并播放 0 号音效(sfx (0))。
  4. 每次运行时,精灵的初始移动方向和速度都是随机的,形成一个持续弹跳、变色并伴随音效反馈的动态效果。

核心逻辑

-- 核心弹跳逻辑
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

完整代码

--bounce--
pos_x=64
pos_y=64
spd_x=2
spd_y=3
col=7
rnd_f=0

--life circle--
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 set--
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值