Пример #1
0
        private bool canCreateLei()
        {
            int i, length, nextpos;

            for (i = 0; i < 4; ++i)
            {
                length = dirLen(i);
                if (leiLen >= length && OurGame.map[MyHelp.Vector2ToPos(pos) + MyHelp.posLen[i] * length].mapData < 0x40)
                {
                    break;
                }
            }
            if (i >= 4 && MyHelp.Random(50) > 20)
            {
                return(false);
            }
            for (i = 0; i < 4; ++i)
            {
                nextpos = MyHelp.Vector2ToPos(pos);
                if (MyHelp.isInBound(ref nextpos, i))
                {
                    if (dirLen(i) != 0)
                    {
                        if (i == 0 || i == 1)
                        {
                            if (dirLen(nextpos, 2) != 0 || dirLen(nextpos, 3) != 0)
                            {
                                return(true);
                            }
                        }
                        else
                        {
                            if (dirLen(nextpos, 1) != 0 || dirLen(nextpos, 0) != 0)
                            {
                                return(true);
                            }
                        }
                    }
                }
            }
            for (i = 0; i < 4; ++i)
            {
                if (dirLen(i) > leiLen)
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #2
0
        static public bool createArticle(byte pos)
        {
            if (MyHelp.Random(50) > 30)
            {
                return(false);
            }
            for (int i = 0; i < MyHelp.maxActicle; ++i)
            {
                if (acticle[i].active == false)
                {
                    acticle[i].Create((byte)MyHelp.Random(7), pos);
                    return(true);
                }
            }

            return(false);
        }
Пример #3
0
        private void check()
        {
            if (MyHelp.checkHit(OurGame.Master.pos, _pos, 5))
            {
                switch (_ID)
                {
                case 0:         //增加雷数
                    OurGame.Master.maxLei = MyHelp.Min(OurGame.Master.maxLei + 1, 3);
                    break;

                case 1:         //增加长度
                    OurGame.Master.leiLen = MyHelp.Min(OurGame.Master.leiLen + 1, 3);
                    break;

                case 2:         //数度为4
                    if (OurGame.Master.speed == 2)
                    {
                        OurGame.Master.speed = 4;
                    }
                    break;

                case 3:         //加龟
                    if (OurGame.Master.speed == 2 || OurGame.Master.speed == 4)
                    {
                        if (MyHelp.Random(20) <= 10)
                        {
                            OurGame.Master.speed  = 5;
                            OurGame.Master.Active = 0x11;
                        }
                        else
                        {
                            OurGame.Master.speed  = 1;
                            OurGame.Master.Active = 0x10;
                        }
                    }
                    break;

                case 4:         //加分4
                    break;

                case 5:         //加分1
                    break;

                case 6:         //加分2
                    break;
                }
                Active = false;
                return;
            }
            for (int i = 0; i < MyHelp.maxEnemy; ++i)
            {
                if (MyHelp.checkHit(OurGame.Enemy[i].pos, _pos, 5))
                {
                    switch (_ID)
                    {
                    case 0:         //增加雷数
                        OurGame.Enemy[i].maxLei = MyHelp.Min(OurGame.Enemy[i].maxLei + 1, 3);
                        break;

                    case 1:         //增加长度
                        OurGame.Enemy[i].leiLen = MyHelp.Min(OurGame.Enemy[i].leiLen + 1, 3);
                        break;

                    case 2:         //数度为4
                        if (OurGame.Enemy[i].speed == 2)
                        {
                            OurGame.Enemy[i].speed = 4;
                        }
                        break;

                    case 3:         //加龟
                        if (OurGame.Enemy[i].speed == 2 || OurGame.Enemy[i].speed == 4)
                        {
                            if (MyHelp.Random(20) <= 10)
                            {
                                OurGame.Enemy[i].speed  = 5;
                                OurGame.Enemy[i].Active = 0x11;
                            }
                            else
                            {
                                OurGame.Enemy[i].speed  = 1;
                                OurGame.Enemy[i].Active = 0x10;
                            }
                        }
                        break;
                    }
                    Active = false;
                    return;
                }
            }
        }
Пример #4
0
        public void ChangDir()
        {
            if (Active > 1 && Active < 0x10)
            {
                return;
            }
            int k;
            int newDir;

            if (canCreateLei())
            {
                createLei();
            }
            checkSafe();
            switch (moveDir.count)
            {
            case 0:
                dir |= 0x10;
                break;

            case 1:
                for (k = 0; k < 4; ++k)
                {
                    if ((moveDir.canMove & (1 << k)) != 0)
                    {
                        dir = k;
                        break;
                    }
                }

                break;

            default:
                if (this.X > OurGame.Master.X)
                {
                    if (this.Y > OurGame.Master.Y)
                    {
                        newDir = 5;
                    }
                    else if (this.Y == OurGame.Master.Y)
                    {
                        newDir = 4;
                    }
                    else
                    {
                        newDir = 6;
                    }
                }
                else if (this.X == OurGame.Master.X)
                {
                    if (this.Y > OurGame.Master.Y)
                    {
                        newDir = 1;
                    }
                    else if (this.Y == OurGame.Master.Y)
                    {
                        newDir = 15;
                    }
                    else
                    {
                        newDir = 2;
                    }
                }
                else
                {
                    if (this.Y > OurGame.Master.Y)
                    {
                        newDir = 9;
                    }
                    else if (this.Y == OurGame.Master.Y)
                    {
                        newDir = 8;
                    }
                    else
                    {
                        newDir = 10;
                    }
                }
                if (MyHelp.Random(50) < 40 && (newDir & moveDir.canMove) != 0)
                {
                    for (k = 0; k < 4; ++k)
                    {
                        if ((newDir & moveDir.canMove & (1 << k)) != 0)
                        {
                            dir = k;
                            break;
                        }
                    }
                }
                else if (!(MyHelp.Random(50) > 10 && dir < 4 && (moveDir.canMove & (1 << dir)) != 0))
                {
                    newDir = 0;
                    int part = MyHelp.Random(moveDir.count);
                    for (k = 0; k < 4; ++k)
                    {
                        if ((moveDir.canMove & (1 << k)) != 0)
                        {
                            ++newDir;
                        }
                        if (newDir > part)
                        {
                            break;
                        }
                    }
                    dir = k;
                }
                break;
            }
        }