Changeset 433


Ignore:
Timestamp:
2009-08-07 14:18:43 (14 years ago)
Author:
jaaannja
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • jaana_j/TaivaanMuna/Peli.cs

    r318 r433  
    1717    class Tasohyppely : PhysicsGame 
    1818    { 
     19         
     20         
    1921        #region Muuttujat 
    2022 
     
    2426        Meter<int> pisteLaskuri; 
    2527        ValueDisplay pisteNaytto; 
     28        Meter<int> siemenLaskuri; 
     29        ValueDisplay siemenNaytto; 
    2630 
    2731        PlatformCharacter pelaaja1; 
    2832        PhysicsObject maali; 
     33        HighScoreList lista; 
    2934 
    3035        int kenttaNro; // monesko kenttä on menossa 
    3136 
    3237        #endregion 
     38 
    3339 
    3440 
     
    3844            // Asetetaan kentän numero nollaksi, jota kasvatetaan kentän latauksessa (aina siis vähintään 1) 
    3945            kenttaNro = 0; 
    40  
    4146            DrawPerimeter = false; //ei haluta piirtää kentän reunoja 
    42  
    4347            // Luodaan pistelaskuri 
    4448            pisteLaskuri = new Meter<int>(0, 0, 1000000); 
     49            siemenLaskuri = new Meter<int>(0, 0, 100000); 
    4550 
    4651            // luodaan pistelaskunäyttö 
    4752            pisteNaytto = new ValueDisplay(this); 
    4853            pisteNaytto.Text = "Pisteitä: "; 
    49             pisteNaytto.X = Screen.RightSafe - 250; 
     54            pisteNaytto.X = Screen.RightSafe - 150; 
    5055            pisteNaytto.Y = Screen.TopSafe - 50; 
    5156            pisteNaytto.BindTo(pisteLaskuri); 
    5257            Add(pisteNaytto);    // lisätään peliin 
    5358 
     59            // luodaan siemennäyttö 
     60            siemenNaytto = new ValueDisplay(this); 
     61            siemenNaytto.Text = "Siemeniä: "; 
     62            siemenNaytto.X = Screen.RightSafe - 150; 
     63            siemenNaytto.Y = Screen.TopSafe - 950; 
     64            siemenNaytto.BindTo(siemenLaskuri); 
     65            Add(siemenNaytto);    // lisätään peliin 
     66 
     67            //luodaan top-10 lista 
     68            lista = HighScoreList.LoadOrCreate(this, "topten.dat", 10); 
     69 
     70 
     71            //Taustamusiikki 
     72 
     73            { 
     74                Song musiikki = Content.Load<Song>("taustamusiikki"); 
     75                MediaPlayer.Play(musiikki); 
     76            } 
     77 
     78 
     79 
    5480            // Asetetaan painovoima 
    5581            Gravity = new Vector2D(0, -1000); 
     
    7298 
    7399            // Laitetaan peliohje näyttöön 
    74             MessageDisplay.Add("Etsi koti linna!"); 
    75             MessageDisplay.Add("Mutta varo tähtiä..."); 
     100            MessageDisplay.Add("Pika ohjeet:"); 
     101            MessageDisplay.Add("1. Etsi koti linna! Pääset maaliin, kun olet saanut 10-pistettä!"); 
     102            MessageDisplay.Add("2. Mutta varo tähtiä! Niillä on ikävät aikomukset...!"); 
     103            MessageDisplay.Add("3. Keräämällä siemenlootia saat ammuksia tähtiä vastaan! Muna ampuu välilyönti-näppäimellä!"); 
     104            MessageDisplay.Add("4. Kun pääset tason 10 läpi, voit päästä ehkäpä top-10 listoille! Onnea!"); 
    76105        } 
    77106        #endregion 
     107 
    78108 
    79109 
     
    87117            lisaaNappaimet(); 
    88118            Camera.Follow(pelaaja1); 
     119             
    89120            return seuraava; 
    90121        } 
     
    92123        Level luoKentta() 
    93124        { 
    94             Level kentta = new Level(this, 2000, 1000); 
     125            Level kentta = new Level(this, 1500, 1400); // Tässä määritetään kentän leveys ja korkeus 
    95126            kentta.CreateBorder(); 
    96127            kentta.Borders.Visible = false; 
     
    102133            kentta.Objects.Add(alusta); 
    103134 
    104             /*lisaaPieniTaso(kentta, -200, -350); 
    105             lisaaPieniTaso(kentta, 0, -200); 
    106             lisaaPieniTaso(kentta, 400, -150); 
    107             lisaaPieniTaso(kentta, 500, 0); 
    108             lisaaPieniTaso(kentta, 400, 100);*/ 
    109  
    110135            for (int i = 0; i < 55; i++) 
    111136            { 
     
    115140            } 
    116141 
     142            int siementenMaara = kenttaNro;  
     143            lisaaSiemenet(kentta, siementenMaara); 
    117144            lisaaMaali(kentta); 
    118145            lisaaPelaajat(kentta); 
    119            // lisaaTahdet(kentta); 
    120  
    121             int vihollistenMaara = kenttaNro; 
     146 
     147            int vihollistenMaara = kenttaNro * 2; 
    122148            lisaaViholliset(kentta, vihollistenMaara); 
    123149 
    124150            return kentta; 
     151        } 
     152 
     153        void lisaaSiemenet(Level kentta, int siementenMaara) 
     154        { 
     155            for (int i = 0; i < siementenMaara; i++) 
     156            { 
     157                PhysicsObject Siemen = new PhysicsObject(5, Shapes.CreateRectangle(25, 25)); 
     158                Siemen.X = RandomGen.NextDouble(kentta.Left, kentta.Right); 
     159                Siemen.Y = RandomGen.NextDouble(200, kentta.Top); 
     160                kentta.Objects.Add(Siemen); 
     161                AddCollisionHandler(Siemen, osuttiinSiemenLootaan); 
     162                Siemen.Texture = Content.Load<Texture2D>("Siemenet"); 
     163               
     164            } 
     165         
    125166        } 
    126167 
     
    131172            taso.X = x; 
    132173            taso.Y = y; 
    133             kentta.Objects.Add(taso); 
    134              
     174            kentta.Objects.Add(taso);             
    135175        } 
    136176 
     
    146186 
    147187            kentta.Objects.Add(pelaaja1); 
    148         } 
    149          
    150         //Keräilee Matosia... :) 
    151         void lisaatahdet(Level kentta) 
    152         { 
    153             for (int i = 0; i < 20; i++) 
    154             { 
    155                 PhysicsObject tahti = new PhysicsObject(0.005, Shapes.CreateCircle(8)); 
    156                 tahti.X = RandomGen.NextDouble(-475.0, 475.0); 
    157                 tahti.Y = 400.0; 
    158                 tahti.Restitution = 1.0; 
    159                 tahti.Texture = Content.Load<Texture2D>("Mato"); 
    160                 AddCollisionHandler(tahti, keraa); 
    161                 kentta.Objects.Add(tahti); 
    162  
    163             } 
    164         } 
    165  
     188 
     189            Texture2D[] munaTex = {    Content.Load<Texture2D>( "Muna" ), 
     190                                       Content.Load<Texture2D>( "Muna" ), 
     191                                       Content.Load<Texture2D>( "Muna1" ), 
     192                                       Content.Load<Texture2D>( "Muna1" ), 
     193                                       Content.Load<Texture2D>( "Muna2" ),  
     194                                       Content.Load<Texture2D>( "Muna2" ), 
     195                                       
     196                                   }; 
     197            pelaaja1.RightIdleTexture = new AnimatedTexture(Content.Load<Texture2D>("Muna")); 
     198            //pelaaja1.AnimatedTexture = new AnimatedTexture(munaTex); 
     199            pelaaja1.RightWalkingTexture = new AnimatedTexture(munaTex); 
     200            pelaaja1.LeftWalkingTexture = new AnimatedTexture(munaTex); 
     201             
     202             
     203        } 
     204 
     205        
    166206        void lisaaMaali(Level kentta) 
    167207        { 
     
    183223                vihollinen.X = maali.X; 
    184224                vihollinen.Y = maali.Y; 
     225                vihollinen.Tag = "pahis"; 
    185226                vihollinen.IgnoresGravity = true; 
    186227                vihollinen.Texture = Content.Load<Texture2D>("tahti"); 
     
    192233 
    193234 
     235 
    194236        #region Nappaimet 
    195237        // Lisää peliin kaikki näppäimet 
     
    204246            Controls.Listen(Keys.Right, ButtonPosition.Down, liikuta, "Liikkuu oikealle", pelaaja1, new Vector2D(liikeVoima, 0)); 
    205247            Controls.Listen(Keys.Up, ButtonPosition.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima); 
     248            Controls.Listen(Keys.Space, ButtonPosition.Pressed, heitaSiemen, "Heitä", pelaaja1); 
    206249 
    207250            lisaaGamePadNappaimet(PlayerIndex.One, pelaaja1); 
     
    217260            Controls.Listen(pelaajaNro, Buttons.A, ButtonPosition.Pressed, hyppaa, "Pelaaja hyppää", pelaaja, hyppyVoima); 
    218261        } 
     262 
    219263        // Näppäimiin liitetyt toiminnot alkavat tästä --> 
    220264        bool liikuta(ControlEvent e) 
     
    238282        } 
    239283 
    240         bool uusiPeli(ControlEvent e) 
     284        bool heitaSiemen(ControlEvent e) 
     285        { 
     286            if (siemenLaskuri.Value > 0) 
     287            { 
     288                //Bullet siemen = new Bullet(); 
     289                //siemen.Texture = Content.Load<Texture2D>("Siemen"); 
     290                PhysicsObject siemen = new PhysicsObject(5, Shapes.CreateCircle(5)); 
     291                Vector2D v = new Vector2D(-3000, 200); 
     292                siemen.Texture = Content.Load<Texture2D>("Siemen1"); 
     293                Level.Objects.Add(siemen); 
     294                AddCollisionHandler(siemen, siemenOsui); 
     295                siemen.X = pelaaja1.X; 
     296                siemen.Y = pelaaja1.Y; 
     297                siemen.Hit(v); 
     298                siemenLaskuri.Value--; 
     299                 
     300            } 
     301            return false; 
     302        } 
     303 
     304         bool uusiPeli(ControlEvent e) 
    241305        { 
    242306            aloitaUusiPeli(); 
     
    244308        } 
    245309        #endregion 
     310 
     311 
    246312 
    247313        #region Tapahtumat 
     
    251317            if (collision.Other.Tag == "maali" && pisteLaskuri.Value>19) 
    252318            { 
     319                if (kenttaNro == 10) 
     320                { 
     321                    peliLoppui(); 
     322                } 
     323 
    253324                maali.Texture = Content.Load<Texture2D>("maali"); 
    254325                this.PlaySound("maali"); 
     
    256327                Level = seuraavaKentta(); 
    257328                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet); 
    258             } 
     329 
     330            } 
     331        } 
     332 
     333        void peliLoppui() 
     334        { 
     335            lista.Show( pisteLaskuri.Value ); 
    259336        } 
    260337 
     
    270347                //Miten tehtäsiin se, että pilvi ilmestyisi takaisin muutaman sekunnin päästä...? 
    271348                pisteLaskuri.Value += 1; 
    272  
    273  
    274349            } 
    275350        } 
     
    281356                PhysicsObject tahti = collision.Obj; 
    282357                tahti.Destroy(); 
    283  
    284358                this.PlaySound("kerays", -0.5, 0.5); 
    285                  
    286             } 
     359             } 
     360        } 
     361 
     362        // Kerää Siemenen 
     363        void osuttiinSiemenLootaan(Collision collision) 
     364        { 
     365            if (collision.Other.Equals(pelaaja1)) 
     366            { 
     367                PhysicsObject Siemen = collision.Obj; 
     368                Siemen.Destroy(); 
     369                this.PlaySound("kerays", -0.5, 0.5); 
     370                siemenLaskuri.Value += 10; // Lisätään siemenlaskuriin 10 panosta lisää 
     371            } 
     372        } 
     373 
     374        void siemenOsui(Collision collision) 
     375        { 
     376            if (collision.Other is PlatformCharacter) 
     377            { 
     378                PlatformCharacter pc = collision.Other as PlatformCharacter; 
     379                if (pc.Tag == "pahis") 
     380                { 
     381                    pc.Destroy(); 
     382                } 
     383            } 
     384          
     385 
    287386        } 
    288387 
     
    303402                collision.Other.Hit(new Vector2D(luku1, luku2)); 
    304403            } 
    305         } 
     404 
     405 
     406        } 
     407 
     408 
     409        //Tässä pitäisi olla se, missä tehdään taustamuiikkia 
     410        
     411 
     412 
    306413        #endregion 
    307414    } 
Note: See TracChangeset for help on using the changeset viewer.