Листинг программы:
Демонстрация работы программы:
Код: Выделить всё
' ###############################
' # Electric-ball-thingy-demo #
' # #
' # By: Bongotrummor #
' ###############################
// Adaptation from PS2 Yabasic to Yabasic 2.768 by Galileo 2014/09
numballs=6:dim balls(numballs,5):maxzaps=8
for thisball=1 to numballs
balls(thisball,0)=100+ran(440)
balls(thisball,1)=200+ran(300)
balls(thisball,2)=(-45+ran(90))*pi/180
balls(thisball,3)=20+ran(10)
next thisball
clear screen
print "Press UP to increase balls number; DOWN to decrease; SPACE to break."
open window 640,512
backcolor 0,0,50
repeat
dim balls(numballs,5)
clear window
for thisball=1 to numballs
balls(thisball,4)=balls(thisball,4)+0.1
balls(thisball,0)=balls(thisball,0)+((sin(balls(thisball,2)))*balls(thisball,3)*balls(thisball,4))
balls(thisball,1)=balls(thisball,1)-(balls(thisball,3)*cos(balls(thisball,2))-(9.82*balls(thisball,4)^2)/2)
color 0,50,150
fill circle balls(thisball,0),balls(thisball,1),16
for ballcrash=1 to numballs
if (balls(thisball,0)+8)>balls(ballcrash,0) and (balls(thisball,0)-8)<balls(ballcrash,0) and (balls(thisball,1)-8)<balls(ballcrash,1) and (balls(thisball,1)+8)>balls(ballcrash,1) and ballcrash<>thisball then
gosub crash
fi
next ballcrash
if balls(thisball,1)>464 then
balls(thisball,1)=464
gosub crash
balls(thisball,2)=balls(thisball,2)+90
line balls(thisball,0)-100+ran(200),0 to balls(thisball,0)-100+ran(200),150
line to balls(thisball,0)-100+ran(200),300
line to balls(thisball,0)-100+ran(200),450
line to balls(thisball,0),464
fi
if balls(thisball,0)>624 then
balls(thisball,0)=624
gosub crash
fi
if balls(thisball,0)<16 then
balls(thisball,0)=16
gosub crash
fi
if balls(thisball,3)<2 then
gosub crash
balls(thisball,3)=20+ran(10)
balls(thisball,2)=(-45+ran(90))*pi/180
fi
color 0,200,255
for zaps=1 to int(maxzaps)
zapangle=ran(2*pi)
line balls(thisball,0),balls(thisball,1) to balls(thisball,0)+sin(zapangle)*32,balls(thisball,1)-cos(zapangle)*32
zapangle=ran(2*pi)
line to balls(thisball,0)+sin(zapangle)*16,balls(thisball,1)-cos(zapangle)*16
next zaps
next thisball
c$=inkey$(0)
if c$="up" and numballs < 20 then
numballs=numballs+1
fi
if c$="down" and numballs>1 then
numballs=numballs-1
fi
until (c$=" ")
end
label crash
balls(thisball,2)=0-balls(thisball,2)
balls(thisball,4)=0
balls(thisball,3)=balls(thisball,3)-4
color 0,50,100
fill circle balls(thisball,0),balls(thisball,1),64
color 0,200,255
fill circle balls(thisball,0),balls(thisball,1),24
return