Ignore:
Timestamp:
2017-08-01 11:58:43 (23 months ago)
Author:
npo17_73
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2017/31/PatrikK/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/keraa_tahtia_ikuisesti.cs

    r9264 r9300  
    1212    double hyppyNopeus = 900; 
    1313    int RUUDUN_KOKO = 40; 
    14  
    15     PlatformCharacter pelaaja1; 
    16  
     14    EasyHighScore topLista = new EasyHighScore(); 
     15    Hahmo pelaaja1; 
     16    IntMeter pisteLaskuri; 
     17    IntMeter tahtilaskuri; 
     18    IntMeter tappolaskuri; 
    1719    Image pelaajanKuva = LoadImage("norsu"); 
    1820    Image tahtiKuva = LoadImage("tahti"); 
    19  
     21    DoubleMeter ÄänenVoimakkuus = new DoubleMeter(0, 0, 1); 
    2022    SoundEffect maaliAani = LoadSoundEffect("maali"); 
    21  
     23    bool saaHeittaaKranaatin = true; 
     24    double kranaattiaika = 1.5; 
    2225    List<Timer> ajastinlista = new List<Timer>(); 
     26    int kenttaJossaOllaanNyt = 1; 
     27    bool huijattu = false; 
    2328 
    2429 
    2530    public override void Begin() 
    2631    { 
     32        ClearAll(); 
    2733        Gravity = new Vector(0, -1000); 
    2834        IsMouseVisible = true; 
    2935        LuoKentta(); 
    3036        LisaaNappaimet(); 
    31  
     37        LuoPistelaskuri(); 
     38        LuoTahtilaskuri(); 
    3239        Camera.Follow(pelaaja1); 
    3340        Camera.ZoomFactor = 2.0; 
    3441        Camera.StayInLevel = true; 
     42        huijattu = false; 
    3543    } 
    3644 
    3745    void LuoKentta() 
    3846    { 
    39         TileMap kentta = TileMap.FromLevelAsset("kentta1"); 
     47        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaJossaOllaanNyt); 
     48                
    4049        kentta.SetTileMethod('#', LisaaTaso); 
    4150        kentta.SetTileMethod('*', LisaaTahti); 
    4251        kentta.SetTileMethod('N', LisaaPelaaja); 
    4352        kentta.SetTileMethod('I', VihuSpawn); 
     53        kentta.SetTileMethod('P', TelePort); 
    4454        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    4555        Level.CreateBorders(); 
    46         Level.Background.CreateGradient(Color.White, Color.SkyBlue); 
     56        //Level.Background.CreateGradient(Color.White, Color.SkyBlue); 
     57        Level.Background.Image = LoadImage("background"); 
     58        //Level.Background.TextureWrapSize = new Vector(2.0, 1.0); 
     59        Level.Background.FitToLevel(); 
     60        PushButton tauko = new PushButton(LoadImage("TAUKO")); 
     61        Add(tauko); 
     62        tauko.Size = new Vector(90, 90); 
     63        tauko.Left = Screen.Left; 
     64        tauko.Clicked += TaukoValikko; 
     65         
    4766    } 
    4867 
     
    6988    void LisaaPelaaja(Vector paikka, double leveys, double korkeus) 
    7089    { 
    71         pelaaja1 = new PlatformCharacter(leveys, korkeus); 
     90        pelaaja1 = new Hahmo(leveys, korkeus); 
    7291        pelaaja1.Position = paikka; 
    73         pelaaja1.Mass = 4.0; 
     92        pelaaja1.Mass = 4000.0; 
    7493        pelaaja1.Image = pelaajanKuva; 
    7594        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen); 
     95        AddCollisionHandler(pelaaja1, "tele", TormaaTeleport); 
    7696        Add(pelaaja1); 
    7797        //pelaaja1 on PlatformCharacter-tyyppinen 
    7898        pelaaja1.Weapon = new PlasmaCannon(30, 10); 
    79         pelaaja1.Weapon.FireRate = 10; 
    80  
     99        pelaaja1.Weapon.FireRate = 5; 
     100        pelaaja1.Destroyed += GameOver; 
    81101        //Ammusten määrä aluksi: 
    82         pelaaja1.Weapon.Ammo.Value = 99999999; 
     102        //pelaaja1.Weapon.Ammo.Value = 99999999; 
    83103 
    84104        //Mitä tapahtuu kun ammus osuu johonkin? 
    85         pelaaja1.Weapon.ProjectileCollision = AmmusOsui; 
     105        pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui; 
     106        pelaaja1.Tag = "pelaaja1"; 
     107         
    86108    } 
    87109 
     
    126148        MessageDisplay.Add("Keräsit tähden!"); 
    127149        tahti.Destroy(); 
     150        tahtilaskuri.AddValue(1); 
     151         
     152         
    128153    } 
    129154    void Lenna(PlatformCharacter hahmo, double nopeus) 
     
    145170        hahmo.IgnoresCollisionResponse = false; 
    146171    } 
    147     void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
    148     { 
    149          
    150         if(kohde.Tag=="VIHOLLINEN") 
    151         { 
    152             kohde.Destroy(); 
     172    void VihunAmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     173    { 
     174         
     175        if(kohde.Tag=="pelaaja1") 
     176        { 
     177            (kohde as Hahmo).ElamaLaskuri.Value -= 1; 
     178        } 
     179    } 
     180    void PelaajanAmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     181    { 
     182 
     183        if (kohde.Tag == "VIHOLLINEN") 
     184        { 
     185            (kohde as Hahmo).ElamaLaskuri.Value -= 1; 
    153186        } 
    154187    } 
     
    161194            ammus.Size *= 3.5; 
    162195            ammus.Image = LoadImage("ammus"); 
    163             ammus.MaximumLifetime = TimeSpan.FromSeconds(999999999.9); 
     196            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0); 
     197            ammus.IgnoresCollisionResponse = true; 
    164198        } 
    165199    } 
    166200    void LisaaVihu(Vector paikka, double leveys, double korkeus) 
    167201    { 
    168         PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus); 
     202        Hahmo vihu = new Hahmo(leveys, korkeus); 
    169203        vihu.Position = paikka; 
    170204        vihu.Mass = 4.0; 
     
    172206        vihu.Tag = "VIHOLLINEN"; 
    173207        Add(vihu); 
     208        vihu.Destroyed += delegate { tappolaskuri.Value += 1; }; 
     209        vihu.CollisionIgnoreGroup = 3; 
    174210        PlatformWandererBrain tasoAivot = new PlatformWandererBrain(); 
    175211        tasoAivot.Speed = 300; 
     
    179215        vihu.Brain = tasoAivot; 
    180216        //pelaaja1 on PlatformCharacter-tyyppinen 
    181         vihu.Weapon = new PlasmaCannon(30, 10); 
     217        vihu.Weapon = new AssaultRifle(30, 10); 
    182218        vihu.Weapon.FireRate = 2; 
    183219 
    184220        //Ammusten määrä aluksi: 
    185221        vihu.Weapon.Ammo.Value = 99999999; 
    186  
     222        vihu.Weapon.MaxAmmoLifetime = TimeSpan.FromSeconds(1); 
    187223        //Mitä tapahtuu kun ammus osuu johonkin? 
    188         vihu.Weapon.ProjectileCollision = AmmusOsui; 
     224        vihu.Weapon.ProjectileCollision = VihunAmmusOsui; 
     225         
     226        Timer ammuajastinhajalle = new Timer(); 
     227        ammuajastinhajalle.Interval = 1; 
     228        ammuajastinhajalle.Timeout += delegate { VihuAmmuAseella(vihu); }; 
     229        ammuajastinhajalle.Start(); 
     230         
    189231    } 
    190232    void VihuSpawn(Vector paikka, double leveys, double korkeus) 
    191233    { 
    192234        Timer spawntimer = new Timer(); 
    193         spawntimer.Interval = 3.0; 
     235        spawntimer.Interval = 7.0; 
    194236        spawntimer.Timeout += delegate { LisaaVihu(paikka, leveys, korkeus); }; 
    195237        spawntimer.Start(); 
     
    199241    { 
    200242         
    201         Grenade kranu = new Grenade(4.0); 
    202         pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000); 
    203         kranu.Explosion.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui); 
    204         kranu.Size *= 2.0; 
    205         kranu.Explosion.Speed = 350; 
    206         AddCollisionHandler<Grenade,PhysicsObject>(kranu, "VIHOLLINEN", GrenadeCollide); 
    207          
    208  
     243         
     244        if (saaHeittaaKranaatin) 
     245        { 
     246            Grenade kranu = new Grenade(1.0); 
     247            pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000); 
     248            kranu.Explosion.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui); 
     249            kranu.Size *= 5.0; 
     250            kranu.Explosion.Speed = 350; 
     251            AddCollisionHandler<Grenade, PhysicsObject>(kranu, "VIHOLLINEN", GrenadeCollide); 
     252 
     253            saaHeittaaKranaatin = false; 
     254            Timer.SingleShot(kranaattiaika, HyvaksyKranaatti); 
     255        } 
     256 
     257    } 
     258    void VihuAmmuAseella(PlatformCharacter pelaaja) 
     259    { 
     260        PhysicsObject ammus = pelaaja.Weapon.Shoot(); 
     261 
     262        if (ammus != null) 
     263        { 
     264            ammus.Size *= 3.5; 
     265            ammus.Image = LoadImage("bullet1"); 
     266            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0); 
     267            ammus.IgnoresCollisionResponse = true; 
     268        } 
     269    } 
     270    void HyvaksyKranaatti() 
     271    { 
     272        saaHeittaaKranaatin = true; 
    209273    } 
    210274    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v) 
    211275    { 
    212         rajahdyksenKohde.Destroy(); 
     276        //rajahdyksenKohde.Destroy(); 
     277        pisteLaskuri.AddValue(1); 
     278        (rajahdyksenKohde as Hahmo).ElamaLaskuri.AddValue(-4); 
    213279    } 
    214280    void GrenadeCollide(Grenade kranu, PhysicsObject zombi) 
     
    253319 
    254320            } 
     321            if (komento == "god") 
     322            { 
     323                pelaaja1.ElamaLaskuri.MaxValue = 99999999; 
     324                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue; 
     325            } 
     326 
     327            if (komento == "häviä") 
     328            { 
     329                pelaaja1.Destroy(); 
     330            } 
    255331        } 
    256332 
     
    282358                nopeus = numero; 
    283359            } 
    284         } 
    285          
    286          
    287  
     360            if(komento=="god") 
     361            { 
     362                pelaaja1.ElamaLaskuri.MaxValue = 99999999; 
     363                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue; 
     364            } 
     365            if(komento=="kranuheittoaika") 
     366            { 
     367                kranaattiaika = numero; 
     368            } 
     369             
     370        } 
     371 
     372 
     373        huijattu = true; 
    288374    } 
    289375    void TaukoValikko() 
    290376    { 
    291377        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin taukovalikko", 
    292 "Palaa peliin", "Parhaat pisteet", "Lopeta"); 
     378"Palaa peliin", "Parhaat pisteet", "Lopeta", "Asetukset"); 
    293379        Add(alkuValikko); 
    294380        alkuValikko.DefaultCancel = 3; 
    295381        alkuValikko.Color = Color.Charcoal; 
    296  
    297     } 
     382        alkuValikko.AddItemHandler(0, Jatka); 
     383        alkuValikko.AddItemHandler(1, ParhaatPisteet); 
     384        alkuValikko.AddItemHandler(2, Exit); 
     385        alkuValikko.AddItemHandler(3, AliOhjelma); 
     386 
     387    } 
     388    void AliOhjelma() 
     389    { 
     390        MultiSelectWindow Asetukset = new MultiSelectWindow("ASETUKSET", 
     391            "Palaa valikkoon", "Äänenvoimakkuus"); 
     392        Add(Asetukset); 
     393         
     394       // ÄänenVoimakkuus.Changed += ZoomaaKenttaa; 
     395 
     396        Slider liukusaadin = new Slider(200, 20); 
     397        liukusaadin.BindTo(ÄänenVoimakkuus); 
     398        liukusaadin.Color = Color.Gray; 
     399        liukusaadin.InactiveColor = Color.Ivory; 
     400        liukusaadin.ActiveColor = Color.DarkJungleGreen; 
     401        Add(liukusaadin); 
     402    } 
     403    void Jatka() 
     404    { 
     405 
     406    } 
     407    void ParhaatPisteet() 
     408    { 
     409        MultiSelectWindow ParhaatPisteet = new MultiSelectWindow("ASETUKSET", 
     410            "Palaa valikkoon"); 
     411        Add(ParhaatPisteet); 
     412    } 
     413     
     414 
     415    void LuoPistelaskuri() 
     416    { 
     417        pisteLaskuri = new IntMeter(0); 
     418 
     419        Label pisteNaytto = new Label(); 
     420        pisteNaytto.X = Screen.Left + 100; 
     421        pisteNaytto.Y = Screen.Top - 100; 
     422        pisteNaytto.TextColor = Color.Black; 
     423        pisteNaytto.Color = Color.White; 
     424 
     425        pisteNaytto.BindTo(pisteLaskuri); 
     426        Add(pisteNaytto); 
     427    } 
     428    void TelePort(Vector paikka, double leveys, double korkeus) 
     429    { 
     430        PhysicsObject teleport = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     431        teleport.Position = paikka; 
     432        teleport.Image = LoadImage("blackhole"); 
     433        Add(teleport); 
     434        teleport.Tag = "tele"; 
     435    } 
     436    void TormaaTeleport(PhysicsObject pelaaja1, PhysicsObject teleport) 
     437    { 
     438 
     439    } 
     440    void LuoTahtilaskuri() 
     441    { 
     442        tahtilaskuri = new IntMeter(0); 
     443 
     444        Label pisteNaytto = new Label(); 
     445        pisteNaytto.X = Screen.Left + 80; 
     446        pisteNaytto.Y = Screen.Top - 80; 
     447        pisteNaytto.TextColor = Color.Black; 
     448        pisteNaytto.Color = Color.White; 
     449 
     450        pisteNaytto.BindTo(tahtilaskuri); 
     451        Add(pisteNaytto); 
     452    } 
     453    void LuoTappoLaskuri() 
     454    { 
     455        tappolaskuri = new IntMeter(0); 
     456 
     457        Label pisteNaytto = new Label(); 
     458        pisteNaytto.X = Screen.Left + 60; 
     459        pisteNaytto.Y = Screen.Top - 60; 
     460        pisteNaytto.TextColor = Color.Black; 
     461        pisteNaytto.Color = Color.White; 
     462 
     463        pisteNaytto.BindTo(tappolaskuri); 
     464        Add(pisteNaytto); 
     465    } 
     466    void GameOver() 
     467    { 
     468        if (huijattu) 
     469        { 
     470            Begin(); 
     471        } 
     472        else 
     473        { 
     474            topLista.EnterAndShow(pisteLaskuri.Value + tahtilaskuri.Value); 
     475            topLista.HighScoreWindow.Closed += (w) => Begin(); 
     476 
     477        } 
     478         
     479 
     480         
     481         
     482    } 
     483 
     484 
    298485 
    299486 
    300487 
    301488} 
     489class Hahmo : PlatformCharacter 
     490{ 
     491    private IntMeter elamaLaskuri = new IntMeter(25, 0, 25); 
     492    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
     493 
     494    public Hahmo(double leveys, double korkeus) 
     495        : base(leveys, korkeus) 
     496    { 
     497        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     498    } 
     499} 
     500//public class Peli : Game 
     501//{ 
     502     
     503 
     504//    public override void Begin() 
     505//    { 
     506//      // alustuksia jne. 
Note: See TracChangeset for help on using the changeset viewer.