Показать сообщение отдельно
Старый 02.08.2017, 17:48   #1
nikikust
AnyKey`щик
 
Регистрация: 01.08.2017
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Можно ли оптимизировать

Здравствуйте, я начал более углублённо изучать BM и решил начать с типов. Изучал я их по примерам и некоторым статьям. Я хотел узнать, можно ли как-нибудь мою программку оптимизировать (вывод,обработку...). Заранее спасибо .

Const W=1920
Const H=1080
Const Gravity#=.15
Const maxsparks=55

HideMouse
Graphics W,H,32,60
Global LSparks:TList=CreateList()
AutoMidHandle(True)

Type TSpark
	Field x#,y#,xs#,ys#,ang,angs,r,g,b
	
	Function Create(x,y,r,g,b)
		Local Spark:TSpark=New TSpark
		Local an#=Rnd(360),sp#=Rnd(2,5)
		Spark.x=x
		Spark.y=y
		Spark.xs#=Cos(an#)*sp
		Spark.ys#=Sin(an#)*sp
		Spark.r=r
		Spark.g=g
		Spark.b=b
		Spark.angs=Rnd(1,10)
		Spark.ang=0
		LSparks.Addlast(Spark)
	EndFunction
	
	Method Remove()
		LSparks.remove(Self)
	EndMethod
	
	Function Update() 
		For Local Spark:TSpark=EachIn LSparks
			Spark.x#:+Spark.xs#
			Spark.y#:+Spark.ys#
			Spark.ang:+Spark.angs
			Spark.ys#:+Gravity#
			
			SetRotation Spark.ang
			SetColor Spark.r,Spark.g,Spark.b
			SetHandle 8,8
			DrawRect Spark.x,Spark.y,17,17
			
			If Spark.y>H+17 Then Spark.Remove
			
			SetColor 255,255,255
			SetRotation 0
		Next
	EndFunction
EndType

While Not KeyDown(Key_escape)
	Cls
	DrawRect MouseX(),MouseY(),17,17
	SetAlpha 0.5
	SetBlend LIGHTBLEND
	If MouseDown(1) Then
		For Local crsps=1 To maxsparks
			r=Rnd(255)
			g=Rnd(255)
			b=Rnd(255)
			TSpark.Create(MouseX(),MouseY(),r,g,b)	
		Next
	EndIf
	
	If KeyHit(KEY_D) Then debug=1-debug
	
	If debug Then 
		DrawText "MemAlloced="+GCMemAlloced(),10,10
	EndIf
	TSpark.Update
	Flip
Wend
(Offline)
 
Ответить с цитированием