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

Электрический шар

Клавишей вверх увеличиваете количество шаров, клавишей вниз уменьшаете, пробел - остановка

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

Электрический шар

Сообщение Anton »

Электрический шар
Листинг программы:

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

'              ###############################
'              #  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
Демонстрация работы программы:
2025-05-16_18-02-15.gif
У вас нет необходимых прав для просмотра вложений в этом сообщении.