Author Topic: Pinball  (Read 1103 times)

0 Members and 1 Guest are viewing this topic.

Offline bikemadness

  • Amiga 1200
  • ****
  • Posts: 312
  • Karma: 25
  • Hard players don't go home.
    • View Profile
Pinball
« on: May 31, 2025 »
with colour change.

Code: [Select]
ang1=pi/180
ang2=180/pi
ra=30

restore colours
read shade
dim R(shade)
dim G(shade)
dim B(shade)

for a=1 to shade
read R(a)
read G(a)
read B(a)
next a

restore spheres
read ball

dim dirs(ball)
dim xs(ball)
dim ys(ball)
dim ssp(ball)
dim hitang(ball)
dim hit(ball)
dim reang(ball)
dim ra(ball)
dim go(ball)
dim lit(ball)

for a=1 to ball
dirs(a)=0
read xs(a),ys(a)
ssp(a)=0
ra(a)=40
go(a)=int(ran(12))+1
next a

dirm=25
xm=500
ym=100
msp=8
ra=10
'm=.1

open window 640,512
repeat
setdispbuf vm
vm=1-vm
setdrawbuf vm
clear window

setrgb 1,200,200,0
fill rectangle 0,0 to 640,512

for a=1 to ball
xs(a)=xs(a)+cos(dirs(a)*ang1)*ssp(a)
ys(a)=ys(a)+sin(dirs(a)*ang1)*ssp(a)

hitang(a)=atan(xs(a)-xm,ym-ys(a))*ang2+180
hit(a)=(abs(xs(a)-xm)^2+abs(ys(a)-ym)^2)^0.5
reang(a)=((dirs(a)+180)-dirm)*2+dirm-180
if hit(a)<ra(a)+ra dirm=reang(a)
dirs(a)=hitang(a)-90

if hit(a)<ra(a)+ra go(a)=go(a)+1
if go(a)>12 go(a)=1

if hit(a)<ra(a)+ra lit(a)=lit(a)+1
if hit(a)<ra(a)+ra tot=tot+1

for b=1 to shade
if go(a)=b setrgb 1,R(b),G(b),B(b)
next b

'ys(10)=ys(10)-m
'if ys(10)<200 or ys(10)>462 m=-m

fill circle xs(a),ys(a),ra(a)

setrgb 1,0,0,0
circle xs(a),ys(a),ra(a)

setrgb 1,0,0,0
text xs(a)-10,ys(a)+5,str$(lit(a))

next a

xm=xm+cos(dirm*ang1)*msp
ym=ym+sin(dirm*ang1)*msp

setrgb 1,250,120,0
fill circle xm,ym,ra

setrgb 1,0,0,0
circle xm,ym,ra
text 300,250,str$(tot)

if xm<0+ra dirm=270-dirm+270
if xm>640-ra dirm=90-dirm+90
if ym<0+ra dirm=-dirm
if ym>510-ra dirm=180-dirm+180
if dirm>360 dirm=dirm-360
if dirm<0 dirm=dirm+360

until (1=0)

label spheres
data 10
data 252,126
data 396,126
data 468,252
data 396,378
data 252,378
data 180,252
data 50,50
data 590,50
data 50,462
data 590,462

label colours
data 12
data 256,000,000
data 000,256,000
data 000,000,256
data 256,256,000
data 256,128,000
data 256,000,256
data 128,128,128
data 220,020,060
data 256,192,203
data 256,203,164
data 118,215,234
data 150,075,000

Have a Yahappy day.
I don't know what is wrong with the world - but I know how to fix it.