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); }
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; } }
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++; } }
/// <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); }); }); }
// 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); }
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); }
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); }
/// <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); }
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); } }
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(); } }
/// <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; }
private Vector3 GetNewAngle() { double angleScale = RandomGen.NextDouble(); double rotateAngle = 360 * angleScale; return(new Vector3(0, 0, (float)rotateAngle)); }
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); }
private Color GetNewColor() { double rVal = RandomGen.NextDouble(); double gVal = RandomGen.NextDouble(); double bVal = RandomGen.NextDouble(); return(new Color((float)rVal, (float)gVal, (float)bVal)); }
public override float Random() { // ReSharper disable once CompareOfFloatsByEqualityOperator if (Radius != 0f) { return((float)(Radius * 2 * (RandomGen.NextDouble() - 0.5) + Center)); } return(Center); }
/// <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); } }
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 })); }
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)); }
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); }
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); }
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); }
//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); }
public LabyrinthWandererBrain Aivot() { LabyrinthWandererBrain lumikonAivot = new LabyrinthWandererBrain(Ruutu) { Speed = RandomGen.NextDouble(80.0, 200.0), LabyrinthWallTag = "seina", TurnWhileMoving = true }; return(lumikonAivot); }
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; }); }); }
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); }
/// <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); }
/// <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); }
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; }