Ejemplo n.º 1
0
        public void Palleroi(Morte peli)
        {
            for (int i = 0; i < Palloja; i++)
            {
                double scale    = RandomGen.NextDouble(0.5, 1.5);
                double dir      = RandomGen.NextDouble(-10, 10);
                double velocity = VOIMA;
                double hue      = (dir + 10) / 20 * 240;

                var p = new FysiikkaObjekti(Koko * scale, Koko * scale);
                p.Color        = ColorUtils.HsvToRgb(hue, 1, 0.9);
                p.Shape        = Shape.Circle;
                p.LifetimeLeft = TimeSpan.FromSeconds(2);

                p.Position = peli.Pelaaja.AbsolutePosition + peli.Pelaaja.Sijainti_Suu;

                var mouse = peli.Mouse.PositionOnWorld;
                var rad   = Math.Atan2(mouse.Y - p.Position.Y, mouse.X - p.Position.X);

                p.Hit(Vector.FromLengthAndAngle(velocity, Angle.FromRadians(rad) + Angle.FromDegrees(dir)));

                p.AddCollisionIgnoreGroup(Sankari.IGNORE_ID);
                peli.AddCollisionHandlerByTag <FysiikkaObjekti, Vihulainen>(p, "vihu", OsuVihuun);

                peli.Add(p, Morte.TASO_OLETUS);
            }
            Toistin.Interval += 0.002;

            peli.Pelaaja.Vahingoita(2);
        }
Ejemplo n.º 2
0
    PhysicsObject LuoLaskuvarjo(double x, double y)
    {
        PhysicsObject tyyppi = new PhysicsObject(50, 80);

        tyyppi.Mass                     = RandomGen.NextDouble(5, 15);
        tyyppi.X                        = x;
        tyyppi.Y                        = y;
        tyyppi.LinearDamping            = RandomGen.NextDouble(0.6, 0.9);
        tyyppi.CanRotate                = false;
        tyyppi.IgnoresCollisionResponse = true;
        tyyppi.Tag                      = "tyyppi";
        AddCollisionHandler(tyyppi, laskuvarjonTormays);

        if (RandomGen.NextBool())
        {
            tyyppi.Animation     = new Animation(laskuvarjoKuvat);
            tyyppi.Animation.FPS = RandomGen.NextDouble(3, 6);
        }
        else
        {
            tyyppi.Animation     = new Animation(laskuvarjo2Kuvat);
            tyyppi.Animation.FPS = RandomGen.NextDouble(3, 6);
        }

        tyyppi.Animation.Start();
        Add(tyyppi);
        return(tyyppi);
    }
    /// <summary>
    /// Luodaan asteroidioliot
    /// </summary>
    /// <param name="maara">Kuinka monta luodaan</param>
    private void LuoAsteroidit(int maara)
    {
        double koko = 550;

        for (int i = 0; i < maara; i++)
        {
            /*
             * Vector p1paikka = pelaaja1.Alus.Position;
             * Vector p2paikka = pelaaja2.Alus.Position;
             *
             * bool nok = true;
             * Vector paikka = uusiPaikka(koko);
             * double px1 = paikka.X - koko;
             * double px2 = paikka.X + koko;
             * double py1 = paikka.Y - koko;
             * double py2 = paikka.Y + koko;
             *
             * while (nok)
             * {
             *  if (px1 <= p1paikka.X && p1paikka.X <= px2) { paikka = uusiPaikka(koko); continue; }
             *  if (py1 <= p1paikka.Y && p1paikka.Y <= py2) { paikka = uusiPaikka(koko); continue; }
             *  if (px1 <= p2paikka.X && p1paikka.X <= px2) { paikka = uusiPaikka(koko); continue; }
             *  if (py1 <= p2paikka.Y && p1paikka.Y <= py2) { paikka = uusiPaikka(koko); continue; }
             *  nok = false;
             * }
             */
            Vector paikka    = uusiPaikka(koko);
            var    asteroidi = new Asteroidi(this, paikka, RandomGen.NextDouble(80, koko), Color.Gray, "Asteroidi");
            asteroidi.Image   = LoadImage("Asteroidi4");
            this.asteroideja += 1;
        }
    }
Ejemplo n.º 4
0
    public void LisaaSeinat()
    {
        double valinKorkeus    = 100;
        double alaSeinaKorkeus = RandomGen.NextDouble(0, Level.Height - valinKorkeus);
        double ylaSeinaKorkeus = Level.Height - alaSeinaKorkeus - valinKorkeus;

        PhysicsObject alaSeina = PhysicsObject.CreateStaticObject(20, alaSeinaKorkeus);

        alaSeina.X     = Level.Right;
        alaSeina.Y     = Level.Bottom + alaSeinaKorkeus / 2;
        alaSeina.Color = Color.Black;
        alaSeina.Tag   = "alapalkki";
        Add(alaSeina);

        PhysicsObject ylaSeina = PhysicsObject.CreateStaticObject(20, ylaSeinaKorkeus);

        ylaSeina.X     = Level.Right;
        ylaSeina.Y     = Level.Bottom + alaSeinaKorkeus + valinKorkeus + ylaSeinaKorkeus / 2;
        alaSeina.Color = Color.Black;
        ylaSeina.Tag   = "ylapalkki";
        Add(ylaSeina);

        alaSeina.Velocity = new Vector(-100, 0);
        ylaSeina.Velocity = new Vector(-100, 0);
    }
    /// <summary>
    /// Luodaan aliohjelma KaikkiKeratty, joka luo kultahippusateen laskurin saavuttaessa maksimiarvonsa.
    /// </summary>
    private void KaikkiKeratty()
    {
        ClearAll();

        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");

        Level.Background.CreateGradient(Color.White, Color.Gold);

        MessageDisplay.Add("Onnistuit keräämään kaikki lantit jäämättä kiinni verokarhulle! Paina Esc poistuaksesi.");

        Gravity = new Vector(0, -500);
        int i     = 0;
        int maara = 2000;

        while (i < maara)
        {
            int           sade  = RandomGen.NextInt(20, 20);
            double        x     = RandomGen.NextDouble(Level.Left + sade, Level.Right - sade);
            double        y     = RandomGen.NextDouble(Level.Bottom + sade, Level.Top - sade);
            Color         vari  = Color.Gold;
            PhysicsObject hippu = LuoHippu(x, y, vari, sade);
            Add(hippu, 1);
            i++;
        }
    }
Ejemplo n.º 6
0
        /// <summary>
        /// Metodi, jota peliajastin kutsuu säännöllisin väliajoin. Useista anonyymeista metodeista koostuva
        /// sekvenssi, jolla vihollinen nousee piilosta, ampuu pelaajaa kohti ja piiloutuu uudelleen.
        /// </summary>
        public void Hyokkaa()
        {
            Console.WriteLine(this.Id + " hyokkää");

            //Varmistetaan, että pelin metodilla ArvoSeuraavaAmpuja() ei voida valita samaa vihollista uudelleen ennen hyökkäyksen loppumista
            OnkoPiilossa = false;

            Image = vihuKuvat[1];
            double matka  = Height / 2;
            double nopeus = Height * 1.5;

            //Vihollinen nopeutuu tasojen vaikeutuessa
            nopeus *= peli.TasoKerroin;

            //Liikutaan pois esteen takaa, tähdätään kun perillä
            MoveTo(new Vector(X, Y + matka), nopeus, delegate
            {
                Console.WriteLine(this.Id + " tähtää");
                Image = vihuKuvat[2];


                //Odotetaan satunnainen aika, jonka jälkeen yritetään ampua.
                double tahtysAika = RandomGen.NextDouble(1.5, 3.0);
                //Aika lyhenee tasojen vaikeutuessa.
                Timer.SingleShot(tahtysAika / (peli.TasoKerroin * peli.TasoKerroin), delegate
                {
                    Ammu(tahtysAika);
                });
            });
        }
Ejemplo n.º 7
0
    // Init with every property at 50 with in built randomness (uniform)
    public Area(double randomnessRange)
    {
        /* TODO: Using reflection to set properties with PropertyInfo.SetValue does not work in constructor?
         * // Lazy init with reflection
         * foreach (PropertyInfo propertyInfo in typeof(Area).GetProperties())
         * {
         *  double value = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
         *  propertyInfo.SetValue(this, (object)value, null);
         * }*/

        // IDIOTIC WAY OF SETTING THESE WITH CUT/COPY/PASTE
        Wealth         = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Police         = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Heterogenity   = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Pollution      = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Corruption     = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Infrastructure = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        HealthServices = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Crime          = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Religion       = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Food           = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Cleanness      = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Employment     = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Information    = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Nourishment    = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Health         = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Shelter        = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Trust          = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
        Safety         = 50.0 + RandomGen.NextDouble(-randomnessRange / 2, randomnessRange / 2);
    }
Ejemplo n.º 8
0
    void LuoKopteri(bool kumpi)
    {
        PhysicsObject kopteri = new PhysicsObject(200, 60);

        kopteri.Mass = 300;

        kopteri.Y   = RandomGen.NextDouble(Level.Top - 600, Level.Top - 50);
        kopteri.Tag = "kopteri";
        kopteri.IgnoresCollisionResponse = true;
        kopteri.IgnoresGravity           = true;
        kopteri.Animation = new Animation(kopterinKuvat);
        kopteri.Animation.Start();

        if (kumpi)
        {
            kopteri.X        = Level.Left - 80;
            kopteri.Velocity = new Vector(RandomGen.NextDouble(100, 300), 0);
        }
        else
        {
            kopteri.X        = Level.Right + 80;
            kopteri.Velocity = new Vector(RandomGen.NextDouble(-300, -100), 0);
            kopteri.MirrorImage();
        }

        AddCollisionHandler(kopteri, kopterinTormays);
        kopteriLista.Add(kopteri);
        Add(kopteri);
    }
Ejemplo n.º 9
0
    public void LuoKotka()
    {
        double rndY = RandomGen.NextDouble(Screen.Top - 180, Screen.Top - 100);

        Kotka(Image.Mirror(kotkaKuvat), -450, rndY, 50, 70, new Vector(50, 0));
        AddCollisionHandler(kotka, ObjektiOsuuSeinaan);
    }
Ejemplo n.º 10
0
    /// <summary>
    /// Alienin luonnin aliohjelma
    /// </summary>
    private PhysicsObject LuoVihu()
    {
        vihuKoko = RandomGen.NextDouble(130, 300);
        PhysicsObject vihu = new PhysicsObject(vihuKoko, vihuKoko);

        vihuPaikka             = RandomGen.NextDouble(Level.Bottom, Level.Top);
        vihu.Image             = LoadImage("jees");
        vihu.X                 = Level.Right;
        vihu.Y                 = vihuPaikka;
        vihu.IgnoresExplosions = true;
        vihu.IgnoresCollisionWith(vihu);
        vihu.IgnoresGravity       = true;
        vihu.CanRotate            = false;
        vihu.CollisionIgnoreGroup = 1;
        vihu.Velocity             = new Vector(-100, 0);

        laserVihu        = new LaserGun(80, 30);
        laserVihu.Angle += Angle.FromDegrees(180);
        laserVihu.ProjectileCollision = LaserOsuu;

        Timer ajastin = new Timer();

        ajastin.Interval = 1.5;
        ajastin.Timeout += delegate { AmmuVihu(laserVihu); }; // Aliohjelma, jota kutsutaan 1.5 sekunnin välein
        ajastin.Start();
        vihu.Add(laserVihu);

        if (vihu.IsDestroyed == true)
        {
            laserVihu.Destroy();
        }

        Add(vihu);
        return(vihu);
    }
Ejemplo n.º 11
0
        public static void RequestRandomPart(bool hat)
        {
            List <CASParts.Wrapper> fullList = GetVisibleCASParts(CASLogic.GetSingleton(), BodyTypes.Hair);

            List <CASParts.Wrapper> list = new List <CASParts.Wrapper>();

            foreach (CASParts.Wrapper part in fullList)
            {
                if (hat != CASHair.PartIsHat(part.mPart))
                {
                    continue;
                }

                list.Add(part);
            }

            int count = list.Count;

            if (count > 0)
            {
                CASParts.Wrapper part = list[(int)(count * RandomGen.NextDouble())];

                Sims3.UI.Responder.Instance.CASModel.RequestAddCASPart(part.mPart, false);
            }
        }
Ejemplo n.º 12
0
        public override void Update(Time time)
        {
            base.Update(time);

            if (Kuollut)
            {
                return;
            }

            if (Y < Game.Level.Bottom + Lentokorkeus)
            {
                var impulssi = LiikeVektori;

                if (Pelaaja.X > this.X)
                {
                    Suunta     = Morte.OIKEA;
                    impulssi.X = Math.Min(impulssi.X, impulssi.X - Velocity.X);
                }
                else
                {
                    Suunta     = Morte.VASEN;
                    impulssi.X = Math.Max(impulssi.X, Velocity.X - impulssi.X);
                }

                impulssi.X = Suunta * impulssi.X * RandomGen.NextDouble(0.8, 1.0);
                impulssi.Y = impulssi.Y * RandomGen.NextDouble(0.8, 1.0);

                this.Hit(impulssi);
                Animation.Start();
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Arvotaan joukko 2D-pisteitä halutulle alueelle
        /// </summary>
        /// <param name="n">montako pistettä arvotaan</param>
        /// <param name="x1">alueen vasemman alakulman x</param>
        /// <param name="y1">alueen vasemman alakulman y</param>
        /// <param name="x2">alueen oikean yläkulman x</param>
        /// <param name="y2">alueen oikean yläkulman y</param>
        /// <returns></returns>
        public static Vector[] ArvoPisteet(int n, double x1, double y1, double x2, double y2)
        {
            Vector[] pisteet = new Vector[n];

            for (int i = 0; i < pisteet.Length; i++)
            {
                pisteet[i] = new Vector(RandomGen.NextDouble(0, 10), RandomGen.NextDouble(0, 10));
            }
            return(pisteet);


            // Tee n-kokoinen taulukko Vector-olioista.
            // Arvo kullekin alkiolle sattunnainen x ja y koordinaatti
            // parametrina tuleviin rajoihin käyttäen RandomGen-luokkaa
            // Poista alla oleva koodi joka tekee aina 4 samaa pistettä
            // TODO: Tehtävä 2
            //Vector[] pisteet = new Vector[4];
            //double x = RandomGen.NextDouble(0, 10);
            //double y = RandomGen.NextDouble(0, 10);
            //pisteet[0] = new Vector(x, y);
            //pisteet[1] = new Vector(9, 2);
            //pisteet[2] = new Vector(2, 9);
            //pisteet[3] = new Vector(12, 5);
            //return pisteet;
        }
Ejemplo n.º 14
0
        private Vector3 GetNewAngle()
        {
            double angleScale  = RandomGen.NextDouble();
            double rotateAngle = 360 * angleScale;

            return(new Vector3(0, 0, (float)rotateAngle));
        }
Ejemplo n.º 15
0
        public override void KuolinAnimaatio()
        {
            var _Y = Game.Screen.Top + Height;
            var _X = X + RandomGen.NextDouble(-40, 40);

            Tweetteri.Tween(this, new { Y = Game.Level.Bottom - Height / 2, Vaaleus = 1.0 }, KuolemanKesto)
            .Ease(Ease.QuadIn).OnComplete(ReallyKuole);
        }
Ejemplo n.º 16
0
        private Color GetNewColor()
        {
            double rVal = RandomGen.NextDouble();
            double gVal = RandomGen.NextDouble();
            double bVal = RandomGen.NextDouble();

            return(new Color((float)rVal, (float)gVal, (float)bVal));
        }
Ejemplo n.º 17
0
 public override float Random()
 {
     // ReSharper disable once CompareOfFloatsByEqualityOperator
     if (Radius != 0f)
     {
         return((float)(Radius * 2 * (RandomGen.NextDouble() - 0.5) + Center));
     }
     return(Center);
 }
Ejemplo n.º 18
0
 /// <summary>
 /// Tehdään taulukko erilaisille karkeille ja luodaan karkit karkkitaulukosta
 /// </summary>
 private void LuoKarkki()
 {
     string[] karkkitaulukko = { "karkki", "kuva2", "karkki3" };
     for (int i = 0; i < KARKKIENMAARA; i++)
     {
         PhysicsObject karkki = Olio(this, KARKKIPAIKKA, KARKKIPAIKKA, RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top), "karkki", false, false, true, 10, RandomGen.SelectOne(karkkitaulukko), RandomGen.NextColor(), Shape.Circle, true);
         Add(karkki);
     }
 }
Ejemplo n.º 19
0
        public async Task <ActionResult> ProcessCard([FromBody] string card)
        {
            var randomValue = RandomGen.NextDouble();
            var approved    = randomValue > 0.1;
            await Task.Delay(0);

            Console.WriteLine($"Card {card} processed");
            return(Ok(new { Card = card, Approved = approved }));
        }
Ejemplo n.º 20
0
        private Vector3 GetNewLocation()
        {
            double xScale = RandomGen.NextDouble();
            double yScale = RandomGen.NextDouble();
            double xCoord = xScale * XDim;
            double yCoord = yScale * YDim;

            return(new Vector3((float)xCoord, (float)yCoord));
        }
Ejemplo n.º 21
0
        public Lootboxi(Image sprite) : base(sprite)
        {
            Y    = Game.Level.Top;
            X    = RandomGen.NextDouble(Game.Level.Left, Game.Level.Right);
            Mass = 2.5;

            Tag = "lootbox";

            //Shape = Shape.CreateRegularPolygon(5);
        }
Ejemplo n.º 22
0
        protected void TipsFedora()
        {
            if (Parent == null) return;

            var impulssi = new Vector(RandomGen.NextDouble(40, 100) * Poimija.Suunta, RandomGen.NextDouble(40, 100));
            this.Hit(impulssi);
            Mass = double.PositiveInfinity;
            Game.LoadSoundEffect(AssetsPath + "sound").Play();
            Timer.SingleShot(2, Destroy);
        }
Ejemplo n.º 23
0
    public void LuoPyorailijat()
    {
        int    rndPyorat1 = RandomGen.NextInt(0, 15);
        int    rndPyorat2 = RandomGen.NextInt(0, 15);
        double rndY1      = RandomGen.NextDouble(-160, -190);
        double rndY2      = RandomGen.NextDouble(-200, -250);

        Pyorailija(pyorailijatKuva[rndPyorat1], -450, rndY1, 40, 20, new Vector(70, 0));
        Pyorailija(Image.Mirror(pyorailijatKuva[rndPyorat2]), 450, rndY2, 40, 20, new Vector(-50, 0));
        AddCollisionHandler(pyorailija, ObjektiOsuuSeinaan);
    }
Ejemplo n.º 24
0
 //Ajastin2 kutsuu tätä aliohjelmaa tietyin väliajoin ja tiputtaa meteorin
 void TiputaMeteori2()
 {
     meteori2                          = new PhysicsObject(45, 45, Shape.Circle);
     meteori2.Color                    = Color.Black;
     meteori2.X                        = RandomGen.NextDouble(Level.Left, Level.Right);
     meteori2.Y                        = Level.Top;
     meteori2.Tag                      = "meteori2";
     meteori2.IgnoresExplosions        = true;
     meteori2.IgnoresCollisionResponse = true;
     Add(meteori2);
 }
Ejemplo n.º 25
0
    public LabyrinthWandererBrain Aivot()
    {
        LabyrinthWandererBrain lumikonAivot = new LabyrinthWandererBrain(Ruutu)
        {
            Speed            = RandomGen.NextDouble(80.0, 200.0),
            LabyrinthWallTag = "seina",
            TurnWhileMoving  = true
        };

        return(lumikonAivot);
    }
Ejemplo n.º 26
0
        protected void Juo()
        {
            if (Käytetty || Parent == null)
            {
                return;
            }
            Käytetty = true;

            var impulssi = new Vector(RandomGen.NextDouble(20, 50) * Poimija.Suunta, RandomGen.NextDouble(20, 50));

            Tweetteri.Tween(this, new {
                X = SUU_X * Poimija.Suunta,
                Y = SUU_Y
            },
                            0.4f).OnComplete(delegate() {
                // Anglea ei voi tweenata
                Angle = Angle.FromDegrees(127 * Poimija.Suunta);
                Game.LoadSoundEffect(AssetsPath + "sound").Play();
            });


            // Heitä pullo veks.
            Timer.SingleShot(1.4, () => {
                Mass = 0.2;
                this.Hit(impulssi);
                AngularVelocity = 1 * Poimija.Suunta;
            });

            // Hahmo "kuolee"
            Timer.SingleShot(2, () =>
            {
                Poimija.AngularVelocity      = RandomGen.NextDouble(-0.7, 0.7);
                Poimija.IgnoresPhysicsLogics = true;
                //Poimija.IgnoresCollisionResponse = true;

                Morte.Instance.Kamera.Kohdista(new Vector(Poimija.X, Morte.Instance.Level.Bottom), RESPAWN_KESTO / 1.2f);

                var hautakivi = new Hautakivi();
                hautakivi.X   = Poimija.AbsolutePosition.X;
                Game.Add(hautakivi, Morte.TASO_PAPPI);

                hautakivi.Nouse();

                Tweetteri.Tween(Poimija, new { Y = Game.Level.Bottom - Poimija.Height / 2, X = Poimija.X }, RESPAWN_KESTO).Ease(Ease.QuadIn).OnComplete(delegate() {
                    Poimija.X = RandomGen.NextDouble(Game.Level.Left - Poimija.Left, Game.Level.Right - Poimija.Right);
                    Debug.WriteLine("Pappi sijainnissa " + Poimija.X);
                    Morte.Instance.ResetoiPelaaja();
                    Morte.Instance.Kamera.Palauta();

                    Poimija.Shape = Shape.Circle;
                });
            });
        }
Ejemplo n.º 27
0
 public Asteroidi(PhysicsGame peli, Vector p, double r, Color vari, String tunniste) : base(r, r)
 {
     this.Shape       = Shape.Circle;
     this.Position    = p;
     this.Color       = vari;
     this.Mass        = 10 * r;
     this.Angle       = Angle.FromDegrees(RandomGen.NextDouble(0, 360));
     this.Tag         = tunniste;
     this.Restitution = 0.1;
     this.CanRotate   = false;
     peli.Add(this);
 }
Ejemplo n.º 28
0
        /// <summary>
        /// Alustaa yhden partikkelin
        /// </summary>
        /// <param name="p">Partikkeli joka alustetaan</param>
        /// <param name="position">Sijainti johon alustetaan</param>
        /// <param name="angle">Partikkelin alkukulma</param>
        protected virtual void InitializeParticle(Particle p, Vector position, Angle angle)
        {
            Vector direction = GiveRandomDirection();

            double rotation      = angle.Degrees;
            double scale         = RandomGen.NextDouble(MinScale, MaxScale);
            double velocity      = RandomGen.NextDouble(MinVelocity, MaxVelocity);
            double lifetime      = RandomGen.NextDouble(MinLifetime, MaxLifetime);
            double acceleration  = RandomGen.NextDouble(MinAcceleration, MaxAcceleration);
            double rotationSpeed = RandomGen.NextDouble(MinRotationSpeed, MaxRotationSpeed);

            p.Initialize(position, scale, rotation, rotationSpeed, velocity * direction, acceleration * direction, lifetime);
        }
Ejemplo n.º 29
0
    /// <summary>
    /// Luodaan lumihiutale kentän ylälaitaan, valitaan kuva satunnaisesti taulukosta.
    /// </summary>
    private void LuoLumihiutale()
    {
        PhysicsObject hiutale = new PhysicsObject(2 * 10.0, 2 * 10.0, Shape.Circle);

        hiutale.Image     = hiutaleet[RandomGen.NextInt(0, hiutaleet.Length - 1)];
        hiutale.Y         = Level.Top - hiutale.Height / 2;
        hiutale.X         = RandomGen.NextDouble(Level.Left + hiutale.Width / 2, Level.Right - hiutale.Width / 2);
        hiutale.CanRotate = false;
        hiutale.Tag       = "hiutale";
        AddCollisionHandler(hiutale, alareuna, HiutalePutosiMaahan);
        AddCollisionHandler(hiutale, "vihollinen", HiutalePutosiMaahan);
        Add(hiutale);
    }
Ejemplo n.º 30
0
        public void Tumppaa()
        {
            if (Käytetty || Parent == null)
            {
                return;
            }
            Käytetty = true;

            var impulssi = new Vector(RandomGen.NextDouble(20, 50) * Poimija.Suunta, RandomGen.NextDouble(20, 50));

            this.Hit(impulssi);
            AngularVelocity = 1 * Poimija.Suunta;
        }