Esempio n. 1
0
 void Start()
 {
     rm       = GetComponent <RoyMove>();
     anim     = GetComponent <Animator>();
     pfsg     = 0;
     pushll   = GetComponent <PushPull>();
     canInput = true;
 }
Esempio n. 2
0
        private void LoopThread()
        {
            while (true)
            {
                if (!running)
                {
                    return;
                }
                DateTime now = DateTime.Now;
                if ((now - lastLoop).Ticks >= MoveSpeed * 10000)
                {
                    if (CreateRandomDust)
                    {
                        this.DynamicDust();
                    }

                    HamsterMove hmove = HamsterMove.None;
                    if (haveHamster)
                    {
                        if (HamIsFree)
                        {
                            ham.LookAround(this.WhatHamSee());
                            hmove = ham.NextMove();
                        }
                        else
                        {
                            if (rand.Next(100) < 10)
                            {
                                this.CreateHamster();
                            }
                        }
                    }

                    roy.LookAround(this.WhatRoySee(), this.DoorsRoySee());
                    RoyMove move = roy.NextMove();

                    this.Update(move, hmove);

                    clean = 500;
                    for (int i = 0; i < dust.GetLength(0); i++)
                    {
                        for (int j = 0; j < dust.GetLength(1); j++)
                        {
                            clean -= dust[i, j];
                        }
                    }

                    if (clean <= -500)
                    {
                        running = false;
                    }

                    this.DrawAll();
                    lastLoop = now;
                }
            }
        }
Esempio n. 3
0
        private void Update(RoyMove move, HamsterMove hmove)
        {
            #region HamMove
            int hamDx = 0, hamDy = 0;
            #region switch
            switch (hmove)
            {
            case HamsterMove.Up:
                hamDy = -1;
                break;

            case HamsterMove.Down:
                hamDy = 1;
                break;

            case HamsterMove.Left:
                hamDx = -1;
                break;

            case HamsterMove.Right:
                hamDx = 1;
                break;

            case HamsterMove.UpLeft:
                hamDy = -1;
                hamDx = -1;
                break;

            case HamsterMove.UpRight:
                hamDy = -1;
                hamDx = 1;
                break;

            case HamsterMove.DownLeft:
                hamDy = 1;
                hamDx = -1;
                break;

            case HamsterMove.DownRight:
                hamDy = 1;
                hamDx = 1;
                break;

            case HamsterMove.Shit:
                hamDx = 0;
                hamDy = 0;
                dust[ham.Row, ham.Col] = 50;
                break;
            }
            #endregion

            if (ham.Row + hamDx < 0 || ham.Row + hamDx >= house.GetLength(0) || ham.Col + hamDy < 0 || ham.Col + hamDy >= house.GetLength(1) || house[ham.Row + hamDx, ham.Col + hamDy] < 0)
            {
                hamDx = 0;
                hamDy = 0;
            }
            else if (house[ham.Row + hamDx, ham.Col + hamDy] == 0)
            {
                int newdx = hamDx * 2;
                if (ham.Row + newdx < 0 || ham.Row + newdx >= house.GetLength(0) || ham.Col + hamDy < 0 || ham.Col + hamDy >= house.GetLength(1) || house[ham.Row + newdx, ham.Col + hamDy] <= 0)
                {
                    int newdy = hamDy * 2;
                    if (ham.Row + hamDx < 0 || ham.Row + hamDx >= house.GetLength(0) || ham.Col + newdy < 0 || ham.Col + newdy >= house.GetLength(1) || house[ham.Row + hamDx, ham.Col + newdy] <= 0)
                    {
                        hamDx = 0;
                        hamDy = 0;
                    }
                    else
                    {
                        hamDy = newdy;
                    }
                }
                else
                {
                    hamDx = newdx;
                }
            }

            ham.Row += hamDx;
            ham.Col += hamDy;

            #endregion

            #region RoyMove
            int dx = 0, dy = 0;
            #region switch
            switch (move)
            {
            case RoyMove.Up:
                dy = -1;
                break;

            case RoyMove.Down:
                dy = 1;
                break;

            case RoyMove.Left:
                dx = -1;
                break;

            case RoyMove.Right:
                dx = 1;
                break;

            case RoyMove.UpLeft:
                dy = -1;
                dx = -1;
                break;

            case RoyMove.UpRight:
                dy = -1;
                dx = 1;
                break;

            case RoyMove.DownLeft:
                dy = 1;
                dx = -1;
                break;

            case RoyMove.DownRight:
                dy = 1;
                dx = 1;
                break;
            }
            #endregion

            if (roy.Row + dx < 0 || roy.Row + dx >= house.GetLength(0) || roy.Col + dy < 0 || roy.Col + dy >= house.GetLength(1) || house[roy.Row + dx, roy.Col + dy] < 0)
            {
                dx = 0;
                dy = 0;
            }
            else if (house[roy.Row + dx, roy.Col + dy] == 0)
            {
                int newdx = dx * 2;
                if (roy.Row + newdx < 0 || roy.Row + newdx >= house.GetLength(0) || roy.Col + dy < 0 || roy.Col + dy >= house.GetLength(1) || house[roy.Row + newdx, roy.Col + dy] <= 0)
                {
                    int newdy = dy * 2;
                    if (roy.Row + dx < 0 || roy.Row + dx >= house.GetLength(0) || roy.Col + newdy < 0 || roy.Col + newdy >= house.GetLength(1) || house[roy.Row + dx, roy.Col + newdy] <= 0)
                    {
                        dx = 0;
                        dy = 0;
                    }
                    else
                    {
                        dy = newdy;
                    }
                }
                else
                {
                    dx = newdx;
                }
            }

            roy.Row += dx;
            roy.Col += dy;

            if (dx != 0 || dy != 0)
            {
                RoyMoveSteps++;
            }

            dust[roy.Row, roy.Col] = 0;
            if (roy.Row == ham.Row && roy.Col == ham.Col)
            {
                HamIsFree = false;
            }
            #endregion
        }