/// <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 override void Begin() { Level.Size = Screen.Size; Level.Background.CreateStars(); Surfaces borders = Level.CreateBorders(); Camera.ZoomToLevel(); PhysicsObject pelaaja = new PhysicsObject(50, 100, Shape.Triangle); Weapon ase = new LaserGun(20, 20); ase.IsVisible = false; ase.Angle = Angle.FromDegrees(90); // Opettajalle huom: Laserin osumisen käsittely on Tämän selittäminen ajan kanssa on tärkeää. Kerro tarkasti, mitä min parametri tarkoittaa ja miksi kutsuttava aliohjelmat saa ne parametrit mitkä saavat. ase.ProjectileCollision = LaserOsui; pelaaja.Add(ase); Add(pelaaja); LisaaKivi(); LisaaKivi(); LisaaKivi(); PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); // Opettajalle huom: Näiden selittäminen ajan kanssa on tärkeää. Kerro tarkasti, mitä min parametri tarkoittaa ja miksi kutsuttava aliohjelmat saa ne parametrit mitkä saavat. Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ammu rakettia", ase); Keyboard.Listen(Key.Up, ButtonState.Down, KaytaRakettia, "Käytä rakettia", pelaaja); Keyboard.Listen(Key.Left, ButtonState.Down, Kaanny, "Käänny oikealle", pelaaja, 5.0); Keyboard.Listen(Key.Left, ButtonState.Released, Kaanny, "", pelaaja, 0.0); Keyboard.Listen(Key.Right, ButtonState.Down, Kaanny, "Käytä rakettia", pelaaja, -5.0); Keyboard.Listen(Key.Right, ButtonState.Released, Kaanny, "", pelaaja, 0.0); }
public override void Begin() { TileMap kentta = TileMap.FromLevelAsset("kentta1"); kentta.SetTileMethod('h', LuoTalo); kentta.SetTileMethod('f', LuoLattia); kentta.SetTileMethod('t', LuoPuu); PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); kentta.Execute(16, 16); kentta.Optimize('f'); pelaaja1 = new PhysicsObject(40, 40); Add(pelaaja1); Camera.Follow(pelaaja1); Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-150, 0)); Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(150, 0)); Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 150)); Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -150)); pelaajan1Ase = new AssaultRifle(30, 10); pelaajan1Ase.Ammo.Value = 1000; pelaaja1.Add(pelaajan1Ase); }
/// <summary> /// Luo pelaaja olion /// </summary> /// <param name="x">Pelaajan x-koordinaatit</param> /// <param name="y">Pelaajan y-koordinaatit</param> /// <returns></returns> PhysicsObject LuoPelaaja(double x, double y) { PhysicsObject pelaaja = new PhysicsObject(25.0, 25.0); pelaaja.Shape = Shape.Circle; pelaaja.X = x; pelaaja.Y = y; pelaaja.Restitution = 0.0; pelaaja.CanRotate = false; pelaaja.Tag = "pelaaja"; pelaaja.Image = LoadImage("survivor"); Add(pelaaja, 1); pelaaja.MirrorImage(); AddCollisionHandler <PhysicsObject, Zombi>(pelaaja, ZombiOsuuPelaajaan); pelaajanAse = new AssaultRifle(30, 10); //pelaajanAse.Ammo.Value = 100; // Ammusten määrä pelaajanAse.InfiniteAmmo = true; pelaajanAse.AttackSound = null; pelaajanAse.CanHitOwner = false; pelaajanAse.X = 5; pelaaja.Add(pelaajanAse); return(pelaaja); }
void PudotaOmenoita(int lukumaara) { for (int i = 0; i < lukumaara; i++) { PhysicsObject omena = new PhysicsObject(80, 80); omena.Shape = Shape.Circle; omena.Color = Color.Red; omena.Y = Screen.Top; omena.Restitution = 0.5; GameObject lehti = new GameObject(30, 30); lehti.Shape = Shape.Star; lehti.Color = Color.Green; lehti.Y = 40; omena.Add(lehti); Add(omena); omena.Hit(RandomGen.NextVector(50, 100)); Mouse.ListenOn(omena, MouseButton.Left, ButtonState.Pressed, OmenaaKlikattu, "omenaa klikattu", omena); } omenoitaIlmassa = lukumaara; }
/// <summary> /// Lisätään merkki laatikkoon. /// </summary> /// <param name="k">Lisättävä merkki.</param> /// <param name="laatikko">Fysiikkaobjekti, johon merkki lisätään.</param> public void MerkinLisays(char k, PhysicsObject laatikko) { Label label = new Label("" + k); Font fontti = LoadFont("TestiFontti"); label.Font = fontti; //label.Font = Font.DefaultLargeBold; laatikko.Add(label); }
public override void Begin() { Steve = new PhysicsObject(20, 20); Steve.Restitution = 1.0; pelaajanase = new AssaultRifle(0.10, 0.10); pelaajanase.Ammo.Value = 10; pelaajanase.ProjectileCollision = AmmusOsui; Steve.Add(pelaajanase); AddCollisionHandler(Steve, SteveTormaa); SmoothTextures = false; MediaPlayer.Play("Dark Music - The Sealed Kingdom"); Steve.Image = SteveKuva; Add(Steve); Camera.Follow(Steve); Camera.ZoomFactor = 10; Kentta(); //CreateMonster(); Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajanase); PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-200, 0)); Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(200, 0)); Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 200)); Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -200)); Keyboard.Listen(Key.D, ButtonState.Released, LiikutaPelaajaa, null, new Vector(0, 0)); Keyboard.Listen(Key.W, ButtonState.Released, LiikutaPelaajaa, null, new Vector(0, 0)); Keyboard.Listen(Key.S, ButtonState.Released, LiikutaPelaajaa, null, new Vector(-0, 0)); Keyboard.Listen(Key.A, ButtonState.Released, LiikutaPelaajaa, null, new Vector(-0, 0)); }
/// <summary> /// Luodaan alus, jota pelaaja ohjaa pelissä /// </summary> private PhysicsObject LuoAlus(double x, double y) { PhysicsObject alus = PhysicsObject.CreateStaticObject(320.0, 140.0); alus.X = x; alus.Y = y; alus.Image = LoadImage("alus"); alus.IgnoresExplosions = true; AddCollisionHandler(alus, AlusOsuu); Add(alus); avaruusaluksenAse = new AssaultRifle(1, 1); avaruusaluksenAse.X = -160.0; avaruusaluksenAse.Y = 0.0; avaruusaluksenAse.Image = LoadImage("tyhja");//Ammukset lähtevät suoraan aluksesta. Asetta ei ole siis "olemassa" avaruusaluksenAse.ProjectileCollision = AmmusOsuu; alus.Add(avaruusaluksenAse); return(alus); }
/// <summary> /// Luodaan keskelle kenttää pelaaja ja ase pelaajalle /// </summary> /// <param name="x">Pelaajan x-koordinaatti</param> /// <param name="y">Pelaajan y-koordinaatti</param> /// <param name="tunniste">Pelaajan eli aluksen tunniste</param> /// <returns></returns> private PhysicsObject LuoAlus(double x, double y, string tunniste) { PhysicsObject alus = new PhysicsObject(100.0, 50.0); alus.Shape = Shape.Rectangle; alus.X = x; alus.Y = y; alus.Tag = tunniste; alus.Image = aluksenKuva; AddCollisionHandler(alus, "asteroidi", PalloOsui); Add(alus); ase = new Cannon(20, 30); ase.X = x; ase.Y = 30; ase.FireRate = 3.0; ase.AmmoIgnoresExplosions = true; ase.Angle += Angle.FromDegrees(90); ase.ProjectileCollision = AmmusOsui; ase.Image = aseenKuva; alus.Add(ase); return(alus); }
public override void Begin() { MessageDisplay.Add("tervetuloa"); // TODO: Kirjoita ohjelmakoodisi tähän IsFullScreen = true; Level.Background.Image = taustaKuva; Level.Background.FitToLevel(); Pelaaja = new PhysicsObject(100.0, 100.0); Pelaaja.Shape = Shape.Circle; Pelaaja.Image = LoadImage("pelaaja"); Add(Pelaaja); Pelaaja.Mass = 80; PelaajanAse = new AssaultRifle(20, 5); PelaajanAse.Ammo.Value = 5000000; PelaajanAse.ProjectileCollision = AmmusOsui; Pelaaja.Add(PelaajanAse); PelaajaYlos(); LuoPallo(); LuoKentta(); PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); Keyboard.Listen(Key.Up, ButtonState.Down, PelaajaYlos, "PelaajaMeneeYlos"); Keyboard.Listen(Key.Down, ButtonState.Down, PelaajaAlas, "PelaajaMeneeAlas"); Keyboard.Listen(Key.Left, ButtonState.Down, PelaajaVasemmalle, "PelaajaMeneevasemmalle"); Keyboard.Listen(Key.Right, ButtonState.Down, PelaajaOikealle, "PelaajaMeneeOikealle"); Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "ammu"); Camera.ZoomToLevel(); AddCollisionHandler(Pelaaja, PelaajaTormaa); }
void uusiomena(int level) { for (int i = 0; i < level; i++) { PhysicsObject omena = new PhysicsObject(50, 50); omena.Shape = Shape.Circle; omena.Color = Color.Red; GameObject lehti = new GameObject(20, 20); omena.Y = Screen.Top; lehti.Shape = Shape.Heart; lehti.Color = Color.DarkGreen; Add(omena); lehti.Y = 30; omena.Add(lehti); Mouse.ListenOn(omena, MouseButton.Left, ButtonState.Pressed, klikattuomenaa, "Omenaa Klikattu", omena); Keyboard.Listen(Key.R, ButtonState.Pressed, Nollaa, "nollaa"); omena.Hit(RandomGen.NextVector(50, 100)); } omenoitailmassa = level; }
void CreateNewUnit(PlayerTeam team, UnitType type, Vector spawnPoint, Vector gatherPoint) { // Use tag to detect a friend from foe string teamTag = "h"; string enemyTag = "m"; if (team==PlayerTeam.Monsters) { teamTag = "m"; enemyTag = "h"; } teams[team].UnitCreationProgress[type].Value = 0; PhysicsObject unit = new PhysicsObject(30, 30, Shape.Circle); unit.Position = spawnPoint; unit.Tag = teamTag; unit.CanRotate = false; DoubleMeter hp = new DoubleMeter(100.0); ProgressBar hpbar = new ProgressBar(30, 5, hp); hp.AddTrigger(50.0, TriggerDirection.Down, () => hpbar.BarColor = Color.Yellow ); hp.AddTrigger(20.0, TriggerDirection.Down, () => hpbar.BarColor = Color.Red ); hp.MaxValue = 100.0; hp.MinValue = 0.0; hp.LowerLimit += () => OnUnitFlee(unit); hpbar.Color = Color.DarkGray; hpbar.BarColor = Color.BrightGreen; hpbar.BorderColor = Color.Black; hpbar.Y = 15; Add(unit, 1); unit.Add(hpbar); if (team==PlayerTeam.Humans) { unit.CollisionIgnoreGroup = 1; switch (type) { case UnitType.Preparer: unit.Image = hPreparer; break; case UnitType.Repeller: unit.Image = hRepeller; break; case UnitType.Gatherer: unit.Image = hGatherer; break; default: break; } } else { unit.CollisionIgnoreGroup = 2; switch (type) { case UnitType.Preparer: unit.Image = mPreparer; break; case UnitType.Repeller: unit.Image = mRepeller; break; case UnitType.Gatherer: unit.Image = mGatherer; break; default: break; } } // Start moving to deploy point and add to deploy queue. MoveToDeployQueue(team, unit, 0); AddCollisionHandler(unit, enemyTag, OnEnemiesCollide); }
void luolehma() { lehma = new PhysicsObject(40, 40); lehma.Color = Color.Transparent; GameObject lehmannahka = new GameObject(100, 100); lehmannahka.Image = lehma1; lehma.Add(lehmannahka); Add(lehma); Camera.Follow(lehma); }
void UusiOmena(int lukumaara) { for (int i = 0; i < lukumaara; i++) { omenoitaIlmassa = lukumaara; PhysicsObject omena = new PhysicsObject(50, 50); omena.Shape = Shape.Circle; omena.Color = Color.Red; omena.Y = Screen.Top; GameObject lehti = new GameObject(20, 20); lehti.Shape = Shape.Heart; lehti.Color = Color.Green; Add(omena); lehti.Y = 30; omena.Add(lehti); Mouse.ListenOn(omena, MouseButton.Left, ButtonState.Pressed, OmenaaKlikattu, "omenaa kilakttu", omena); omena.Hit(RandomGen.NextVector(60, 100)); } }
void LuoPutki(double x, double y) { double ht = Screen.Height; PhysicsObject putki = new PhysicsObject(50, ht); putki.Tag = "putki"; putki.Image = putkenkuva; PhysicsObject putkenpaaAla = new PhysicsObject(70, 30); putkenpaaAla.IgnoresCollisionResponse = true; putkenpaaAla.IgnoresGravity = true; putkenpaaAla.Image = putkenpaakuva; putkenpaaAla.Y = putki.Height / 2; putkenpaaAla.Tag = "putki"; putki.Add(putkenpaaAla); PhysicsObject putkenpaaYla = new PhysicsObject(70, 30); putkenpaaYla.IgnoresCollisionResponse = true; putkenpaaYla.IgnoresGravity = true; putkenpaaYla.Image = putkenpaakuva; putkenpaaYla.Y = -putki.Height / 2; putkenpaaYla.Tag = "putki"; putki.Add(putkenpaaYla); PhysicsObject pisteseina = new PhysicsObject(10, 200); pisteseina.IgnoresGravity = true; pisteseina.IgnoresCollisionResponse = true; pisteseina.Position = new Vector(x, y + putki.Height / 2 + pisteseina.Height / 2); pisteseina.IsVisible = false; pisteseina.CollisionIgnoreGroup = 1; Add(pisteseina); // Painovoima ei vaikuta putki.IgnoresPhysicsLogics = true; putki.CanRotate = false; // Ei törmäile maahan putki.CollisionIgnoreGroup = 1; putkenpaaAla.CollisionIgnoreGroup = 1; putkenpaaYla.CollisionIgnoreGroup = 1; putki.Position = new Vector(x, y); Add(putki); AddCollisionHandler(Lintu, pisteseina, Pelaajallepiste); // Pistä putket tulemaan lintua kohti Vector movePos = new Vector(-ht, y); putki.MoveTo(movePos, 100); Vector movePosPiste = new Vector(-ht, pisteseina.Y); pisteseina.MoveTo(movePosPiste, 100); }