Changeset 401 for arho_m


Ignore:
Timestamp:
2009-08-07 11:26:56 (10 years ago)
Author:
armahlam
Message:
 
Location:
arho_m/Avaruuspeli2
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • arho_m/Avaruuspeli2/Content/Content.contentproj

    r378 r401  
    6868    </Compile> 
    6969  </ItemGroup> 
     70  <ItemGroup> 
     71    <Compile Include="kerattava.png"> 
     72      <Name>kerattava</Name> 
     73      <Importer>TextureImporter</Importer> 
     74      <Processor>TextureProcessor</Processor> 
     75    </Compile> 
     76  </ItemGroup> 
    7077  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    7178  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  
  • arho_m/Avaruuspeli2/Peli.cs

    r378 r401  
    2525        const int PELAAJAN_HP = 1000; 
    2626        PlasmaCannon ase; 
     27 
    2728        BarGauge hitpointNaytto; 
     29        BarGauge pisteNaytto; 
     30        double vaikeustaso = 0; 
     31        int total_pisteet = 0; 
     32        Meter<int> cur_pisteet; 
    2833        #endregion 
    2934 
     
    3338            alustaNaytot(); 
    3439            lataaUusiKentta(); 
     40            MessageDisplay.MessageTimeInSeconds = int.MaxValue; 
    3541        } 
    3642 
     
    4248            // luodaan elämänäyttö 
    4349            hitpointNaytto = new BarGauge(this); 
    44             hitpointNaytto.Size = new Vector2D(30, 250); 
     50            hitpointNaytto.Size = new Vector2D(15, 300); 
    4551            hitpointNaytto.Angle = Angle.Radians(Math.PI / 2); 
    4652            hitpointNaytto.ValueColor = Color.LightGreen; 
    47             hitpointNaytto.BackColor = Color.Red; 
     53            hitpointNaytto.BackColor = Color.DarkRed; 
    4854            hitpointNaytto.Max = PELAAJAN_HP; 
    49             hitpointNaytto.Position = new Vector2D(Screen.RightSafe - 300, Screen.TopSafe - 170); 
     55            hitpointNaytto.Position = new Vector2D(Screen.RightSafe - 300, Screen.BottomSafe + 100); 
    5056            Add(hitpointNaytto); 
     57             
     58            pisteNaytto = new BarGauge(this); 
     59            pisteNaytto.Size = new Vector2D(15, 300); 
     60            pisteNaytto.Angle = Angle.Degrees(270); 
     61            pisteNaytto.ValueColor = Color.White; 
     62            pisteNaytto.BackColor = Color.SteelBlue; 
     63            pisteNaytto.Max = vaikeustaso * 100; 
     64            pisteNaytto.Position = new Vector2D(Screen.LeftSafe + 300, Screen.BottomSafe + 100); 
     65            Add(pisteNaytto); 
    5166        } 
    5267        #endregion 
     
    5772            ClearPhysics(); 
    5873            ClearTimers(); 
     74            MessageDisplay.Clear(); 
    5975 
    6076            Gravity = new Vector2D(-240, 0); 
    61  
     77            vaikeustaso += 1; 
    6278            Level = luoKentta(); 
    6379 
    6480            lisaaNappaimet(); 
    6581            Camera.Follow(pelaaja1); 
    66  
    6782            asetaAjastimet(); 
     83 
     84            if (cur_pisteet != null) 
     85                total_pisteet += cur_pisteet.Value; 
     86 
     87            lisaaPisteMittari(); 
     88            MessageDisplay.Add("Taso " + vaikeustaso); 
     89        } 
     90 
     91        void lisaaPisteMittari() 
     92        { 
     93            cur_pisteet = new Meter<int>(0, 0, (int)(vaikeustaso*100)); 
     94            pisteNaytto.Max = vaikeustaso * 100; 
     95            pisteNaytto.BindTo(cur_pisteet); 
    6896        } 
    6997 
     
    72100            Level kentta = new Level(this, 800, 600); 
    73101            kentta.CreateBorder(); 
    74              
     102 
    75103            kentta.BackgroundColor = Color.Black; 
     104            kentta.LeftBorder.Color = Color.Black; 
     105            kentta.RightBorder.Color = Color.Black; 
     106            kentta.TopBorder.Color = Color.Black; 
     107            kentta.BottomBorder.Color = Color.Black; 
    76108 
    77109            Texture2D bgtex = Content.Load<Texture2D>("bgtex"); 
     
    102134 
    103135            // luodaan ase 
    104             IShape s = Shapes.CreateCircle(16); 
     136            Texture2D am_tex = Content.Load<Texture2D>("ammus"); 
     137            IShape s = Shapes.CreateRectangle(am_tex.Width, am_tex.Height); 
    105138            Projectile ammot = new Projectile("aaaaaa", s, 10.0); 
    106139            ammot.Explosion = new Explosion(0); 
    107140            ammot.Damage = new Damage(200); 
    108             ammot.ExplodeCondition = Projectile.AlwaysTrue; 
    109             ammot.Texture = Content.Load<Texture2D>("ammus"); 
    110             ammot.Size = new Vector2D(32, 32); 
    111              
     141            ammot.ExplodeCondition = onkoPelaaja; 
     142            ammot.Texture = am_tex; 
     143            ammot.FuseTime = new Lifetime(); 
     144            ammot.MomentOfInertia = double.PositiveInfinity; 
    112145 
    113146            ase = new PlasmaCannon(ammot); 
     
    116149            ase.Size = new Vector2D(0, 0); 
    117150            ase.Color = Color.SteelBlue; 
    118             ase.FireRate = 8; 
    119             ase.Power = new Meter<double>(5000, 5000, 5000); 
     151            ase.FireRate = 6; 
     152            ase.Power = new Meter<double>(15000, 15000, 15000); 
    120153            ase.IgnoresGravity = true; 
    121154 
    122155            kentta.Objects.Add(ase); 
     156        } 
     157 
     158        bool onkoPelaaja(Object obj) 
     159        { 
     160            PhysicsObject p = obj as PhysicsObject; 
     161 
     162            if (obj != pelaaja1 && p.Tag != "piste") 
     163                return true; 
     164 
     165            return false; 
    123166        } 
    124167 
     
    127170            // esteiden luominen 
    128171            Timer tm = new Timer(); 
    129             tm.Interval = 2.0; 
     172            tm.Interval = 2.0 / vaikeustaso; 
    130173            tm.Trigger += new Timer.TriggerHandler(spawnEste); 
    131174            tm.Start(); 
     
    134177            // viholliset 
    135178            Timer tm2 = new Timer(); 
    136             tm2.Interval = 1.5; 
     179            tm2.Interval = 1.5 / vaikeustaso; 
    137180            tm2.Trigger += new Timer.TriggerHandler(spawnVihu); 
    138181            tm2.Start(); 
     
    141184            // punaiset seinät 
    142185            Timer tm4 = new Timer(); 
    143             tm4.Interval = 8.0; 
     186            tm4.Interval = 8.0 / vaikeustaso; 
    144187            tm4.Trigger += new Timer.TriggerHandler(spawnPysayttamatonEsine); 
    145188            tm4.Start(); 
     
    148191            /// punaiset isot seinät 
    149192            Timer tm123 = new Timer(); 
    150             tm123.Interval = 12.0; 
     193            tm123.Interval = 12.0 / vaikeustaso; 
    151194            tm123.Trigger += new Timer.TriggerHandler(spawnSeina); 
    152195            tm123.Start(); 
    153196            AddTimer(tm123); 
     197 
     198            // pisteet 
     199            Timer tmx = new Timer(); 
     200            tmx.Interval = 5.0; 
     201            tmx.Trigger += new Timer.TriggerHandler(spawn_kerattava_pallo); 
     202            tmx.Start(); 
     203            AddTimer(tmx); 
    154204        } 
    155205 
     
    166216 
    167217            // Pelaajan 1 näppäimet 
    168             const double nopeus = 450.0; 
     218            const double nopeus = 850.0; 
    169219            Controls.Listen(Keys.Left, ButtonPosition.Down, LiikutaPelaajaa, null, pelaaja1, -nopeus, 0); 
    170220            Controls.Listen(Keys.Right, ButtonPosition.Down, LiikutaPelaajaa, null, pelaaja1, nopeus, 0); 
     
    190240            ammus.Push(ammus.Velocity); //? 
    191241            ammus.IgnoresExplosions = true; 
     242            ammus.Tag = "ammus"; 
     243            ammus.MomentOfInertia = double.PositiveInfinity; 
    192244 
    193245            Level.Objects.Add(ammus); 
     
    224276            if (po == pelaaja1) 
    225277                ase.Destroy(); 
     278            else 
     279                lisaa_pisteita(1); 
    226280 
    227281            if ( pelaaja1.IsDestroyed() ) 
    228                 lopeta_peli(0); 
     282                lopeta_peli(); 
    229283        } 
    230284 
     
    246300        { 
    247301            if (!(collision.Obj is BattleObject && collision.Other is BattleObject)) return; 
     302 
     303            if (collision.Obj == pelaaja1 && collision.Other.Tag == "ammus") 
     304                return; 
    248305 
    249306            Vector2D vek = collision.Obj.Velocity - collision.Other.Velocity; 
     
    390447        } 
    391448 
     449        void spawn_kerattava_pallo(Timer t) 
     450        { 
     451            Texture2D tex_p = Content.Load<Texture2D>("kerattava"); 
     452            IShape pallo_shape = Shapes.CreateCircle(tex_p.Width/2); 
     453 
     454            PhysicsObject p = new PhysicsObject(double.PositiveInfinity, pallo_shape); 
     455            p.Texture = tex_p; 
     456            p.IgnoresCollisionResponse = true; 
     457            p.IgnoresPhysicsLogics = true; 
     458            p.MomentOfInertia = double.PositiveInfinity; 
     459            p.Tag = "piste"; 
     460 
     461            p.X = Level.Right; 
     462            p.Y = RandomGen.NextDouble(Level.Bottom, Level.Top); 
     463 
     464            Timer pt = new Timer(); 
     465            pt.Interval = 1 / 100.0; 
     466            pt.Trigger += new Timer.TriggerHandler(timer_kerattava_pallo); 
     467            pt.Tag = p; 
     468            pt.Start(); 
     469 
     470            AddTimer(pt); 
     471            AddCollisionHandler(p, keraa_piste); 
     472            Level.Objects.Add(p); 
     473        } 
     474 
     475        void keraa_piste(Collision c) 
     476        { 
     477            if (c.Other != pelaaja1) 
     478                return; 
     479 
     480            pelaaja1.HitPoints.Value += PELAAJAN_HP / 10; 
     481            lisaa_pisteita(15); 
     482            c.Obj.Destroy(); 
     483        } 
     484 
     485        void timer_kerattava_pallo(Timer t) 
     486        { 
     487            PhysicsObject p = t.Tag as PhysicsObject; 
     488 
     489            if (p.IsDestroyed()) 
     490            { 
     491                RemoveTimer(t); 
     492                return; 
     493            } 
     494 
     495            p.X -= 5; 
     496 
     497            if (p.X < Level.Left) 
     498            { 
     499                p.Destroy(); 
     500                RemoveTimer(t); 
     501            } 
     502        } 
    392503 
    393504        void instagib(Collision c) 
    394505        { 
    395             if ( c.Other == pelaaja1 ) 
    396                 c.Other.Destroy(); 
     506            if (c.Other != pelaaja1) 
     507                return; 
     508 
     509            pelaaja1.HitPoints.Value = 0; 
     510            //pelaaja1.HitpointsReachedZero(); 
    397511        } 
    398512 
     
    403517        } 
    404518 
    405         void lopeta_peli(int voitto) 
     519        void lisaa_pisteita(int num) 
     520        { 
     521            cur_pisteet.Value += num; 
     522 
     523            if (cur_pisteet.Value >= cur_pisteet.MaxValue) 
     524            { 
     525                lataaUusiKentta(); 
     526            } 
     527 
     528            if (vaikeustaso >= 5.0) 
     529                lopeta_peli(); 
     530        } 
     531 
     532        void lopeta_peli() 
    406533        { 
    407534            MessageDisplay.Clear(); 
    408             MessageDisplay.TextColor = new Color(0, 255, 0); 
    409535            MessageDisplay.AutoSize = false; 
    410536 
    411             if (voitto != 0) 
    412             { 
    413                 MessageDisplay.Add("Onneksi olkoon, pääsit pelin läpi."); 
    414             } 
    415             else 
    416             { 
    417                 MessageDisplay.Add("Hävisit pelin. Yritä uudestaan painamalla enter"); 
    418             } 
     537            ClearPhysics(); 
     538            ClearTimers(); 
     539 
     540            MessageDisplay.Add("Peli loppui siihen. Keräsit yhteensä " + total_pisteet + " pistettä."); 
     541            vaikeustaso = 0; 
     542            total_pisteet = 0; 
     543            cur_pisteet.Value = 0; 
    419544        } 
    420545 
Note: See TracChangeset for help on using the changeset viewer.