Ignore:
Timestamp:
2014-07-24 11:21:34 (6 years ago)
Author:
athebla
Message:

Peli päivitetty + Boss ja sen musiikki

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2014/30/AtteB/Peli/Peli/Peli/Peli.cs

    r5599 r5623  
    77using Jypeli.Widgets; 
    88 
     9// TODO Lisää kenttiä (!!!) 
     10// TODO Tähtääminen hiirellä 
     11// TODO Lisää vihollisia 
     12// TODO Healthbar pelaajan ja bossin päälle 
     13 
    914class Vihollinen : PlatformCharacter 
    1015{ 
     
    2025} 
    2126 
     27class Boss : PhysicsObject 
     28{ 
     29    private IntMeter elamaLaskuri; 
     30    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
     31 
     32    public Boss(double leveys, double korkeus, int elama) 
     33        : base(leveys, korkeus) 
     34    { 
     35        elamaLaskuri = new IntMeter(elama, 0, elama); 
     36        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     37    } 
     38} 
     39 
    2240class Inventory : Widget 
    2341{ 
     
    6078 
    6179    PlatformCharacter pelaaja1; 
    62     PhysicsObject Vihollinen; 
    63     Vihollinen Slime; 
     80    Vector BossSijainti; 
    6481 
    6582    Image tahtiKuva = LoadImage("tahti"); 
     
    7895    Image Heart1 = LoadImage("heart"); 
    7996    Image SlimeBall = LoadImage("SlimeBall"); 
     97    Image Gate = LoadImage("Gate"); 
    8098 
    8199    SoundEffect maaliAani = LoadSoundEffect("maali"); 
    82100    SoundEffect HowItBegins = LoadSoundEffect("HowItBegins"); 
    83101    SoundEffect PlayerShoot1 = LoadSoundEffect("PlayerShoot"); 
     102    SoundEffect Hitman = LoadSoundEffect("Hitman"); 
    84103 
    85104    public override void Begin() 
     
    119138        kentta.SetTileMethod('S', LuoSlime); 
    120139        kentta.SetTileMethod('H', LisaaHeart); 
     140        kentta.SetTileMethod('O', LisaaOvi); 
     141        kentta.SetTileMethod('-', LisaaOvenSulkija); 
     142        kentta.SetTileMethod('§', LisaaOvi2); 
     143        kentta.SetTileMethod('B', delegate(Vector paikka, double l, double k) { BossSijainti = paikka; }); 
    121144        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    122145        Level.CreateBorders(); 
     
    130153        taso.Position = paikka; 
    131154        taso.Image = StoneTaso; 
     155        taso.Tag = "seinä"; 
    132156        Add(taso); 
    133157    } 
     
    139163        Stone.Position = paikka; 
    140164        Stone.Image = StoneKuva; 
     165        Stone.Tag = "seinä"; 
    141166        Add(Stone); 
    142167         
     
    149174        stoneBrick.Position = paikka; 
    150175        stoneBrick.Image = StoneBrickTaso; 
     176        stoneBrick.Tag = "seinä"; 
    151177        Add(stoneBrick); 
    152178 
     
    159185        Stone.Position = paikka; 
    160186        Stone.Image = StoneKuva_katto; 
     187        Stone.Tag = "seinä"; 
    161188        Add(Stone); 
    162189 
     
    182209        AddCollisionHandler(pelaaja1, "vihollinen", PelaajaOsuuViholliseen); 
    183210        AddCollisionHandler(pelaaja1, "health", PelaajaOsuuHeart); 
     211        AddCollisionHandler(pelaaja1, "ovensulkija", OvetSulkeutuu); 
    184212        Add(pelaaja1); 
    185213 
     
    216244 
    217245        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     246 
     247        Mouse.ListenMovement(0.1, Tähtää, "Tähtää aseella"); 
    218248    } 
    219249 
     
    291321        ajastin.Timeout += delegate 
    292322        { 
    293             PhysicsObject ammus = Slime.Weapon.Shoot(); 
     323            if (!Slime.IsDestroyed && Slime.SeesObject(pelaaja1, "seinä")) 
     324            { 
     325 
     326                PhysicsObject ammus = Slime.Weapon.Shoot(); 
     327                if (ammus != null) 
     328                { 
     329                    ammus.Image = SlimeBall; 
     330                    ammus.Size = new Vector(20, 20); 
     331                    ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0); 
     332                    ammus.Tag = "ammus"; 
     333 
     334                } 
     335            } 
     336        }; 
     337        ajastin.Start(); 
     338 
     339        Timer ajastin2 = new Timer(); 
     340        ajastin2.Interval = 0.01; 
     341        ajastin2.Timeout += delegate 
     342        { 
     343 
     344            Vector suunta = (pelaaja1.Position - Slime.Position).Normalize(); 
     345            Slime.Weapon.Angle = suunta.Angle; 
     346 
     347        }; 
     348        ajastin2.Start(); 
     349    } 
     350 
     351    void LuoBoss1(Vector paikka, double leveys, double korkeus) 
     352    { 
     353        Boss Boss1 = new Boss(leveys, korkeus * 0.5, 20); 
     354        Boss1.CanRotate = false; 
     355        Boss1.Position = paikka; 
     356        Boss1.Tag = "boss"; 
     357        Boss1.Image = Slime1; 
     358        Boss1.IgnoresGravity = true; 
     359        Add(Boss1); 
     360 
     361 
     362        PathFollowerBrain tasoAivot = new PathFollowerBrain(100, paikka + new Vector(-200, 0), paikka + new Vector(200, 0), paikka + new Vector(200, -100), paikka + new Vector(-200, -100)); 
     363        tasoAivot.Loop = true; 
     364        Boss1.Brain = tasoAivot; 
     365 
     366        AssaultRifle weapon = new AssaultRifle(30, 10); 
     367        weapon.ProjectileCollision = AmmusOsuiPelaajaan; 
     368        weapon.IsVisible = false; 
     369        weapon.AttackSound = null; 
     370        weapon.Power.MaxValue = 10; 
     371        Boss1.Add(weapon); 
     372 
     373        Timer ajastin = new Timer(); 
     374        ajastin.Interval = 0.8; 
     375        ajastin.Timeout += delegate 
     376        { 
     377            Vector suunta = (pelaaja1.Position - Boss1.Position).Normalize(); 
     378            weapon.Angle = suunta.Angle; 
     379 
     380            PhysicsObject ammus = weapon.Shoot(); 
    294381            if (ammus != null) 
    295382            { 
    296383                ammus.Image = SlimeBall; 
    297384                ammus.Size = new Vector(20, 20); 
    298                 ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0); 
     385                ammus.MaximumLifetime = TimeSpan.FromSeconds(8.0); 
    299386                ammus.Tag = "ammus"; 
    300  
     387            } 
     388            if (Boss1.IsDestroyed) 
     389            { 
     390                ajastin.Stop(); 
     391                MediaPlayer.Pause(); 
     392                MediaPlayer.Play("howitbegins"); 
    301393            } 
    302394        }; 
    303395        ajastin.Start(); 
    304  
    305         Timer ajastin2 = new Timer(); 
    306         ajastin2.Interval = 0.01; 
    307         ajastin2.Timeout += delegate 
    308         { 
    309  
    310             Vector suunta = (pelaaja1.Position - Slime.Position).Normalize(); 
    311             Slime.Weapon.Angle = suunta.Angle; 
    312  
    313         }; 
    314         ajastin2.Start(); 
    315     } 
    316  
    317     void LuoBoss1(Vector paikka, double leveys, double korkeus) 
    318     { 
    319         Vihollinen Boss1 = new Vihollinen(leveys, korkeus * 0.5, 20); 
    320         Boss1.CanRotate = false; 
    321         Boss1.Position = paikka; 
    322         Boss1.Tag = "vihollinen"; 
    323         Boss1.Image = Slime1; 
    324         Add(Boss1); 
    325  
    326         PlatformWandererBrain tasoAivot = new PlatformWandererBrain(); 
    327         tasoAivot.Speed = 150; 
    328         Boss1.Brain = tasoAivot; 
    329  
    330         FollowerBrain SlimeAivot = new FollowerBrain("vihollinen"); 
    331         SlimeAivot.Speed = 200; 
    332         SlimeAivot.DistanceFar = 600; 
    333         SlimeAivot.DistanceClose = 300; 
    334         SlimeAivot.StopWhenTargetClose = true; 
    335         SlimeAivot.FarBrain = tasoAivot; 
    336  
    337         Boss1.Weapon = new AssaultRifle(30, 10); 
    338         Boss1.Weapon.ProjectileCollision = AmmusOsuiPelaajaan; 
    339         Boss1.Weapon.IsVisible = false; 
    340         Boss1.Weapon.AttackSound = null; 
    341  
    342         Timer ajastin = new Timer(); 
    343         ajastin.Interval = 1.0; 
    344         ajastin.Timeout += delegate 
    345         { 
    346             PhysicsObject ammus = Boss1.Weapon.Shoot(); 
    347             if (ammus != null) 
    348             { 
    349                 ammus.Image = SlimeBall; 
    350                 ammus.Size = new Vector(20, 20); 
    351                 ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0); 
    352                 ammus.Tag = "ammus"; 
    353             } 
    354         }; 
    355         ajastin.Start(); 
    356         if (Boss1.IsDestroyed) 
    357         { 
    358             ajastin.Stop(); 
    359         } 
     396         
    360397    } 
    361398 
     
    368405            (kohde as Vihollinen).ElamaLaskuri.Value--; 
    369406        } 
     407        if (kohde.Tag.ToString() == "boss") 
     408        { 
     409            (kohde as Boss).ElamaLaskuri.Value--; 
     410        } 
    370411    } 
    371412 
     
    382423    void AmmuAseella(AssaultRifle ase) 
    383424    { 
    384         ase.AbsoluteAngle = pelaaja1.FacingDirection.Angle; 
    385425        PhysicsObject ammus = ase.Shoot(); 
    386426 
     
    394434    } 
    395435 
    396     void Tähtää() 
    397     { 
    398         pelaaja1.Weapon.Angle = pelaaja1.FacingDirection.Angle; 
    399     } 
    400  
    401436    void LuoElämäLaskuri() 
    402437    { 
     
    406441 
    407442        ProgressBar elämäPalkki = new ProgressBar(150, 20); 
    408         elämäPalkki.X = Screen.Left + 500; 
    409         elämäPalkki.Y = Screen.Top - 100; 
     443        elämäPalkki.X = Level.Top - 450; 
     444        elämäPalkki.Y = Level.Left + 350; 
    410445        elämäPalkki.BindTo(elämäLaskuri); 
    411446        elämäPalkki.Color = Color.Transparent; 
     
    428463    } 
    429464 
    430     public void SlimeLähelläPelaajaa() 
    431     { 
    432         Vector suunta = (pelaaja1.Position - Slime.Position).Normalize(); 
    433  
    434         Slime.Angle = suunta.Angle; 
    435     } 
    436  
    437465    void AloitaPeliAlusta() 
    438466    { 
     
    441469    } 
    442470 
     471    void LisaaOvi(Vector paikka, double leveys, double korkeus) 
     472    { 
     473        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     474        ovi.Position = paikka; 
     475        ovi.Image = Gate; 
     476        ovi.Tag = "ovi"; 
     477        ovi.IgnoresCollisionResponse = true; 
     478        ovi.IsVisible = false; 
     479        Add(ovi); 
     480    } 
     481 
     482    void LisaaOvenSulkija(Vector paikka, double leveys, double korkeus) 
     483    { 
     484        PhysicsObject ovensulkija = PhysicsObject.CreateStaticObject(leveys, korkeus * 5); 
     485        ovensulkija.Position = paikka; 
     486        ovensulkija.Image = Heart1; 
     487        ovensulkija.Tag = "ovensulkija"; 
     488        ovensulkija.IgnoresCollisionResponse = true; 
     489        ovensulkija.IsVisible = false; 
     490        Add(ovensulkija); 
     491    } 
     492 
     493    void OvetSulkeutuu(PhysicsObject pelaaja1, PhysicsObject sulkija) 
     494    { 
     495        sulkija.Destroy(); 
     496        foreach (PhysicsObject ovi in GetObjectsWithTag("ovi")) 
     497        { 
     498            ovi.IgnoresCollisionResponse = false; 
     499            ovi.IsVisible = true; 
     500        } 
     501 
     502        LuoBoss1(BossSijainti, RUUDUN_KOKO * 2, RUUDUN_KOKO * 2); 
     503 
     504        MediaPlayer.Pause(); 
     505        MediaPlayer.Play("hitman"); 
     506    } 
     507 
     508    void LisaaOvi2(Vector paikka, double leveys, double korkeus) 
     509    { 
     510        PhysicsObject ovi2 = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     511        ovi2.Position = paikka; 
     512        ovi2.Image = Gate; 
     513        ovi2.Tag = "ovi"; 
     514        ovi2.IgnoresCollisionResponse = true; 
     515        ovi2.IsVisible = false; 
     516        Add(ovi2); 
     517    } 
     518 
     519    void Tähtää(AnalogState hiirenLiike) 
     520    { 
     521         
     522    } 
    443523} 
Note: See TracChangeset for help on using the changeset viewer.