Ignore:
Timestamp:
2014-07-24 14:59:06 (5 years ago)
Author:
toolala
Message:

Kaikkee jännää ja ylimääräistä ulinaa

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2014/30/ToukoA/AssassinsOfNight/AssassinsOfNight/AssassinsOfNight/AssassinsOfNight.cs

    r5594 r5640  
    99public class AssassinsOfNight : PhysicsGame 
    1010{ 
    11     const double nopeus = 350; 
     11 
     12    DoubleMeter elamaLaskuri; 
     13 
     14 
     15    const double nopeus = 200; 
    1216    const double hyppyNopeus = 750; 
    1317    const int RUUDUN_KOKO = 40; 
    1418    PlatformCharacter pelaaja1; 
    1519    PhysicsObject pahis; 
     20    Vihu poliisi; 
    1621    PhysicsObject toinenFakeTaso; 
    1722    bool kenttaLapi = false; 
    1823    bool tapettuJo = false; 
     24    bool tapettuJo2 = false; 
    1925    List<Label> valikonKohdat; 
    2026    Image kohteenKuva = LoadImage("kohde"); 
     
    2228    Image tahtiKuva = LoadImage("tahti"); 
    2329    Image pelaajaPuukottaaKuva = LoadImage("puukkomiespuukottaa"); 
     30    Image poliisinKuva = LoadImage("poliisi"); 
     31    Image poliisiAmpuuKuva = LoadImage("poliisiampuu"); 
    2432    SoundEffect maaliAani = LoadSoundEffect("maali"); 
    2533 
     
    2937    { 
    3038        Valikko(); 
     39    } 
     40    void luoRangaistusKentta() 
     41    { 
     42        ClearAll(); 
     43        TileMap kentta = TileMap.FromLevelAsset("kenttarangaistus"); 
     44        kentta.SetTileMethod('#', LisaaTaso); 
     45        kentta.SetTileMethod('*', LisaaTahti); 
     46        kentta.SetTileMethod('K', LisaaKohde); 
     47        kentta.SetTileMethod('P', LisaaPoliisi); 
     48        kentta.SetTileMethod('N', LisaaPelaaja); 
     49        kentta.SetTileMethod('%', LisaaFakeTaso); 
     50        kentta.SetTileMethod('&', LisaaTappoTrigger); 
     51        kentta.SetTileMethod('/', LisaaToinenFakeTaso); 
     52        kentta.SetTileMethod('!', LisaaVoitto1); 
     53        kentta.SetTileMethod('Q', LisaaVoitto2); 
     54        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
     55        Level.CreateBorders(); 
     56        Level.Background.CreateGradient(Color.White, Color.Blue); 
     57 
     58        LuoPisteLaskuri(); 
     59        luoElamaLaskuri(); 
     60 
     61        Gravity = new Vector(0, -1000); 
     62        Camera.Follow(pelaaja1); 
     63        Camera.ZoomFactor = 1.2; 
     64        Camera.StayInLevel = true; 
     65        Mouse.IsCursorVisible = false; 
     66    } 
     67    void LuoKentta3() 
     68    { 
     69        ClearAll(); 
     70        TileMap kentta = TileMap.FromLevelAsset("kentta3"); 
     71        kentta.SetTileMethod('#', LisaaTaso); 
     72        kentta.SetTileMethod('*', LisaaTahti); 
     73        kentta.SetTileMethod('K', LisaaKohde); 
     74        kentta.SetTileMethod('P', LisaaPoliisi); 
     75        kentta.SetTileMethod('N', LisaaPelaaja); 
     76        kentta.SetTileMethod('%', LisaaFakeTaso); 
     77        kentta.SetTileMethod('&', LisaaTappoTrigger); 
     78        kentta.SetTileMethod('/', LisaaToinenFakeTaso); 
     79        kentta.SetTileMethod('!', LisaaVoitto1); 
     80        kentta.SetTileMethod('Q', LisaaVoitto2); 
     81        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
     82        Level.CreateBorders(); 
     83        Level.Background.CreateGradient(Color.White, Color.Blue); 
     84 
     85        LuoPisteLaskuri(); 
     86        luoElamaLaskuri(); 
     87 
     88        tapettuJo = false; 
     89        tapettuJo2 = false; 
     90 
     91        Gravity = new Vector(0, -1000); 
     92        Camera.Follow(pelaaja1); 
     93        Camera.ZoomFactor = 1.2; 
     94        Camera.StayInLevel = true; 
     95        Mouse.IsCursorVisible = false; 
     96        LisaaNappaimet(); 
    3197    } 
    3298    void LuoKentta2() 
     
    37103        kentta.SetTileMethod('*', LisaaTahti); 
    38104        kentta.SetTileMethod('K', LisaaKohde); 
     105        kentta.SetTileMethod('P', LisaaPoliisi); 
     106        kentta.SetTileMethod('N', LisaaPelaaja); 
     107        kentta.SetTileMethod('%', LisaaFakeTaso); 
     108        kentta.SetTileMethod('&', LisaaTappoTrigger); 
     109        kentta.SetTileMethod('/', LisaaToinenFakeTaso); 
     110        kentta.SetTileMethod('!', LisaaVoitto1); 
     111        kentta.SetTileMethod('Q', LisaaVoitto2); 
     112        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
     113        Level.CreateBorders(); 
     114        Level.Background.CreateGradient(Color.White, Color.Blue); 
     115 
     116        LuoPisteLaskuri(); 
     117        luoElamaLaskuri(); 
     118 
     119        kenttaLapi = false; 
     120        tapettuJo = false; 
     121        tapettuJo2 = false; 
     122 
     123        Gravity = new Vector(0, -1000); 
     124        Camera.Follow(pelaaja1); 
     125        Camera.ZoomFactor = 1.2; 
     126        Camera.StayInLevel = true; 
     127        Mouse.IsCursorVisible = false; 
     128        LisaaNappaimet(); 
     129    } 
     130    void LuoKentta() 
     131    { 
     132        ClearAll(); 
     133        TileMap kentta = TileMap.FromLevelAsset("kentta1"); 
     134        kentta.SetTileMethod('#', LisaaTaso); 
     135        kentta.SetTileMethod('*', LisaaTahti); 
     136        kentta.SetTileMethod('K', LisaaKohde); 
     137        kentta.SetTileMethod('P', LisaaPoliisi); 
    39138        kentta.SetTileMethod('N', LisaaPelaaja); 
    40139        kentta.SetTileMethod('%', LisaaFakeTaso); 
     
    47146 
    48147        LuoPisteLaskuri(); 
    49  
    50         Gravity = new Vector(0, -1000); 
    51         Camera.Follow(pelaaja1); 
    52         Camera.ZoomFactor = 1.2; 
    53         Camera.StayInLevel = true; 
    54         Mouse.IsCursorVisible = false; 
    55     } 
    56     void LuoKentta() 
    57     { 
    58         ClearAll(); 
    59         TileMap kentta = TileMap.FromLevelAsset("kentta1"); 
    60         kentta.SetTileMethod('#', LisaaTaso); 
    61         kentta.SetTileMethod('*', LisaaTahti); 
    62         kentta.SetTileMethod('K', LisaaKohde); 
    63         kentta.SetTileMethod('N', LisaaPelaaja); 
    64         kentta.SetTileMethod('%', LisaaFakeTaso); 
    65         kentta.SetTileMethod('&', LisaaTappoTrigger); 
    66         kentta.SetTileMethod('/', LisaaToinenFakeTaso); 
    67         kentta.SetTileMethod('!', LisaaVoitto1); 
    68         kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    69         Level.CreateBorders(); 
    70         Level.Background.CreateGradient(Color.White, Color.Blue); 
    71  
    72         LuoPisteLaskuri(); 
     148        luoElamaLaskuri(); 
    73149 
    74150        Gravity = new Vector(0, -1000); 
     
    89165        Add(pisteNaytto); 
    90166    } 
     167    void LuoToinenPisteLaskuri() 
     168    { 
     169        /*pisteLaskuri2 = new IntMeter(0); 
     170        Label pisteNaytto2 = new Label(); 
     171        pisteNaytto2.X = Screen.Left + 100; 
     172        pisteNaytto2.Y = Screen.Top - 100; 
     173        pisteNaytto2.TextColor = Color.Blue; 
     174        pisteNaytto2.Color = Color.White; 
     175        pisteNaytto2.BindTo(pisteLaskuri2); 
     176        Add(pisteNaytto2);*/ 
     177    } 
    91178    void LisaaVoitto1(Vector paikka, double leveys, double korkeus) 
    92179    { 
     
    98185        Add(voittoTrigger1); 
    99186    } 
     187    void LisaaVoitto2(Vector paikka, double leveys, double korkeus) 
     188    { 
     189        PhysicsObject voittoTrigger2 = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     190        voittoTrigger2.IgnoresCollisionResponse = true; 
     191        voittoTrigger2.Tag = "voittoTrigger2"; 
     192        voittoTrigger2.Position = paikka; 
     193        voittoTrigger2.Color = Color.Gold; 
     194        Add(voittoTrigger2); 
     195    } 
    100196    void LisaaTaso(Vector paikka, double leveys, double korkeus) 
    101197    { 
     
    142238    { 
    143239        pelaaja1 = new PlatformCharacter(leveys, korkeus); 
    144         Keyboard.Listen(Key.Space, ButtonState.Pressed, Puukota, "Pelaaja1 puukottaa", pelaaja1); 
     240        Keyboard.Listen(Key.Space, ButtonState.Pressed, Puukota, "Puukota", pelaaja1); 
    145241        pelaaja1.Position = paikka; 
    146242        pelaaja1.Mass = 4.0; 
     
    149245        AddCollisionHandler(pelaaja1, "tappoTrigger", TappoTrigger); 
    150246        AddCollisionHandler(pelaaja1, "voittoTrigger1", voittoTrigger1); 
     247        AddCollisionHandler(pelaaja1, "voittoTrigger2", voittoTrigger2); 
    151248        Add(pelaaja1); 
    152249    } 
    153250    void voittoTrigger1(PhysicsObject pelaaja1, PhysicsObject voittoTrigger1) 
    154251    { 
    155        if (kenttaLapi == true) 
     252        if (kenttaLapi == true) 
    156253        { 
    157254            MessageDisplay.Add("Testi"); 
     
    160257        } 
    161258    } 
     259    void voittoTrigger2(PhysicsObject pelaaja1, PhysicsObject voittoTrigger2) 
     260    { 
     261        if (kenttaLapi == true) 
     262        { 
     263            MessageDisplay.Add("Testi"); 
     264            maaliAani.Play(); 
     265            LuoKentta3(); 
     266        } 
     267    } 
    162268    void Puukota(PlatformCharacter pelaaja1) 
    163269    { 
    164270        pelaaja1.Image = pelaajaPuukottaaKuva; 
    165         if(Vector.Distance(pelaaja1.Position, pahis.Position) < 50) 
     271        if (Vector.Distance(pelaaja1.Position, pahis.Position) < 50) 
    166272        { 
    167273            TappoPuukolla(pelaaja1, pahis); 
     274        } 
     275        if (poliisi != null) 
     276        { 
     277 
     278 
     279            if (Vector.Distance(pelaaja1.Position, poliisi.Position) < 50) 
     280            { 
     281                TappoPuukolla2(pelaaja1, poliisi); 
     282            } 
    168283        } 
    169284        Timer ajastin = new Timer(); 
     
    179294    { 
    180295        if (tapettuJo == true) return; 
    181             MessageDisplay.Add("Onnistuit murhaamaan kohteen!"); 
    182             pisteLaskuri.Value += 1; 
    183             tapettuJo = true; 
    184             pahis.Destroy(); 
     296        MessageDisplay.Add("Onnistuit murhaamaan kohteen!"); 
     297        pisteLaskuri.Value += 1; 
     298        tapettuJo = true; 
     299        kenttaLapi = true; 
     300        pahis.Destroy(); 
     301    } 
     302    void TappoPuukolla2(PhysicsObject pelaaja1, PhysicsObject poliisi) 
     303    { 
     304        (poliisi as Vihu).ElamaLaskuri.Value -= 30; 
    185305    } 
    186306    void LisaaKohde(Vector paikka, double leveys, double korkeus) 
     
    193313        Add(pahis); 
    194314    } 
     315    void luoElamaLaskuri() 
     316    { 
     317        elamaLaskuri = new DoubleMeter(100); 
     318        elamaLaskuri.DefaultValue = 100; 
     319        elamaLaskuri.MaxValue = 100; 
     320        elamaLaskuri.LowerLimit += pelaajaKuolee; 
     321        ProgressBar elamaPalkki = new ProgressBar(300, 20); 
     322        elamaPalkki.X = Screen.Left + 950; 
     323        elamaPalkki.Y = Screen.Top - 20; 
     324        elamaPalkki.BindTo(elamaLaskuri); 
     325        elamaPalkki.BorderColor = Color.Black; 
     326        Add(elamaPalkki); 
     327    } 
     328    /*void luoPoliisiElamaLaskuri() 
     329    { 
     330        elamaLaskuri2 = new DoubleMeter(100); 
     331        elamaLaskuri2.DefaultValue = 100; 
     332        elamaLaskuri2.MaxValue = 100; 
     333        elamaLaskuri2.LowerLimit += poliisiKuolee; 
     334        Add(elamaLaskuri2); 
     335    }*/ 
     336    void pelaajaKuolee() 
     337    { 
     338        MessageDisplay.Add("Kuolit"); 
     339        pelaaja1.Destroy(); 
     340        Valikko(); 
     341    } 
     342    void poliisiKuolee() 
     343    { 
     344        if (tapettuJo2 == true) return; 
     345        MessageDisplay.Add("Onnistuit murhaamaan poliisin!"); 
     346        pisteLaskuri.Value += 1; 
     347        tapettuJo2 = true; 
     348        poliisi.Destroy(); 
     349    } 
     350    void LisaaPoliisi(Vector paikka, double leveys, double korkeus) 
     351    { 
     352        poliisi = new Vihu(leveys, korkeus); 
     353        poliisi.Position = paikka; 
     354        poliisi.Mass = 4.0; 
     355        poliisi.Tag = "poliisi"; 
     356 
     357        FollowerBrain seuraajaAivot = new FollowerBrain(pelaaja1); 
     358 
     359        AssaultRifle poliisinAse; 
     360 
     361        poliisinAse = new AssaultRifle(30, 10); 
     362 
     363        poliisinAse.InfiniteAmmo = true; 
     364        poliisinAse.ProjectileCollision = AmmusOsui; 
     365 
     366        poliisi.Weapon = poliisinAse; 
     367 
     368        poliisinAse.IsVisible = false; 
     369 
     370        poliisi.Brain = seuraajaAivot; 
     371        seuraajaAivot.Active = true; 
     372        seuraajaAivot.Speed = 100; 
     373        seuraajaAivot.DistanceClose = 150; 
     374        seuraajaAivot.DistanceFar = 600; 
     375        seuraajaAivot.TargetClose += delegate { poliisiAmpuu(poliisinAse); }; 
     376        seuraajaAivot.StopWhenTargetClose = true; 
     377        seuraajaAivot.Speed = 200; 
     378        poliisi.CanRotate = false; 
     379        poliisi.Image = poliisinKuva; 
     380        poliisi.Weapon.ProjectileCollision = AmmusOsui; 
     381        Add(poliisi); 
     382    } 
     383    void poliisiAmpuu(AssaultRifle ase) 
     384    { 
     385        PhysicsObject ammus = ase.Shoot(); 
     386 
     387        if (ammus != null) 
     388        { 
     389            poliisi.Image = poliisiAmpuuKuva; 
     390            ase.Power.DefaultValue = 100; 
     391            ase.FireRate = 0.5; 
     392            ammus.Size *= 0.5; 
     393            //ammus.Image = ... 
     394            ammus.MaximumLifetime = TimeSpan.FromSeconds(0.5); 
     395        } 
     396    } 
     397    void AmmusOsui(PhysicsObject ammus, PhysicsObject pelaaja1) 
     398    { 
     399        ammus.Destroy(); 
     400        elamaLaskuri.Value -= 19; 
     401    } 
    195402    void LisaaNappaimet() 
    196403    { 
    197404        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    198405        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    199  
    200406        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus); 
    201407        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
    202408        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    203  
    204409        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    205  
    206410        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus); 
    207411        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus); 
    208  
    209412        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    210413    } 
     
    246449        kohta3.Position = new Vector(0, -40); 
    247450        valikonKohdat.Add(kohta3); 
     451        Label kohta4 = new Label("Paina tästä :3"); 
     452        kohta4.Position = new Vector(0, -80); 
     453        valikonKohdat.Add(kohta4); 
    248454 
    249455        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla 
     
    254460            Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, ParhaatPisteet, null); 
    255461            Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, LopetaPeli, null); 
     462            Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, AlaPainaTasta, null); 
    256463            Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null); 
    257464 
     
    280487        LisaaNappaimet(); 
    281488    } 
     489    void AlaPainaTasta() 
     490    { 
     491        luoRangaistusKentta(); 
     492    } 
    282493    void ParhaatPisteet() 
    283494    { 
     
    286497    void LopetaPeli() 
    287498    { 
    288        Exit(); 
     499        Exit(); 
    289500    } 
    290501} 
Note: See TracChangeset for help on using the changeset viewer.