s=0 # Score
init()
start()
@loop
# Move ball
b[0]=b[0]+b[2]
b[1]=b[1]+b[3]
# Move paddle
if x>0 && btndown('a'):x=x-2.5:end
if x<112 && btndown('b'):x=x+2.5:end
# Check missed paddle
if b[1]>60:start():end
# Check paddle collision
if b[1]>=60-r
if b[0]+r>=x && (b[0]-r)<=x+16
b[1]=60-r
b[2]=((b[0]-(x+8))/8)*2
b[3]=-b[3]
sound(200,10,100)
end
end
# Check boundary collision
if b[0]<=r || b[0]>=127-r:b[2]=-b[2]:end
if b[1]<=0:b[3]=-b[3]:end
# Check brick collision
if b[1]<=22 && b[1]>=10
u = b[0]
v = b[1]-10
i = trunc(u/8) + trunc(v/3)*16
if i>=0 && i<48
if z[i]
b[3]=-b[3]
z[i]=0
sound(400,10,100)
c=c-1
s=s+5
end
end
end
# Update screen
lcdclear(0)
u=0:v=0
for i in range(0,48)
u=(i%16)*8
v=10+trunc(i/16)*4
if z[i]
lcdrect(1,u+1,v-1,7,3)
end
next
lcdline(1,x,60,x+16,60)
lcdcircle(1, b[0], b[1], r)
lcdtext("score",1,0,0)
lcdtext(str(s),1,32,0)
lcdshow()
if c=0
# Restart if we got all the bricks
init()
start()
end
goto loop
@start
# Reset ball
b[0]=64-r
b[1]=28
if b[0]>x
b[2]=-1
else
b[2]=1
end
lcdtext("Ready",1,52,30)
lcdshow();
wait(1000)
return
@init
c=48 # Brick count
dim z[c] # Bricks
dim b[4] # Ball x,y,dx,dy
r=2 # ball radius
d=r*2 # ball diameter
x=64-8 # Paddle X
w=16 # Paddle width
# Setup the bricks
for i in range(0,48):z[i]=1:next
# Setup ball
b[0]=64-r
b[1]=20
b[2]=1
b[3]=2
btnenable('a',1)
btnenable('b',1)
return
1 Like
DUE is simpler and easier to learn than Python, Swift, and C#. However, it can still build complete projects. Thanks @taylorza