Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram

Столкновение

Порт программы с PS2

Библиотеки и примеры программ на языке Yabasic
Аватара пользователя
Anton
Site Admin
Сообщения: 120
Зарегистрирован: Чт фев 08, 2024 7:03 pm

Столкновение

Сообщение Anton »

Столкновение
Код программы

Код: Выделить всё

REM ==========================================================
REM Adaptation from PS2 version of Yabasic for Galileo 2014/09
REM ==========================================================

open window 640,512
ang1=pi/180
ang2=180/pi
ra=30 
ball=6
dim dirs(ball),xs(ball),ys(ball),ssp(ball)
dim hitang(ball),hit(ball),reang(ball)

for a=1 to ball
	dirs(a)=0
	read xs(a),ys(a)
	ssp(a)=0
next a

dirm=30
xm=500
ym=100
msp=5

do
	pause .02
	clear circle xm,ym,ra
	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)
		circle xs(a),ys(a),ra

		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*2 dirm=reang(a)
		dirs(a)=hitang(a)-90
	next a


	xm=xm+cos(dirm*ang1)*msp
	ym=ym+sin(dirm*ang1)*msp
	circle xm,ym,ra
	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
loop

data 252,126,396,126,468,252,396,378,252,378,180,252
 
Результат работы программы:
CollisionTest2.gif
У вас нет необходимых прав для просмотра вложений в этом сообщении.