Пример #1
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);
    }
Пример #2
0
    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);
    }
Пример #3
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);
    }
Пример #4
0
    /// <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);
    }
Пример #5
0
    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;
    }
Пример #6
0
    /// <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);
    }
Пример #7
0
    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));





    }
Пример #8
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);
    }
Пример #9
0
    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));
    }
Пример #10
0
    /// <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);
    }
Пример #11
0
    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);
    }
Пример #12
0
    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;
    }
Пример #13
0
    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);
    }
Пример #14
0
    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);
    }
Пример #15
0
    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));

        }
    }
Пример #16
0
    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);
    }