Changeset 2823


Ignore:
Timestamp:
2012-06-06 21:55:27 (11 years ago)
Author:
lemilaht
Message:

Lisaa

Location:
2012/23/LeoL
Files:
7 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/23/LeoL/Tasohyppelypeli1.cs

    r2819 r2823  
    99public class tasohyppelypeli : PhysicsGame 
    1010{ 
    11     DoubleMeter  elamaMittari; 
     11    string CurrentLevelFile = String.Empty; 
     12 
     13    DoubleMeter elamaMittari; 
    1214    Image Ampujankuva = LoadImage("Ampuja"); 
    1315    Image DemoninKuva = LoadImage("Dem1.anm"); 
    1416    Image olionKuva = LoadImage("cafgar.anm"); 
     17    Image magenKuva = LoadImage("Mage"); 
    1518    Image[] pelaajanAnim = LoadImages("pelaaja", "Pelaaja2", "Pelaaja3"); 
    16     double nopeusYlos =  1250; 
     19    Image[] pelaajanAnimPeilattu; 
     20     
     21    double nopeusYlos = 1250; 
    1722    Vector nopeusOikea = new Vector(250, 0); 
    1823    Vector nopeusVasen = new Vector(-250, 0); 
    1924    Image pelaajanKuva = LoadImage("pelaaja"); 
    20      
     25 
    2126    PlatformCharacter pelaaja; 
    2227 
    2328    public override void Begin() 
    2429    { 
     30        ClearAll(); 
     31        MultiSelectWindow valikko = new MultiSelectWindow("Welcome to game", 
     32        "tutorial", "Start level 1", "Start level 2", "End"); 
     33        valikko.ItemSelected += PainettiinValikonNappia; 
     34        Add(valikko); 
    2535         
    2636 
    27         LuoKenttä(); 
    28         lataaKenttä(); 
    29         AsetaOhjaimet(); 
    30          
    31          
    32          
    33     } 
    34  
    35     void lataaKenttä() 
    36     { 
    37     } 
    38  
    39     void LuoKenttä() 
    40     { 
    41         TileMap ruudut = TileMap.FromLevelAsset("kartta"); 
     37 
     38 
     39    } 
     40    void  
     41 
     42     lataaKenttä() 
     43    { 
     44    } 
     45 
     46    void LuoKenttä(string levelFile) 
     47    { 
     48        TileMap ruudut = TileMap.FromLevelAsset(levelFile); 
    4249        ruudut.SetTileMethod('_', LuoPalikka); 
    4350        ruudut.SetTileMethod('.', LuoSeina); 
     
    4754        ruudut.SetTileMethod('#', LuoDemoni); 
    4855        ruudut.SetTileMethod('-', LuoAmpuja); 
     56        ruudut.SetTileMethod('=', LuoMaali); 
     57        ruudut.SetTileMethod(';', LuoMage); 
    4958        ruudut.Execute(20, 20); 
    5059        Level.Background.Color = Color.ForestGreen; 
    5160        Camera.Follow(pelaaja); 
    5261        Gravity = new Vector(0, -5000); 
     62 
     63        CurrentLevelFile = levelFile; 
    5364    } 
    5465 
     
    8495    { 
    8596        Keyboard.Listen(Key.Escape, ButtonState.Down, ConfirmExit, "Poistu pelistä"); 
    86  
    8797        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja liikkuu vasemmalle", pelaaja, nopeusVasen); 
    8898        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 
     
    91101        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 
    92102        Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo, null); 
     103        Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo2, null); 
    93104    } 
    94105 
     
    97108        pelaaja = new PlatformCharacter(20, 40); 
    98109        pelaaja.Position = paikka; 
    99          
     110 
    100111        pelaaja.Color = Color.Aquamarine; 
    101112        pelaaja.Image = pelaajanKuva; 
     
    105116        AddCollisionHandler(pelaaja, "Ampuja", PelaajaMenettaa2); 
    106117        AddCollisionHandler(pelaaja, "cafgar", PelaajaMenettaa2); 
     118        AddCollisionHandler(pelaaja, "maali", SaavutitMaalin); 
    107119        PelaajanElamat(); 
    108120        pelaaja.Mass = 5000; 
    109            
     121        pelaaja.Weapon = new PlasmaCannon(20, 5); 
     122        pelaaja.Weapon.IsVisible = false; 
     123         
    110124        Add(pelaaja); 
    111125    } 
     
    116130    } 
    117131 
    118      
    119      
    120     void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde ) 
     132 
     133 
     134    void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde) 
    121135    { 
    122136        pelaaja.Destroy(); 
    123          
     137        Replay(); 
     138 
    124139    } 
    125140    void LuoCafgar(Vector paikka, double leveys, double korkeus) 
     
    143158        AddCollisionHandler(Demoni, "piikki", DemoniKuolee); 
    144159        AddCollisionHandler(Demoni, "Ampuja", DemoniKuolee); 
     160        AddCollisionHandler(Demoni, "ammus", DemoniKuolee); 
    145161        Demoni.Mass = 500; 
    146162        Add(Demoni); 
     
    153169    { 
    154170        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 
    155     seuraajanAivot.Speed = 150;   
    156     seuraajanAivot.TargetFollowDistance = 200;   
    157     seuraajanAivot.FollowAlways = true;  
    158     seuraajanAivot.TargetCloseDistance = 20;   
    159    
    160  
     171        seuraajanAivot.Speed = 150; 
     172        seuraajanAivot.TargetFollowDistance = 200; 
     173        seuraajanAivot.FollowAlways = true; 
     174        seuraajanAivot.TargetCloseDistance = 20; 
     175 
     176 
     177 
     178        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella; 
     179        return seuraajanAivot; 
     180    } 
     181 
     182 
     183    void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e) 
     184    { 
     185    } 
     186    void DemoniKuolee(PhysicsObject Demoni, PhysicsObject kohde) 
     187    { 
     188        Demoni.Destroy(); 
     189    } 
     190    Brain AivotAmpuja() 
     191    { 
     192        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 
     193        seuraajanAivot.Speed = 0; 
     194        seuraajanAivot.TargetFollowDistance = 200; 
     195        seuraajanAivot.FollowAlways = true; 
     196        seuraajanAivot.TargetCloseDistance = 200; 
     197 
     198 
     199 
     200        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2; 
     201        return seuraajanAivot; 
     202    } 
     203 
     204 
     205    void mitaTapahtuuKunOllaanLahella2(object lahettajaAivot, EventArgs e) 
     206    { 
     207        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle; 
     208        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot(); 
     209        if (ammus != null) 
     210        { 
     211            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2); 
     212            ammus.Tag = "ammus"; 
     213        } 
     214    } 
     215    void LuoAmpuja(Vector paikka, double leveys, double korkeus) 
     216    { 
     217 
     218        PlatformCharacter Ampuja = new PlatformCharacter(20, 20); 
     219        Ampuja.IgnoresGravity = true; 
     220        Ampuja.IgnoresPhysicsLogics = true; 
     221        Ampuja.MaxVelocity = 0.0; 
     222        Ampuja.Position = paikka; 
     223        Ampuja.Image = Ampujankuva; 
     224        Ampuja.Color = Color.Black; 
     225        Ampuja.Tag = "Ampuja"; 
     226        Ampuja.Brain = AivotAmpuja(); 
     227        Ampuja.Weapon = new PlasmaCannon(5, 3); 
     228        Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1); 
     229        Add(Ampuja); 
     230    } 
     231    void PelaajaMenettaa() 
     232    { 
     233    } 
     234    void PelaajanElamat() 
     235    { 
     236        elamaMittari = new DoubleMeter(50); 
     237        elamaMittari.MaxValue = 25; 
     238        ProgressBar elamaPalkki = new ProgressBar(150, 10); 
     239        elamaPalkki.BindTo(elamaMittari); 
     240        Add(elamaPalkki); 
     241 
     242        elamaPalkki.X = Screen.Right - 150; 
     243        elamaPalkki.Y = Screen.Top - 10; 
     244        elamaPalkki.Angle = Angle.RightAngle; 
     245        elamaPalkki.BarColor = Color.Green; 
     246        elamaPalkki.BorderColor = Color.White; 
     247        elamaPalkki.Angle = Angle.FromDegrees(90); 
     248        elamaMittari.Value = 50; 
     249 
     250        elamaMittari.LowerLimit += PelaajaTuhoutuu; 
     251         
     252 
     253    } 
     254    void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde) 
     255    { 
     256        elamaMittari.Value -= 3; 
     257    } 
     258 
     259    void PelaajaTuhoutuu(double mittarinArvo) 
     260    { 
     261        pelaaja.Destroy(); 
     262        MessageDisplay.Add("Dead"); 
     263        Replay(); 
     264    } 
     265    void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde) 
     266    { 
     267        elamaMittari.Value -= 5; 
     268    } 
     269    void PelaajaLyo() 
     270    { 
     271        pelaaja.Animation = new Animation(pelaajanAnim); 
     272        pelaaja.Animation.Start(); 
     273        pelaaja.Animation.Played += new Action(AnimValm); 
     274        pelaaja.Animation.FPS = 5; 
     275    } 
     276    void AnimValm() 
     277    { 
     278        pelaaja.Animation.Stop(); 
     279    } 
     280    void PelaajaLyo2() 
     281    { 
     282        pelaaja.Animation = new Animation(pelaajanAnimPeilattu); 
     283        pelaaja.Animation.Start(); 
     284        pelaaja.Animation.Played += new Action(AnimValm2); 
     285        pelaaja.Animation.FPS = 5; 
     286    } 
     287    void AnimValm2() 
     288    { 
     289        pelaaja.Animation.Stop(); 
     290    } 
     291    void PainettiinValikonNappia(int valinta) 
     292    { 
     293        switch (valinta) 
     294        { 
     295            case 0: 
     296                 Aloitus("Tutorial map"); 
     297                break; 
     298 
     299            case 1: 
     300                Aloitus("kartta"); 
     301                break; 
     302 
     303            case 2: 
     304                Aloitus("Kentta2"); 
     305                break; 
     306 
     307            case 3: 
     308                Exit(); 
     309                break; 
     310        } 
     311    } 
     312    void Aloitus(string levelFile) 
     313    { 
     314         
     315        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim); 
     316 
     317        LuoKenttä(levelFile); 
     318        lataaKenttä(); 
     319        AsetaOhjaimet(); 
     320    } 
    161321     
    162     seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella; 
    163     return seuraajanAivot; 
    164     } 
    165  
     322 
     323    void LuoMaali(Vector paikka, double leveys, double korkeus) 
     324    { 
     325        PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 40); 
     326        maali.Position = paikka; 
     327        maali.Shape = Shape.Pentagon ; 
     328        maali.Tag = "maali"; 
     329        maali.Color = Color.Blue; 
     330         
     331        Add(maali); 
     332    } 
     333    void SaavutitMaalin(PhysicsObject pelaaja, PhysicsObject kohde) 
     334    { 
     335        YouWin(); 
     336    } 
     337    void Replay() 
     338    { 
     339        ClearAll(); 
     340        MultiSelectWindow valikko2 = new MultiSelectWindow("You Died",  
     341        "Replay", "Menu", "End"); 
     342        valikko2.ItemSelected += PainettiinValikonNappia2; 
     343        Add(valikko2); 
     344    } 
     345   void PainettiinValikonNappia2(int valinta) 
     346    { 
     347        switch (valinta) 
     348        { 
     349 
     350            case 0: 
     351                AloitaUudelleen(); 
     352                break; 
     353 
     354            case 1: 
     355                Begin(); 
     356                break; 
     357 
     358            case 2: 
     359                Exit(); 
     360                break; 
     361        } 
     362    } 
     363    void YouWin() 
     364    { 
     365        ClearAll(); 
     366        MultiSelectWindow valikko3 = new MultiSelectWindow("You Win",  
     367        "Replay", "Menu", "End"); 
     368       valikko3.ItemSelected += PainettiinValikonNappia3; 
     369        Add(valikko3); 
     370    } 
     371    void PainettiinValikonNappia3(int valinta) 
     372    { 
     373        switch (valinta) 
     374        { 
     375            case 0: 
     376                AloitaUudelleen(); 
     377                break; 
     378 
     379            case 1: 
     380                Begin(); 
     381                break; 
     382 
     383            case 2: 
     384                Exit(); 
     385                break; 
     386        } 
     387    } 
     388     
     389    void AloitaUudelleen() 
     390    { 
     391        ClearAll(); 
     392        pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim); 
     393 
     394        LuoKenttä(CurrentLevelFile); 
     395        lataaKenttä(); 
     396        AsetaOhjaimet(); 
     397    } 
     398    Brain AivotMage() 
     399    { 
     400        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 
     401        seuraajanAivot.Speed = 20; 
     402        seuraajanAivot.TargetFollowDistance = 200; 
     403        seuraajanAivot.FollowAlways = true; 
     404        seuraajanAivot.TargetCloseDistance = 300; 
     405 
     406 
     407 
     408        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella3; 
     409        return seuraajanAivot; 
     410    } 
     411 
     412 
     413    void mitaTapahtuuKunOllaanLahella3(object lahettajaAivot, EventArgs e) 
     414    { 
     415        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle; 
     416        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot(); 
     417        if (ammus != null) 
     418        { 
     419            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2); 
     420            ammus.Tag = "ammus"; 
     421        } 
     422    } 
     423    void LuoMage(Vector paikka, double leveys, double korkeus) 
     424    { 
     425        PhysicsObject Mage = PhysicsObject.CreateStaticObject(20, 40); 
     426        Mage.Position = paikka; 
     427        Mage.Image = magenKuva; 
     428        Mage.Color = Color.Black; 
     429        Mage.Tag = "mage"; 
     430        Mage.Brain = AivotMage(); 
     431        Add(Mage); 
     432    } 
    166433    
    167    void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e) 
    168    { 
    169    } 
    170    void DemoniKuolee(PhysicsObject Demoni, PhysicsObject kohde) 
    171    { 
    172        
    173         
    174        Demoni.Destroy(); 
    175    } 
    176    Brain AivotAmpuja() 
    177    { 
    178        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 
    179        seuraajanAivot.Speed = 0;   
    180        seuraajanAivot.TargetFollowDistance = 200;   
    181        seuraajanAivot.FollowAlways = true;  
    182        seuraajanAivot.TargetCloseDistance = 200;   
    183         
    184  
    185         
    186        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2; 
    187        return seuraajanAivot; 
    188    } 
    189  
    190     
    191    void mitaTapahtuuKunOllaanLahella2 (object lahettajaAivot, EventArgs e) 
    192    { 
    193        ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle; 
    194        PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot(); 
    195        if (ammus != null) 
    196        { 
    197            AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2); 
    198            AddCollisionHandler(ammus, "vihu", DemoniKuolee); 
    199        } 
    200    } 
    201    void LuoAmpuja(Vector paikka, double leveys, double korkeus) 
    202    { 
    203         
    204        PlatformCharacter Ampuja = new PlatformCharacter(20, 20); 
    205        Ampuja.IgnoresGravity = true; 
    206        Ampuja.IgnoresPhysicsLogics = true; 
    207        Ampuja.MaxVelocity = 0.0; 
    208        Ampuja.Position = paikka; 
    209        Ampuja.Image = Ampujankuva; 
    210        Ampuja.Color = Color.Black; 
    211        Ampuja.Tag = "Ampuja"; 
    212        Ampuja.Brain = AivotAmpuja(); 
    213        Ampuja.Weapon = new PlasmaCannon(5, 3); 
    214        Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1); 
    215        Add(Ampuja); 
    216    } 
    217    void PelaajaMenettaa() 
    218    {  
    219    } 
    220    void PelaajanElamat() 
    221    { 
    222        elamaMittari = new DoubleMeter(50); 
    223        elamaMittari.MaxValue = 25; 
    224        ProgressBar elamaPalkki = new ProgressBar(150, 10); 
    225        elamaPalkki.BindTo(elamaMittari); 
    226        Add(elamaPalkki); 
    227  
    228        elamaPalkki.X = Screen.Right - 150; 
    229        elamaPalkki.Y = Screen.Top - 10; 
    230        elamaPalkki.Angle = Angle.RightAngle; 
    231        elamaPalkki.BarColor = Color.Green; 
    232        elamaPalkki.BorderColor = Color.White; 
    233        elamaPalkki.Angle = Angle.FromDegrees(90); 
    234        elamaMittari.Value = 50; 
    235         
    236        elamaMittari.LowerLimit += PelaajaTuhoutuu; 
    237         
    238    } 
    239    void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde) 
    240    { 
    241        elamaMittari.Value -= 3; 
    242    } 
    243  
    244    void PelaajaTuhoutuu(double mittarinArvo) 
    245    { 
    246        pelaaja.Destroy(); 
    247        MessageDisplay.Add("Dead"); 
    248    } 
    249    void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde) 
    250    { 
    251        elamaMittari.Value -= 5; 
    252    } 
    253    void PelaajaLyo() 
    254    { 
    255        pelaaja.Animation = new Animation(pelaajanAnim); 
    256        pelaaja.Animation.Start(); 
    257        pelaaja.Animation.Played += new Action(AnimValm); 
    258        pelaaja.Animation.FPS = 5; 
    259    } 
    260    void AnimValm() 
    261    { 
    262        pelaaja.Animation.Stop(); 
    263    } 
    264          
    265434} 
    266435 
Note: See TracChangeset for help on using the changeset viewer.