* : virtual function
** : pure virtual function

SCObject
|  GetX, GetY, GetID, GetPrev, GetNext,
|  SetX, SetY, SetID, SetPrev, SetNext,
|  *Draw, *DrawShadow, *InterAct, *Update,
|
SCBitmap
|  GetSurface, GetScreen, GetBack, GetWidth, GetHeight,
|  SetSurface,
|  CheckHit, *Draw
|
+----------------------------------------+
|                                        |
SCSprite                                 SCScroll
|  GetVelX, GetVelY, GetShadowSurface,      SetSpeed,
|  SetVelX, SetVelY, SetShadowSurface,      Draw, Update
|  *CheckBound, DrawShadow, *Move
|
+-+----------------------+-------------------------------+
| |                      |                               |
| SCBomb                 SCItem                          SCCoin
|    GetExplodeSurface,     CheckBound, InterAct, Update    CheckBound, InterAct, Update
|    Bomb, Draw, Update
|
+----------------+
|                |
SCPlane ~~ (1)   SCBullet ~~ (2)


(1)
 ~
 ~
SCPlane
|  GetExplodeSurface, GetState,
|  SetExplodeSurface,
|  **Shoot
|
+-----------------------------------------------+
|                                               |
SCOurPlane                                      SCEnemyPlane
   GetBomb,                                     |  CheckBound, Damage,
   GetNormalBulletLevel, GetGuidedBulletLevel,  |  Draw, DrawShadow
   GetCurrentBullet                             |  InterAct
   SetbDropBomb, SetbShoot, SetFrame, AddScore, |  Shoot, Shoot, Update
   SetCurrentBullet                             |
   CheckBound, Damage                           |
   Draw, DrawShadow, DrawStatus,                |
   GainCoin, GainItem,                          |
   InterAct, Move, Shoot, Update                |
                                                |
+----------------------+------------------------+
|                      |                        |
SCEnemyPlaneMoveType1  SCEnemyPlaneMoveType2    SCEnemyPlaneMoveType3
                          Move, Update             Move


(2)
 ~
 ~
SCBullet
|  CheckBound, GetDamage, Update
|
+---------------------------------------------------+
|                                                   |
SCOurBullet                                         SCEnemyBullet
|  GetOwner                                         |
|                                                   +-SCEnemyNormalBullet
+-----------------+-----------------+               |
|                 |                 |               +-SCEnemyAimedBullet
SCOurNormalBullet SCOurGuidedBullet SCOurSideBullet 
                     GetTarget         Draw         
                     SetTarget
                     Move

SCList
   GetLink, GetFirst, GetCount
   Add, Delete, DeleteAll,
   Draw, DrawShadow, InterAct, Update

SCGame
   Screen, Input
   GetStage,
   GetPlayer,
   GetOurBulletList, GetEnemyList, ... GetScrollList,
   GetSFPlayer, GetSFPlayerExplode, ... GetSFStatus,
   SoundBuffer, OurNormalShootBuffer, ... OurHitBuffer,
   GetPlayerCount, GetState,
   SetPlayerCount, SetState,
   CreateStage, CreateMenu,
   Restore, Suspend, Update

SCStage
   Screen, Input
   GetPlayer,
   Restore, Suspend, UpdateFrame

SCMenu
   Screen, Input
   Restore, Suspend, Update

SCScriptCompiler
   Compile