Physics Tutorial Needed

BlitzMax Forums/BlitzMax Beginners Area/Physics Tutorial Needed

I made another cool physics demo.. check it..


Type TSolidBlock
	Global List:TList
	Global Image:TImage
	
	Field x#,y#,Xvel#,Yvel#
	Field Size#
	Field R,G,B		
	Function CreateBlock(x#,y#,size#)

		Local Block:TSolidBlock = New TSolidBlock
		If List = Null List = CreateList()
		List.AddLast Block
 		Block.R=Rnd(10,200)
 		Block.G=Rnd(10,200)
 		Block.B=Rnd(10,200)
		Block.x# 			= x#
		Block.y# 			= y#
		Block.size# 		= size#

	EndFunction

	Function MoveBlocks()
		If Not List Return
		Local Block:TSolidBlock
		For Block = EachIn List
		If MouseDown(1) Friction#=0.0
		If MouseDown(2) Friction#=Rnd(-4.5,4.5)

		Dir#=Rnd(0,360)
		Block.Xvel#:+ Cos(Dir#)*friction#
		Block.Yvel#:+ Sin(Dir#)*friction#
		Block.X# = Block.X# + Block.Xvel# - Friction#
		Block.Y# = Block.Y# + Block.Yvel# - Friction#
		Next
	End Function



	Function DrawBlocks()
		If Not List Return
		Local Block:TSolidBlock
		For Block = EachIn List
			SetColor(block.R,block.G,block.B)
			DrawRect(block.x#-block.size#/2,block.y#-block.size#/2,block.size#,block.size#)
		Next

	End Function

End Type

Graphics 800,600,0

Repeat
	Cls

	SetColor(255,255,255)
	DrawText "Move the mouse",0,0
	DrawText "LMB: Draw  |  RMB: Explode!",0,20
	If MouseDown(1) TSolidBlock.CreateBlock(MouseX(),MouseY(),Rnd(2,10))
	TSolidBlock.MoveBlocks()
	TSolidBlock.DrawBlocks()
	Flip
Until KeyHit(Key_Escape)