Skip to content

Xirquatha

Xirquatha was my first Java project. Our company had a contest to write a Java game to help the consultants learn java. It’s a simple top scrolling shooter with the player flying a spaceship and killing alien crafts and turrets.

Simple AI for the enemy sprites:

private void AI(int ship_x,int ship_y)
    { 
        switch ( m_Type )
        {
            case 22: // Bomber
                m_Delta_Y = -3;
                
                m_Fire_Delay++;
                if ( m_Fire_Delay > 10 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                break;
                
            case 23: // Homer
                if ( m_X > ship_x )
                {
                    m_Delta_X--;
                    if ( m_Delta_X < -10 )
                        m_Delta_X = -10;
                }
                else if ( m_X < ship_x )
                {
                    m_Delta_X++;
                    if ( m_Delta_X > 10 )
                        m_Delta_X = 10;
                }
                if ( ship_y - m_Y < 500 )
                    m_Delta_Y = 0;
                m_Fire_Delay++;
                if ( m_Fire_Delay > 15 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                break;
                
            case 24: // Diver
                if ( m_X > ship_x )
                {
                    m_Delta_X--;
                    if ( m_Delta_X < -10 )
                        m_Delta_X = -10;
                }
                else if ( m_X < ship_x )
                {
                    m_Delta_X++;
                    if ( m_Delta_X > 10 )
                        m_Delta_X = 10;
                }
                    
                if ( m_Y < ship_y - 250 )
                {
                    --m_Delta_Y;
                    if ( m_Delta_Y < -10 )
                        m_Delta_Y = -10;
                }
                else if ( m_Y > ship_y - 250 )
                {
                    m_Delta_Y++;
                    if ( m_Delta_X > 10 )
                        m_Delta_X = 10;
                }
                    
                m_Fire_Delay++;
                if ( m_Fire_Delay > 10 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                break;
                
            case 25: // Strafer
                if ( m_X > ship_x )
                {
                    m_Delta_X--;
                    if ( m_Delta_X < -10 )
                        m_Delta_X = -10;
                }
                else if ( m_X < ship_x )
                {
                    m_Delta_X++;
                    if ( m_Delta_X > 10 )
                        m_Delta_X = 10;
                }

                    
                if ( m_Y > ship_y - 200 )
                    m_Delta_Y = -4;
                    
                m_Fire_Delay++;
                if ( m_Fire_Delay > 15 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                break;
                
            case 26: // gun emplacement
                m_Fire_Delay++;
                
                if ( m_Fire_Delay > 15 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                else if ( m_Fire_Delay > 10 )
                    m_Is_Invincible = false;
                else
                {
                    m_Is_Invincible = true;
                    m_Type = 27;
                }
                break;
                
            case 27: // gun emplacement #2
                m_Fire_Delay++;
                m_Is_Invincible = true;
                if ( m_Fire_Delay > 10 )
                {
                    m_Is_Invincible = false;
                    m_Type = 26;
                }
                break;
                
            case 28: // strafer/bomber
                if ( m_X > ship_x )
                {
                    m_Delta_X--;
                    if ( m_Delta_X < -4 )
                        m_Delta_X = -4;
                }
                else if ( m_X < ship_x )
                {
                    m_Delta_X++;
                    if ( m_Delta_X > 4 )
                        m_Delta_X = 4;
                }
                    
                if ( m_Y < ship_y - 150 )
                {
                    --m_Delta_Y;
                    if ( m_Delta_Y < -3 )
                        m_Delta_Y = -3;
                }
                else if ( m_Y > ship_y - 150 )
                {
                    m_Delta_Y++;
                    if ( m_Delta_X > 3 )
                        m_Delta_X = 3;
                }
                    
                m_Fire_Delay++;
                if ( m_Fire_Delay > 20 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                break; 
                
            case 33: // boss gun emplacement
                m_Fire_Delay++;
                
                if ( m_Fire_Delay > 15 )
                {
                    m_Sprites.FireBullet((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                else if ( m_Fire_Delay > 12 )
                    m_Is_Invincible = false;
                else
                {
                    m_Is_Invincible = true;
                    m_Type = 34;
                }
                break;
                
            case 34: // boss gun emplacement #2
                m_Fire_Delay++;
                m_Is_Invincible = true;
                if ( m_Fire_Delay > 12 )
                {
                    m_Is_Invincible = false;
                    m_Type = 33;
                }
                break;
            
            case 35: // boss gunner
                m_Fire_Delay++;
                
                if ( m_Fire_Delay > 10 )
                {
                    m_Sprites.FireSpread((int)m_X,(int)m_Y);
                    m_Fire_Delay = m_Applet.GetRandom(3);
                }
                break;
        }
    }