| This is my code: 
 
'=============INITIALIZATION SECTION=============== 
 SuperStrict
 Framework brl.max2d
  
   Import brl.bmploader
   Import brl.jpgloader
   Import sas.spritebehaviors  
   Import brl.math
   
   '==========Основа Игры============
   SeedRnd MilliSecs()
   Const Window_Width:Int=800,Window_Height:Int=600
   AppTitle="Spacer"
   Graphics (Window_Width,Window_Height,32,60) 
   HideMouse()
   AutoMidHandle True		
   Global World:GameWorld=GameWorld.Create(Window_Width,Window_Height)		 
   World.ToggleShowFPS() 			
   'World.SetClientSize(Window_Width,Window_Height)
	 
  '________________Игровые Листы__________________
  Global EnemyLooserList:TList=CreateList()
  Global PulaList:TList=CreateList()
  Global ExpList:TList=CreateList()
  Global MothBullet:TList=CreateList()
  Global BombersList:TList=CreateList()			
  'Global Damage_List:TList=CreateList()
  Global Attackers_List:TList=CreateList()
 
 			   
   '================|000_ПАРАМЕТРЫ_000|=================
   Parameters.CohesionWeight=55						  ' установка параметров для реалистичности ИИ
   Parameters.WanderWeight=90
   Parameters.SeparationWeight=45
   Parameters.AlignmentWeight=30
   Parameters.EvadeWeight=150
   Parameters.ArriveWeight=100
  
   Rem
   Parameters.CohesionWeight=55						  ' установка параметров для реалистичности ИИ
   Parameters.WanderWeight=90
   Parameters.SeparationWeight=65
   Parameters.AlignmentWeight=30
   Parameters.EvadeWeight=150
   Parameters.FollowPathWeight=10
   Parameters.ArriveWeight=100
   End Rem
   
   'World.ToggleRenderCollisionRadius
   	     ' Включение отображения ФПС
 			 '  Делаем автоцентровку изображений
   
    '++++++++++++++++Splash Screen++++++++++++++
  'Incbin "images\main.png"
  'Incbin "images\end.png"
  'Global Splash_Screen:TImage=LoadImage("incbin::images\main.png",FILTEREDIMAGE)
  'Global End_Scr:TImage=LoadImage("incbin::images\end.png",FilterEDIMAGE)
  
   
   '=========Images Section===============
     Incbin "images\enemy.png"						   ' тут изображения
     Incbin "images\bomber.png"			    ' включаются в .ехе
     Incbin "images\stars1.jpg"	
     Incbin "images\player2.png"
     Incbin "images\pula.png"
     Incbin "images\explos2.bmp"
	 Incbin "images\1.bmp"
	 Incbin "images\mothership.png"
	 Incbin "images\mothership_bullet.png"
	 Incbin "images\turret.png"
	 Incbin "images\shield.png"
	' Incbin "images\mini_explos.bmp"
	 
	 '===========Вся Медиа Проекта Здесь===============
   Global PlayerShield:TImage=LoadImage("Incbin::images\shield.png")
   Global EnemyLooserImage:TImage = LoadImage ("incbin::images\enemy.png")
   Global EnemyBomberImage:TImage=LoadImage("incbin::images\bomber.png")
   Global Stars:TImage=LoadImage("incbin::images\stars1.jpg")
   Global ExplImage2:TImage=LoadAnimImage ("incbin::images\explos2.bmp",128,128,0,20)
   Global ExplImage:TImage=LoadAnimImage ("incbin::images\1.bmp",128,128,0,20)
   Global MotherShip_Image:TImage=LoadImage("incbin::images\mothership.png")
   'Global Damage_Image:TImage=LoadAnimImage("incbin::images\Mini_Explos.bmp",128,128,0,24)
   Global AttackBullet_IMG:TImage=LoadImage ("incbin::images\mothership_bullet.png")
   Global Pula_IMG:TImage=LoadImage ("incbin::images\pula.png")
   Global MOTHPULA_IMG:TImage=LoadImage ("incbin::images\mothership_bullet.png")
   Global Player_IMG:TImage=LoadImage("incbin::images\player2.png")
   Global Turret:TImage=LoadImage("incbin::images\turret.png")
   
	
   Type Pula								  ' Тип Пуля, и все что с ней связано)))
	 Field x#,y#,xspd#,yspd#,dir:Int
	 Field entity:TImage=Pula_IMG
	 Field List:TList=PulaList
	 Field Alpha#=1
    Function create(x#,y#,xspd#,yspd#,dir#)
		Local Unit:Pula=New Pula
		Local spd:Int=8
		Unit.x = x
		Unit.y = y
		Unit.dir = dir
		Unit.Xspd = Cos(dir)*spd+Xspd												
		Unit.Yspd =  Sin(dir)*spd+YSpd
		ListAddLast (Unit.List,Unit)
	 End Function
	 Method update()
		   x:+Xspd
		   alpha:-0.015
		   Y:+Yspd
		   If X<0 Or X>Window_Width Or Y<0 Or Y>Window_Height Or alpha<=0Then List.Remove(Self)
		   SetAlpha alpha
		   SetScale 0.5,0.5
		   SetRotation dir
	       DrawImage entity,x,y
		   SetRotation 0
		   SetScale 1,1
		   SetAlpha 1
	 End Method
 End Type
   
   Type MothPula								  ' Тип Пуля, и все что с ней связано)))
	 Field x#,y#,xspd#,yspd#,dir:Int
	 Field entity:TImage=MOTHPULA_IMG
	 Field Alpha#=1
	 Field List:TList=MothBullet
    Function create(x#,y#,xspd#,yspd#,dir#)
		Local Unit:MothPula=New MothPula
		Local spd:Int=8
		Unit.x = x
		Unit.y = y
		Unit.dir = dir
		Unit.Xspd = Cos(dir)*spd+Xspd												
		Unit.Yspd =  Sin(dir)*spd+YSpd
		ListAddLast (Unit.List,Unit)
	 End Function
	 Method update()
		   Alpha:-0.01
		   x:+Xspd
		   Y:+Yspd
		   If X<0 Or X>Window_Width Or Y<0 Or Y>Window_Height Or Alpha<=0 Then List.Remove(Self)
		   SetAlpha alpha
		   SetScale 0.4,0.4
		   SetHandle 0,5
		   SetRotation dir
	       DrawImage entity,x,y
		   SetRotation 0
		   SetHandle 0,0
		   SetScale 1,1
		   SetAlpha 1
	 End Method
 End Type
  	 
   Type AttackBullet								  ' Тип Пуля, и все что с ней связано)))
	 Field life:Int
	 Field x#,y#,xspd#,yspd#,dir#
	 Field entity:TImage=AttackBullet_IMG
	 Field List:TList=Attackers_List
    Function create(x#,y#,xspd#,yspd#,dir#)
		Local Unit:AttackBullet=New AttackBullet
		Local spd:Int=8
		Unit.x = x
		Unit.y = y
		Unit.dir = dir
		Unit.Xspd = Cos(dir)*spd+Xspd												
		Unit.Yspd =  Sin(dir)*spd+YSpd
		Unit.life=30
		ListAddLast (Unit.List,Unit)
	 End Function
	 Method update()
		   x:+Xspd
		   Y:+Yspd
		   life:-1
		   If X<0 Or X>Window_Width Or Y<0 Or Y>Window_Height Or life=0 Then List.Remove(Self)
		   SetScale 0.4,0.2
		   SetRotation dir
	       DrawImage entity,x,y
		   SetRotation 0
		   SetScale 1,1
	 End Method
 End Type
  
   Type Explosion
	Field x#,y#,frame%
	Field Image:TImage
	Field Alpha#=1
	Function Create(x#,y#,Image:Timage)
		Local c:Explosion=New Explosion
		c.x=x
		c.y=y
		c.frame=0
		c.Image=Image
		ListAddLast (ExpList,c)
   End Function
	Method update(MAX_FRAME:Int)
		If frame<=MAX_FRAME And alpha>=0
			SetAlpha alpha
			SetScale 0.5,0.5
			DrawImage Image,x,y,frame
			SetScale 1,1
			SetAlpha 1
	    Else
		    ListRemove(ExpList,Self)
		End If
		frame:+1
		alpha:-0.01
	End Method
	
  End Type
  
  
   Rem
   Type Damage
	Field x#,y#,Frame:Int,Image:TImage,List:TList
	Field angle#
	Function Create(x#,y#,angle#,Image:timage,List:TList)
	Local C:Damage=New Damage
	C.angle=angle
	C.Image=Image
	C.List=List
	C.x=x
	C.y=y
	ListAddLast (List,C)
	End Function
	Method update(MaxFrame:Int)
	  If Frame<=MaxFrame 
		 
		 SetRotation angle
		 SetScale 0.5,0.6
		 DrawImage Image,x,y,frame
		 SetScale 1,1
		 SetRotation 0
		
	  Else 
	  List.Remove(Self)
	  End If
	  frame:+1
	 
	End Method
End Type
End Rem
   	 '  Создание игрока и мишени дя ботов
  ' //////////////////////// Искусственный Интеллект ///////////////////////////  
	Global  Point:Sprite=New Sprite
	Global  Shield_Active:Int=0
    Global  Player1:Player=New Player
    Global  Num_LooserEnemies:Int=100
    Global  Num_Bombers:Int=5
	' ************MotherShip***************
	Global  MotherShip:Sprite=Sprite.CreateForSteering(MotherShip_Image,World,CreateVector(80,80),0,CreateVector(1,1),6,1,1,0.05,0.5)
    Global MotherShipLife:Int=100
	 MotherShip.GetSteering().WanderOn()
	 MotherShip.GetSteering().EvadeOn()
	 MotherShip.AddEvadeTarget(Point)
	 MotherShip.SetWorldWrap(True)
     World.AddVehicle(MotherShip)
	 '\\\\\\\\\\\\\\\\Turret\\\\\\\\\\\\\\\\
	 Global TurretGun:Sprite=Sprite.CreateForSteering(Turret,World,MotherShip.GetPosition(),0,CreateVector(0,0),1,0,0,1,0.45)
	 World.AddVehicle(TurretGun)
	 '\\\\\\\\\\\\\\\\Others\\\\\\\\\\\
	 Create_AI()
	
	  	 ' ======== Дела Плейрные =============
	 Type Player
		Field x#=Window_Width/2,y#=Window_Height/2,dir#,frict#=0.03,maxspd#=4.0,accel#=0.09,xspd#,yspd#
		Field turnfrict#=0.9,turnmax#=2.0,turnaccel#=2.0,spdvect#,turnspd#
		Field Life:Int=100
		Field entity:TImage=Player_IMG
		  
		Method Update()
				 If KeyDown(KEY_UP)							' Манипулирование векторами и переменными для 
				       		XSpd:+Cos(dir)*accel					  ' достижения движения, для игрока
							YSpd:+Sin(dir)*accel
						
				EndIf
																										 
				If KeyDown(KEY_DOWN)
					        XSpd:-Cos (dir) * accel
							YSpd:- Sin (dir) * accel
				End If
				
				spdvect=Sqr(xspd*xspd+yspd*yspd)	  ' вычисление длины вектора скорости по т. Пифагора
				
				If spdvect>0											 
					   xspd:-(xspd/spdvect)*frict
					   yspd:-(yspd/spdvect)*frict
				End If
				
				If spdvect>maxspd
					   xspd:+(xspd/spdvect)*(maxspd-spdvect)
					   yspd:+(yspd/spdvect)*(maxspd-spdvect)
				End If
				
				x:+xspd
				y:+yspd
			
				
														   ' Ну это ясно, как день =)
				SetRotation dir
				DrawImage entity,x,y
				SetRotation 0
			
				If KeyDown(Key_Left)
					Turnspd:-Turnaccel
				End If
				
				If KeyDown(Key_Right)
					turnspd:+TurnAccel
				End If
				
				If MouseDown(1) Or  KeyDown(KEY_SPACE) And Time<MilliSecs() Then
				    Pula.create(x,y,xspd,yspd,dir)
				    time=MilliSecs()+100
				EndIf
				
			    If turnspd>turnmax  turnspd=turnmax
				If turnspd<-turnmax turnspd=-turnmax
				
				dir:+turnspd
				If dir<0 dir:+360
				If dir>360 dir:-360
				
				If turnspd>turnfrict turnspd:-turnfrict
				If turnspd<-turnfrict turnspd:+turnfrict
				
				If turnspd<turnfrict And turnspd>-turnfrict Then  turnspd=0
				
			
            
			   
				Point.SetPosition(x,y)
				
	            If x>Window_Width Then x=0							   ' Буржуи называют это Wrapping'ом
				If x<0 Then x=Window_Width
				If y>Window_Height Then y=0
				If y<0 Then y=Window_Height
				
	End Method
End Type
Type Shield
   Function Active_true(x#,y#,angle#)
		If Shield_Active=1
			 SetScale 1,1.45
			 SetRotation angle
			 DrawImage PlayerShield,x,y
			 SetRotation 0
			 SetScale 1,1
		End If
	End Function
End Type
  ' ----------------Таймеры ---------------------	
	Global MothTime:Int=MilliSecs()
    Global time:Int=MilliSecs()
	Global AttTime:Int=MilliSecs()
	Global ReLife:Int=MilliSecs()
	Global ReLife2:Int=MilliSecs()
	Global Mult#=1 
	Global ExtraTime:Int
	Global ShieldTime:Int
	Global ShieldPauseTime:Int=1000
	
	' =========== Main Cycle ==========
	While Not KeyHit(KEY_ESCAPE)							
    Cls
	DrawImage Stars,450,370		   ' отрисовка заднего фона
   
	Player1.update()
    World.Update(Delta.time()) 
	
	  If ShieldPauseTime>300 
                       If MouseDown(2) 
                         ShieldTime=500 
                         ShieldPauseTime=0
                       EndIf
              EndIf
               If ShieldTime>0
                        ShieldTime:-1
                        Shield_Active=1
               Else
               ShieldPauseTime:+1
               Shield_Active=0
			   
	  EndIf
	  
	Shield.Active_true(Player1.x,Player1.y,Player1.dir)		  
  
  DrawText "Player Life:"+Player1.Life,660,10
  DrawText "Mothership Life:"+MotherShipLife,640,22
  DrawText "Num of Loosers:"+EnemyLooserList.Count(),640,34
  DrawText "Num of Attackers:"+BombersList.Count(),640,46
  Rem 
	If Player1.Life<=0 Then 
	Notify "You Die! And i'm cry..."
	End
	EndIf
  End Rem
  
	If MotherShipLife<=0 Then 
	Notify "You Won! Well Done!"
	End
	EndIf
  
  If MotherShipLife<= 50 Then 
	   For Local k:Sprite = EachIn EnemyLooserList
	     	 k.GetSteering().EvadeOff()
		     k.ClearEvadeTargets()
	    	 k.GetSteering().ArriveOn(MotherShip)
	    Next
  EndIf
   
    Local Dlina#=Sqr((MotherShip.GetX()-Player1.x)^2+(Mothership.GetY()-Player1.y)^2)
	
	If dlina<=250
	    ExtraTime=50
	Else 
	    ExtraTime=400
	EndIf
	
  UpdateMothership()
  Fill_OUT()
 
   
 
    
 '  	World.update(Delta.time())
    World.render()	 
    World_Update()
	
'	 For Local boom:Damage=EachIn Damage_List
'		boom.update(18)
'	 Next
		
  Flip	   ' 	 Рендер изображений
  
  delta.update()
  
  Wend
  End
 
  Function UpdateMothership()
	 
	 If MotherShipLife<= 50 Then 
	        Mult=7
		 For Local k:Sprite = EachIn EnemyLooserList
		     k.GetSteering().EvadeOff()
	     	 k.ClearEvadeTargets()
		     k.GetSteering().ArriveOn(MotherShip)
	    Next
	 EndIf
	  If MotherShipLife<=70 Then Mult=4
	  If MotherShipLife<=40 Then Mult=10
	  If MotherShipLife<=20 Then Mult=15
	  If MotherShipLife<=10 Then Mult=25
	
	Rem 
	 If (MothTime+ExtraTime)<MilliSecs()
		MothPula.create(MotherShip.GetX(),MotherShip.GetY(),MotherShip.GetSpeed(),MotherShip.GetSpeed(),Rnd(0,90))
	    MothPula.create(MotherShip.GetX(),MotherShip.GetY(),MotherShip.GetSpeed(),MotherShip.GetSpeed(),Rnd(90,180))
	    MothPula.create(MotherShip.GetX(),MotherShip.GetY(),MotherShip.GetSpeed(),MotherShip.GetSpeed(),Rnd(180,270))
	    MothPula.create(MotherShip.GetX(),MotherShip.GetY(),MotherShip.GetSpeed(),MotherShip.GetSpeed(),Rnd(270,360))
		MothTime=MilliSecs() 
	End If 
End Rem 
	 TurretGun.SetPosition(MotherShip.GetX(),MotherShip.GetY())
     TurretGun.RotateHeadingToFacePosition(Point.GetPosition())
	 If (MothTime+ExtraTime)<MilliSecs()  
	         MothPula.create(TurretGun.GetX(),TurretGun.GetY(),0,0,-TurretGun.GetHeading())
	         MothTime=MilliSecs() 
	 EndIf 
	 
  
 End Function
  
  Function Fill_OUT()
If  Relife+(100*mult)<MilliSecs()
    If Num_LooserEnemies<20
		 For Local g:Int=1 To 1
	 	  Local enemylooserg:Sprite=Sprite.CreateForSteering(EnemyLooserImage,world,MotherShip.GetPosition(),0,createvector(1,1),1,7,5,5,0.6)
		  enemylooserg.GetSteering().CohesionOn()					   ' Создание и присвоение ИИ норм поведения
		  enemylooserg.Setworldwrap(True)								   
		  enemylooserg.GetSteering().AlignmentOn()	
		  enemylooserg.GetSteering().WanderOn()
		  enemylooserg.TurnSmoothingOn()
		  enemylooserg.AddEvadeTarget(MotherShip)	
		  enemylooserg.GetSteering().SeparationOn()
		  enemylooserg.AddEvadeTarget(Point)
          enemylooserg.GetSteering().EvadeOn()
		  enemylooserg.SetCollisionRadius(6)
		  World.AddVehicle(enemylooserg)
		  Num_LooserEnemies:+1                                    ' Добавление к миру 	
		  ListAddLast (EnemyLooserList,Enemylooserg)
         Next
 EndIf
 ReLife=MilliSecs()
 EndIf 
If ReLife2+(200*Mult)<MilliSecs()
   If Num_Bombers<5 
	  For  Local q:Int=1 To 1
		   Local Enemybomberq:Sprite=Sprite.CreateForSteering(EnemyBomberImage,World,MotherShip.GetPosition(),0,createvector(1,1),1,4,4,4,0.5)
		   enemybomberq.ApplyAcceleration(1000,-enemybomberq.GetHeading())
		   enemybomberq.SetWorldWrap(True)
	       enemybomberq.GetSteering().SeparationOn()
	       Enemybomberq.SetCollisionRadius(4)
		   enemybomberq.GetSteering().ArriveOn(Point)
		   World.AddVehicle(enemybomberq)
		   num_Bombers:+1
	       ListAddLast(BombersList,Enemybomberq)
	 Next
  End If
 ReLife2=MilliSecs()
 EndIf
End Function
  Function World_Update()
	
	 For Local vzriv:Explosion=EachIn ExpList
		 vzriv.update(18)
	Next
	
	For Local Pulka:Pula=EachIn PulaList
	     Pulka.update()		
		 If ImagesCollide2(Pulka.Entity,Pulka.x,Pulka.y,0,Pulka.dir,0.1,0.1,MotherShip.GetImage(),MotherShip.GetX(),MotherShip.GetY(),0,-MotherShip.GetHeading(),MotherShip.GetScaleX(),MotherShip.GetScaleY())
			 Explosion.Create(Pulka.x,Pulka.y,ExplImage)
			' Damage.Create(Pulka.X,Pulka.y,Pulka.dir,Damage_Image,Damage_List)
			 PulaList.Remove(Pulka)
			 MotherShipLife:-1
		 End If
   Next
' Тут происходит контроль количества врагов 
	
	  For Local a:Sprite = EachIn EnemyLooserList
		    For Local b:Pula = EachIn PulaList
		           If ImagesCollide(b.entity,b.x,b.y,0,a.GetImage(),a.GetX(),a.GetY(),0)	 
			       PulaList.Remove(b)
			       EnemyLooserList.Remove(a)
			       Explosion.Create(a.GetX(),a.GetY(),ExplImage)	
				   World.RemoveVehicle(a)
				   Num_LooserEnemies:-1
			      EndIf
			 Next
	  Next
	
		
 For  Local C:Sprite=EachIn BombersList
     For Local A:Pula=EachIn PulaList
		    If ImagesCollide(A.entity,A.x,A.y,0,C.GetImage(),C.GetX(),C.GetY(),0)
			       PulaList.Remove(A)				
			       Explosion.Create(C.GetX(),C.GetY(),ExplImage)
				   BombersList.Remove(C)
			       World.RemoveVehicle(C)				
				   Num_Bombers:-1
		    EndIf
	Next
 Next
 
  If AttTime+300<MilliSecs()
  
    For Local C:Sprite=EachIn BombersList
   	   Local Lenght#=Sqr((C.GetX()-Player1.x)^2+(C.GetY()-Player1.y)^2) 
	         If Lenght<200
	             C.TurnSmoothingOn()
	             C.RotateHeadingToFacePosition(Point.GetPosition())
	             AttackBullet.create(C.GetX(),C.GetY(),0,0,-C.GetHeading())
	          EndIf
			If lenght<=100
				
			End If
   Next
   
   AttTime=MilliSecs()
   
 EndIf
 
 For Local G:AttackBullet=EachIn Attackers_List
		g.update()
		If ImagesCollide(g.entity,g.x,g.y,0,player1.entity,player1.x,player1.y,0)
			 Explosion.Create(Player1.x,Player1.y,ExplImage2)
			 attackers_List.Remove(g)		
			 If Shield_Active=0 Player1.Life:-1
		End If
   Next
   
    For Local MthPula:MothPula=EachIn MothBullet
	   
	   MthPULA.update()
	
       If ImagesCollide(MTHPULA.Entity,MTHPULA.X,MTHPULA.Y,0,Player1.Entity,Player1.x,Player1.y,0)
			MothBullet.Remove(MTHPULA)
			Explosion.Create(Point.Getx(),Point.Gety(),ExplImage2)
			If Shield_Active=0 Then Player1.Life:-1
	    End If
  Next
  	 TurretGun.Draw()
  
 End Function
  Function Create_AI()
' ----------------------Лузеры-----------------------
' 	Возня с ИИ , а вернее, его настройка	 ' Тут создается определенный тип ИИ
     For Local i:Int=1 To Num_LooserEnemies
	 	  Local enemylooseri:Sprite=Sprite.CreateForSteering(EnemyLooserImage,world,createvector(Rnd( Window_Width),Rnd(Window_Height)),0,createvector(1,1),1,7,5,5,0.6)
		  enemylooseri.GetSteering().CohesionOn()					   ' Создание и присвоение ИИ норм поведения
		  enemylooseri.Setworldwrap(True)								   
		  enemylooseri.GetSteering().AlignmentOn()	
		  enemylooseri.GetSteering().WanderOn()
		  enemylooseri.AddEvadeTarget(MotherShip)	
		  enemylooseri.GetSteering().SeparationOn()
		  enemylooseri.AddEvadeTarget(Point)
          enemylooseri.GetSteering().EvadeOn()
		  enemylooseri.SetCollisionRadius(6)
		  World.AddVehicle(enemylooseri)		' Добавление к миру 	
		  ListAddLast (EnemyLooserList,Enemylooseri)
 Next	
	   ' Тип ИИ, который будут гонять за плеером
   '-----------------------------Atackers-------------------------
   For  Local l:Int=1 To Num_Bombers
		Local Enemybomberl:Sprite=Sprite.CreateForSteering(EnemyBomberImage,World,CreateVector(Rnd(Window_Width,Window_Height)),0,createvector(1,1),1,6,4,6,0.5)
		   enemybomberl.SetWorldWrap(True)
	       enemybomberl.GetSteering().SeparationOn()
	       Enemybomberl.SetCollisionRadius(10)
		   enemybomberl.GetSteering().ArriveOn(Point)
		   World.AddVehicle(enemybomberl)
	      ListAddLast(BombersList,Enemybomberl)
   Next
End Function
But sometimes there an error : Unhandled Exception:Attempt to access field or method of Null object . In this function World.Update(Delta.time()). Who now, why, please help.
 
 
 |