Changeset 911


Ignore:
Timestamp:
2010-06-16 14:57:00 (9 years ago)
Author:
arhetaka
Message:

paljon parannuksia

Location:
2010/24/arhetaka/FysiikkaPeli1/FysiikkaPeli1
Files:
9 added
3 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/arhetaka/FysiikkaPeli1/FysiikkaPeli1/Content/Content.contentproj

    r865 r911  
    7272    </Compile> 
    7373  </ItemGroup> 
     74  <ItemGroup> 
     75    <Compile Include="avaruus.jpg"> 
     76      <Name>avaruus</Name> 
     77      <Importer>TextureImporter</Importer> 
     78      <Processor>TextureProcessor</Processor> 
     79    </Compile> 
     80  </ItemGroup> 
     81  <ItemGroup> 
     82    <Compile Include="galaksi.png"> 
     83      <Name>galaksi</Name> 
     84      <Importer>TextureImporter</Importer> 
     85      <Processor>TextureProcessor</Processor> 
     86    </Compile> 
     87  </ItemGroup> 
     88  <ItemGroup> 
     89    <Compile Include="alus12.png"> 
     90      <Name>alus12</Name> 
     91      <Importer>TextureImporter</Importer> 
     92      <Processor>TextureProcessor</Processor> 
     93    </Compile> 
     94    <Compile Include="alus12_kaasuttaa.png"> 
     95      <Name>alus12_kaasuttaa</Name> 
     96      <Importer>TextureImporter</Importer> 
     97      <Processor>TextureProcessor</Processor> 
     98    </Compile> 
     99  </ItemGroup> 
     100  <ItemGroup> 
     101    <Compile Include="alus22.png"> 
     102      <Name>alus22</Name> 
     103      <Importer>TextureImporter</Importer> 
     104      <Processor>TextureProcessor</Processor> 
     105    </Compile> 
     106    <Compile Include="alus22_kaasuttaa.png"> 
     107      <Name>alus22_kaasuttaa</Name> 
     108      <Importer>TextureImporter</Importer> 
     109      <Processor>TextureProcessor</Processor> 
     110    </Compile> 
     111  </ItemGroup> 
     112  <ItemGroup> 
     113    <Compile Include="asteroidi.png"> 
     114      <Name>asteroidi</Name> 
     115      <Importer>TextureImporter</Importer> 
     116      <Processor>TextureProcessor</Processor> 
     117    </Compile> 
     118  </ItemGroup> 
    74119</Project> 
  • 2010/24/arhetaka/FysiikkaPeli1/FysiikkaPeli1/Peli.cs

    r865 r911  
    55 
    66public class Peli : PhysicsGame 
    7 { 
    8     Vector nopeusYlos = new Vector(0, 200); 
    9     Vector nopeusAlas = new Vector(0, -200); 
    10  
    11     PhysicsObject pallo; 
     7{       
    128    PhysicsObject alus1; 
    139    PhysicsObject alus2; 
     
    1713    PhysicsObject alaReuna; 
    1814    PhysicsObject ylaReuna; 
     15 
     16    int siirtymaLaidassa = 80; 
     17    int reunanetaisyysruudusta = 100; 
    1918 
    2019    IntMeter p1Pisteet; 
     
    2726    DoubleMeter p2specialTeho; 
    2827 
    29     Double specialLifeTime = 1; 
    30  
     28    BarGauge p1health; 
     29    BarGauge p2health; 
     30 
     31    DoubleMeter p1healthmittari; 
     32    DoubleMeter p2healthmittari; 
     33 
     34    Double specialLifeTime = 1.5; 
    3135    Boolean p1specialkentalla = false; 
    3236    Boolean p2specialkentalla = false; 
    33  
    3437    Timer p1specialTimer; 
    3538    Timer p2specialTimer; 
    36  
    37     int specialNopeus = 750; 
     39    int specialNopeus = 500; 
    3840 
    3941    Animation alus1_kaasu_tekst; 
    4042    Animation alus2_kaasu_tekst; 
    41  
    4243    double resolutionX; 
    4344    double resolutionY; 
     
    4546    Timer UpdateTimer; 
    4647    double updateInterval = 0.1; 
    47  
    48     int siirtymaLaidassa = 80; 
    49  
     48         
    5049    bool alus1_kaasuttaa = false; 
    5150    bool alus2_kaasuttaa = false; 
     
    5453    int AlustenHealth = 10; 
    5554    double alustenIlmanvastus = 0.999; 
     55 
     56    int partikkelit = 50; 
    5657 
    5758    protected override void Begin() 
     
    7273    void LuoKentta() 
    7374    { 
     75        TeeGalaksi(); 
     76        TeeAsteroidi(0,0,3, 200);        
    7477        TeeAlukset(); 
    7578        UpDate(); //tekee ajopisteet ja tutkii ovatko alukset vielä kentällä 
    7679        TeeSpecial(); //tekee special aseet ja lisää kuuntelijat 
     80        TeeHealth(); 
    7781        resolutionX = Screen.Width; 
    78         resolutionY = Screen.Height; 
    79         TeeReunat(); 
    80         Level.Background.CreateStars(1000); 
     82        resolutionY = Screen.Height;         
     83        TeeReunat();         
     84        Level.Background.CreateStars(3000); 
    8185        Camera.ZoomToLevel(); 
     86    } 
     87    void TeeGalaksi() 
     88    { 
     89        PhysicsObject galaksi = new PhysicsObject(700, 700); 
     90        galaksi.Image = LoadImage("galaksi"); 
     91        galaksi.IgnoresExplosions = true; 
     92        galaksi.IgnoresCollisionResponse = true; 
     93        galaksi.IgnoresPhysicsLogics = true; 
     94        galaksi.IgnoresGravity = true; 
     95        galaksi.Tag = "galaksi"; 
     96        galaksi.AngularVelocity = -0.1; 
     97        Add(galaksi); 
     98    } 
     99    void TeeAsteroidi(double x, double y, int lukumaara, double maxkoko) 
     100    { 
     101        for (int i = 0; i < lukumaara; i++) 
     102        { 
     103             
     104            double koko = RandomGen.NextDouble(maxkoko/2, maxkoko); 
     105            if (koko > 30) 
     106            { 
     107                PhysicsObject asteroidi = new PhysicsObject(koko, koko); 
     108                asteroidi.Shape = Shapes.Circle; 
     109                asteroidi.Image = LoadImage("asteroidi"); 
     110                asteroidi.Mass = koko * 5; 
     111                asteroidi.IgnoresExplosions = false; 
     112                asteroidi.IgnoresCollisionResponse = false; 
     113                asteroidi.IgnoresPhysicsLogics = false; 
     114                asteroidi.IgnoresGravity = false; 
     115                Vector suunta = Vector.FromLengthAndAngle(RandomGen.NextDouble(0, 5000), RandomGen.NextAngle()); 
     116                asteroidi.X = x;// +suunta.X / 10; 
     117                asteroidi.Y = y;// +suunta.Y / 10; 
     118                asteroidi.Hit(suunta); 
     119                asteroidi.Tag = "asteroidi9"; 
     120                asteroidi.AngularVelocity = RandomGen.NextDouble(-1, 1); 
     121                AddCollisionHandler(asteroidi, AsteroidiOsuu); 
     122                Add(asteroidi); 
     123            } 
     124        } 
    82125    } 
    83126    void TeeAlukset() 
     
    85128        alus1 = LuoAlus(1, Level.Left + 20.0, 0.0); 
    86129        alus1.Tag = "alus1"; 
    87         alus1.Image = LoadImage("alus1"); 
     130        alus1.Image = LoadImage("alus12"); 
     131        alus1.Color = Color.Red; 
    88132 
    89133        Image[] alus_kaasu1 = LoadImages( 
    90         "alus1", 
    91         "alus1_kaasuttaa" 
     134        "alus12", 
     135        "alus12_kaasuttaa" 
    92136        ); 
    93137        alus1_kaasu_tekst = new Animation(alus_kaasu1); 
     
    99143        alus2 = LuoAlus(2, Level.Right - 20.0, 0.0); 
    100144        alus2.Tag = "alus2"; 
    101         alus2.Image = LoadImage("alus2"); 
     145        alus2.Image = LoadImage("alus22"); 
     146        alus2.Color = Color.Blue; 
    102147 
    103148        Image[] alus_kaasu2 = LoadImages( 
    104         "alus2", 
    105         "alus2_kaasuttaa" 
     149        "alus22", 
     150        "alus22_kaasuttaa" 
    106151        ); 
    107152 
     
    119164        vasenReuna.IgnoresPhysicsLogics = true; 
    120165        vasenReuna.Color = Color.White; 
    121         vasenReuna.X = -(resolutionX / 2) - 50; 
     166        vasenReuna.X = -(resolutionX / 2) - reunanetaisyysruudusta; 
    122167        vasenReuna.Restitution = 1.0; 
    123168        vasenReuna.IsVisible = true; 
     
    130175        oikeaReuna.IgnoresPhysicsLogics = true; 
    131176        oikeaReuna.Color = Color.White; 
    132         oikeaReuna.X = (resolutionX / 2) + 50; 
     177        oikeaReuna.X = (resolutionX / 2) + reunanetaisyysruudusta; 
    133178        oikeaReuna.Restitution = 1.0; 
    134179        oikeaReuna.IsVisible = true; 
     
    141186        ylaReuna.IgnoresPhysicsLogics = true; 
    142187        ylaReuna.Color = Color.White; 
    143         ylaReuna.Y = (resolutionY / 2) + 50; 
     188        ylaReuna.Y = (resolutionY / 2) + reunanetaisyysruudusta; 
    144189        ylaReuna.Restitution = 0.0; 
    145190        ylaReuna.IsVisible = true; 
     
    152197        alaReuna.IgnoresPhysicsLogics = true; 
    153198        alaReuna.Color = Color.White; 
    154         alaReuna.Y = -(resolutionY / 2) - 50; 
     199        alaReuna.Y = -(resolutionY / 2) - reunanetaisyysruudusta; 
    155200        alaReuna.Restitution = 0.0; 
    156201        alaReuna.IsVisible = true; 
     
    162207    PhysicsObject LuoAlus(int kumpi, double x, double y) 
    163208    { 
    164         PhysicsObject alus = new PhysicsObject(30.0, 20.0); 
     209        PhysicsObject alus = new PhysicsObject(60.0, 45.0); 
    165210        alus.Shape = Shapes.Rectangle; 
    166211        alus.X = x; 
     
    188233        naytto.Y = y; 
    189234        naytto.ValueColor = Color.White; 
    190         laskuri.UpperLimit += Voitto; 
    191  
    192         Add(naytto); 
     235     //   laskuri.UpperLimit += Voitto; 
     236 
     237       // Add(naytto); 
    193238        return laskuri; 
    194239    } 
     
    196241    { 
    197242 
    198         Keyboard.Listen(Key.A, ButtonState.Down, kaannaVasen, "käännä alusta vasemmalle", alus1,  1); 
    199         Keyboard.Listen(Key.A, ButtonState.Released, pysaytaPyoriminen, null, alus1, 1); 
    200         Keyboard.Listen(Key.D, ButtonState.Down, kaannaOikea, "käännä alusta oikealle", alus1, 1); 
    201         Keyboard.Listen(Key.D, ButtonState.Released, pysaytaPyoriminen, null, alus1, 1); 
    202         Keyboard.Listen(Key.W, ButtonState.Down, kaasua, "kaasu", alus1, 1); 
    203         Keyboard.Listen(Key.W, ButtonState.Released, eikaasua, null, alus1, 1); 
    204         Keyboard.Listen(Key.Tab, ButtonState.Pressed, ammu, null, alus1, 1); 
    205  
    206         Keyboard.Listen(Key.Left, ButtonState.Down, kaannaVasen, "käännä alusta vasemmalle", alus2, 1); 
    207         Keyboard.Listen(Key.Left, ButtonState.Released, pysaytaPyoriminen, null, alus2, 1); 
    208         Keyboard.Listen(Key.Right, ButtonState.Down, kaannaOikea, "käännä alusta oikealle", alus2, 1); 
    209         Keyboard.Listen(Key.Right, ButtonState.Released, pysaytaPyoriminen, null, alus2, 1); 
    210         Keyboard.Listen(Key.Up, ButtonState.Down, kaasua, "kaasu", alus2, 1); 
    211         Keyboard.Listen(Key.Up, ButtonState.Released, eikaasua, null, alus2, 1); 
    212         Keyboard.Listen(Key.RightShift, ButtonState.Pressed, ammu, null, alus2, 1); 
     243        Keyboard.Listen(Key.A, ButtonState.Down, KaannaVasen, "käännä alusta vasemmalle", alus1,  1); 
     244        Keyboard.Listen(Key.A, ButtonState.Released, PysaytaPyoriminen, null, alus1, 1); 
     245        Keyboard.Listen(Key.D, ButtonState.Down, KaannaOikea, "käännä alusta oikealle", alus1, 1); 
     246        Keyboard.Listen(Key.D, ButtonState.Released, PysaytaPyoriminen, null, alus1, 1); 
     247        Keyboard.Listen(Key.W, ButtonState.Down, Kaasua, "kaasu", alus1, 1); 
     248        Keyboard.Listen(Key.W, ButtonState.Released, Eikaasua, null, alus1, 1); 
     249        Keyboard.Listen(Key.Tab, ButtonState.Pressed, Ammu, null, alus1, 1); 
     250 
     251        Keyboard.Listen(Key.Left, ButtonState.Down, KaannaVasen, "käännä alusta vasemmalle", alus2, 1); 
     252        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPyoriminen, null, alus2, 1); 
     253        Keyboard.Listen(Key.Right, ButtonState.Down, KaannaOikea, "käännä alusta oikealle", alus2, 1); 
     254        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPyoriminen, null, alus2, 1); 
     255        Keyboard.Listen(Key.Up, ButtonState.Down, Kaasua, "kaasu", alus2, 1); 
     256        Keyboard.Listen(Key.Up, ButtonState.Released, Eikaasua, null, alus2, 1); 
     257        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, Ammu, null, alus2, 1); 
    213258 
    214259        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     
    216261        Keyboard.Listen(Key.F2, ButtonState.Pressed, AloitaPeli, "uusi peli");         
    217262    }    
    218     void kaannaVasen(PhysicsObject alus, int nopeus) 
     263    void KaannaVasen(PhysicsObject alus, int nopeus) 
    219264    { 
    220265        alus.AngularVelocity = 4; 
    221266    } 
    222     void kaannaOikea(PhysicsObject alus, int nopeus) 
     267    void KaannaOikea(PhysicsObject alus, int nopeus) 
    223268    { 
    224269        alus.AngularVelocity = -4; 
    225270    } 
    226     void pysaytaPyoriminen(PhysicsObject alus, int nopeus) 
     271    void PysaytaPyoriminen(PhysicsObject alus, int nopeus) 
    227272    { 
    228273        alus.AngularVelocity = 0; 
    229274    } 
    230     void kaasua(PhysicsObject alus, int nopeus) 
     275    void Kaasua(PhysicsObject alus, int nopeus) 
    231276    { 
    232277        Angle aluksenKulma = alus.Angle; 
     
    245290 
    246291    } 
    247     void eikaasua(PhysicsObject alus, int nopeus) 
     292    void Eikaasua(PhysicsObject alus, int nopeus) 
    248293    { 
    249294        alus.Animation.Stop(); 
     
    257302        } 
    258303    } 
    259     void ammu(PhysicsObject alus, int nopeus) 
     304    void Ammu(PhysicsObject alus, int nopeus) 
    260305    { 
    261306        PhysicsObject ammus = new PhysicsObject(perusAmmusKoko, perusAmmusKoko); 
     
    268313        TimeSpan elinaika = new TimeSpan(15000000); 
    269314        ammus.MaximumLifetime = elinaika; 
    270         ammus.Tag = alus.Tag; 
     315        ammus.Tag = alus.Tag + "ammus"; 
    271316        AddCollisionHandler(ammus, AmmusOsuu); 
    272317        Add(ammus); 
     
    277322    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde) 
    278323    { 
    279         if (ammus.Tag != kohde.Tag && kohde.Tag != "ajopiste") 
    280         {    
    281             if (ammus.Width != perusAmmusKoko) //jos special 
    282             { 
    283                 if (kohde.Tag == "alus1") 
     324        if (kohde.Tag != "galaksi") 
     325        { 
     326            string ampuja = ammus.Tag.ToString(); 
     327            string uhri = kohde.Tag.ToString(); 
     328 
     329             
     330            if (ampuja[4] != uhri[4] && kohde.Tag != "ajopiste") 
     331            { 
     332                string special = ammus.Tag.ToString(); 
     333                if (special[5] == 's') //jos special 
    284334                { 
    285                     rajaytap2Special(p2specialTimer); 
     335                    if (special[4] == '2') 
     336                    { 
     337                        Rajaytap2Special(p2specialTimer); 
     338                    } 
     339                    else if (special[4] == '1') 
     340                    { 
     341                        Rajaytap1Special(p1specialTimer); 
     342                    }              
    286343                } 
    287344                else 
    288345                { 
    289                     rajaytap1Special(p1specialTimer); 
     346                    Explosion rajahdys; 
     347                    rajahdys = new Explosion(40); 
     348                    rajahdys.Position = ammus.Position; 
     349                    Add(rajahdys);                     
    290350                } 
    291             } 
    292             else  
    293             { 
    294                 Explosion rajahdys; 
    295                 rajahdys = new Explosion(40); 
    296                 rajahdys.Position = ammus.Position; 
    297                 Add(rajahdys); 
    298             } 
    299              
    300             if (kohde.Tag == "alus2") 
    301             { 
    302                 p1Pisteet.Value += (int)(ammus.Width / 3); 
    303             } 
    304             else if (kohde.Tag == "alus1") 
    305             { 
    306                 p2Pisteet.Value += (int)(ammus.Width / 3); 
    307             } 
    308             ammus.Destroy(); 
    309         } 
    310          
     351                if (uhri[1] == 's') 
     352                { 
     353                    double asteroidinenergia = char.GetNumericValue(uhri[9]); 
     354                    if (special[5] == 's') 
     355                    { 
     356                        asteroidinenergia -= (int)(ammus.Width / 3); 
     357                    } 
     358                    else 
     359                    { 
     360                        asteroidinenergia--; 
     361                    } 
     362                    if (asteroidinenergia <= 0) 
     363                    { 
     364                        TeeAsteroidi(kohde.X, kohde.Y, 3, (kohde.Width / 2)); 
     365                        kohde.Destroy(); 
     366                    } 
     367                    else 
     368                    { 
     369                        string uhrinuusitag = "asteroidi"; 
     370                        string uusienergia = asteroidinenergia.ToString(); 
     371                        uhrinuusitag = uhrinuusitag + uusienergia[0]; 
     372                        kohde.Tag = uhrinuusitag; 
     373                    } 
     374 
     375                } 
     376 
     377                if (kohde.Tag == "alus2") 
     378                { 
     379                    p2healthmittari.Value -= (int)(ammus.Width / 3); 
     380                } 
     381                else if (kohde.Tag == "alus1") 
     382                { 
     383                    p1healthmittari.Value -= (int)(ammus.Width / 3); 
     384                } 
     385                ammus.Destroy(); 
     386            } 
     387        } 
    311388    } 
    312389    void AlusOsuu(PhysicsObject alus, PhysicsObject kohde) 
     
    374451        PhysicsObject piste = new PhysicsObject(2, 2); 
    375452        piste.Shape = Shapes.Circle; 
    376         piste.Color = Color.Yellow;piste.IgnoresCollisionResponse = true; 
     453        piste.Color = Color.Yellow; 
     454        piste.IgnoresCollisionResponse = true; 
    377455        piste.Tag = "ajopiste"; 
    378456        piste.X = alus.X; 
     
    387465    void ReunaanOsuu(PhysicsObject reuna, PhysicsObject osuja) 
    388466    { 
    389         if (reuna.Tag == "ylareuna") 
    390         { 
    391             osuja.Y = alaReuna.Y + siirtymaLaidassa; 
    392         } 
    393  
    394         if (reuna.Tag == "alareuna") 
    395         { 
    396             osuja.Y = ylaReuna.Y - siirtymaLaidassa; 
    397         } 
    398         if (reuna.Tag == "vasenreuna") 
    399         { 
    400             osuja.X = (oikeaReuna.X - siirtymaLaidassa); 
    401         } 
    402  
    403         if (reuna.Tag == "oikeareuna") 
    404         { 
    405             osuja.X = (vasenReuna.X + siirtymaLaidassa); 
    406         } 
     467        string asteroidiko = osuja.Tag.ToString(); 
     468        if (asteroidiko[1] != 's')  
     469        { 
     470            if (reuna.Tag == "ylareuna") 
     471            { 
     472                osuja.Y = alaReuna.Y + siirtymaLaidassa; 
     473            } 
     474 
     475            if (reuna.Tag == "alareuna") 
     476            { 
     477                osuja.Y = ylaReuna.Y - siirtymaLaidassa; 
     478            } 
     479            if (reuna.Tag == "vasenreuna") 
     480            { 
     481                osuja.X = (oikeaReuna.X - siirtymaLaidassa); 
     482            } 
     483 
     484            if (reuna.Tag == "oikeareuna") 
     485            { 
     486                osuja.X = (vasenReuna.X + siirtymaLaidassa); 
     487            } 
     488        } 
     489    } 
     490    void TeeHealth() 
     491    { 
     492        p1health = new BarGauge(); 
     493        p1health.Max = AlustenHealth;         
     494        p1healthmittari = new DoubleMeter(AlustenHealth); 
     495        p1healthmittari.MinValue = 0; 
     496        p1healthmittari.LowerLimit += Voitto; 
     497        p1health.BindTo(p1healthmittari); 
     498        p1health.Width = 40;         
     499        p1health.ValueColor = Color.Red; 
     500        p1health.X = Screen.Left + 50; 
     501        p1health.Y = Screen.Top - 100;         
     502        Add(p1health); 
     503 
     504        p2health = new BarGauge(); 
     505        p2health.Max = AlustenHealth; 
     506        p2healthmittari = new DoubleMeter(AlustenHealth); 
     507        p2healthmittari.MinValue = 0; 
     508        p2healthmittari.LowerLimit += Voitto; 
     509        p2health.BindTo(p2healthmittari); 
     510        p2health.Width = 40;         
     511        p2health.ValueColor = Color.Blue; 
     512        p2health.X = Screen.Right - 50; 
     513        p2health.Y = Screen.Top - 100; 
     514        Add(p2health); 
    407515    } 
    408516    void TeeSpecial() 
     
    434542        p1special = new BarGauge(); 
    435543        p1special.Max = 100; 
    436         p1special.ValueColor = Color.LightBlue; 
     544        p1special.ValueColor = Color.LightPink; 
    437545        p1special.BindTo(p1specialTeho); 
    438546        p1special.X = Screen.Left + 100; 
    439         p1special.Y = Screen.Top - 200; 
     547        p1special.Y = Screen.Top - 100; 
    440548        p1special.Width = 40; 
    441549        Add(p1special); 
     
    446554        p2special.BindTo(p2specialTeho); 
    447555        p2special.X = Screen.Right - 100; 
    448         p2special.Y = Screen.Top - 200; 
     556        p2special.Y = Screen.Top - 100; 
    449557        p2special.Width = 40; 
    450558        Add(p2special); 
     
    454562        if (alus.Tag == "alus1" && !p1specialkentalla) 
    455563        { 
    456             p1specialTeho.Value += 2; 
     564            p1specialTeho.Value += 1; 
    457565        } 
    458566        if (alus.Tag == "alus2" && !p2specialkentalla) 
    459567        { 
    460             p2specialTeho.Value += 2; 
     568            p2specialTeho.Value += 1; 
    461569        } 
    462570 
     
    466574        if (alus.Tag == "alus1" && !p1specialkentalla) 
    467575        { 
    468             PhysicsObject ammus = new PhysicsObject((p1specialTeho / 2), (p1specialTeho / 2)); 
     576            PhysicsObject ammus = new PhysicsObject((p1specialTeho / 3), (p1specialTeho / 3)); 
    469577            ammus.Shape = Shapes.Circle; 
    470578            ammus.Color = Color.LightBlue; 
     
    472580            ammus.Y = alus.Y; 
    473581            ammus.IgnoresCollisionResponse = true;             
    474             ammus.Tag = alus.Tag; 
     582            ammus.Tag = alus.Tag + "special"; 
    475583            AddCollisionHandler(ammus, AmmusOsuu); 
    476584            ammus.Image = LoadImage("special"); 
     
    484592            p1specialTimer.Tag = ammus; 
    485593            p1specialTimer.Interval = specialLifeTime; 
    486             p1specialTimer.Trigger += new Timer.TriggerHandler(rajaytap1Special);  //   // asetetaan tapahtuma, kun aikaLaskuri kun 5 sekuntia on kulunut.             
     594            p1specialTimer.Trigger += new Timer.TriggerHandler(Rajaytap1Special);  //   // asetetaan tapahtuma, kun aikaLaskuri kun 5 sekuntia on kulunut.             
    487595            p1specialTimer.Start(); 
    488596            p1specialTeho.Value = 1; 
     
    498606            TimeSpan elinaika = TimeSpan.FromSeconds(specialLifeTime); 
    499607            ammus.MaximumLifetime = elinaika; 
    500             ammus.Tag =alus.Tag; 
     608            ammus.Tag = alus.Tag + "special"; 
    501609            AddCollisionHandler(ammus, AmmusOsuu); 
    502610            ammus.Image = LoadImage("special"); 
     
    510618            p2specialTimer.Tag = ammus; 
    511619            p2specialTimer.Interval = specialLifeTime; 
    512             p2specialTimer.Trigger += new Timer.TriggerHandler(rajaytap2Special);  //   // asetetaan tapahtuma, kun aikaLaskuri kun 5 sekuntia on kulunut.             
     620            p2specialTimer.Trigger += new Timer.TriggerHandler(Rajaytap2Special);  //   // asetetaan tapahtuma, kun aikaLaskuri kun 5 sekuntia on kulunut.             
    513621            p2specialTimer.Start(); 
    514622            p2specialTeho.Value = 1;             
    515623        } 
    516624    } 
    517     private void rajaytap1Special(Timer sender) 
     625    private void Rajaytap1Special(Timer sender) 
    518626    {   
    519         PhysicsObject ammus = (PhysicsObject)sender.Tag; 
     627        PhysicsObject ammus = (PhysicsObject)sender.Tag;        
    520628        Explosion jysays = new Explosion(ammus.Width * 3); 
    521629        jysays.Position = ammus.Position; 
     
    526634        p1specialkentalla = false; 
    527635    } 
    528     private void rajaytap2Special(Timer sender) 
     636    private void Rajaytap2Special(Timer sender) 
    529637    { 
    530638        PhysicsObject ammus = (PhysicsObject)sender.Tag;         
     
    537645        p2specialkentalla = false;     
    538646    } 
    539     void Voitto(int laskuri) 
    540     { 
    541         if (p1Pisteet.Value >= AlustenHealth) 
     647    void Voitto(Double laskuri) 
     648    { 
     649        if (p2healthmittari <= 0) 
    542650        { 
    543651            MessageDisplay.TextColor = Color.White; 
    544652            MessageDisplay.Add("Pelaaja 1 voitti pelin."); 
    545         } 
    546         if (p2Pisteet.Value >= AlustenHealth) 
     653            TuhoaAlus(alus2); 
     654        } 
     655        if (p1healthmittari <= 0) 
    547656        { 
    548657            MessageDisplay.TextColor = Color.White; 
    549658            MessageDisplay.Add("Pelaaja 2 voitti pelin."); 
     659            TuhoaAlus(alus1);             
    550660        }         
    551661    } 
     662    void AsteroidiOsuu(PhysicsObject asteroidi, PhysicsObject kohde) 
     663    { 
     664        if (kohde.Tag == "vasenreuna") 
     665        { 
     666            asteroidi.X = oikeaReuna.X - asteroidi.Width; 
     667        } 
     668        if (kohde.Tag == "oikeareuna") 
     669        { 
     670            asteroidi.X = vasenReuna.X + asteroidi.Width; 
     671        } 
     672        if (kohde.Tag == "ylareuna") 
     673        { 
     674            asteroidi.Y = alaReuna.Y + asteroidi.Width; 
     675        } 
     676        if (kohde.Tag == "alareuna") 
     677        { 
     678            asteroidi.Y = ylaReuna.Y - asteroidi.Width; 
     679        } 
     680    } 
     681    void TuhoaAlus(PhysicsObject alus) 
     682    { 
     683        Explosion jysy = new Explosion(250); 
     684        jysy.X = alus.X; 
     685        jysy.Y = alus.Y; 
     686        Add(jysy); 
     687        for (int i = 0; i < partikkelit; i++) 
     688        { 
     689            PhysicsObject jama = new PhysicsObject(RandomGen.NextInt(1, 20), RandomGen.NextInt(1, 10)); 
     690            bool nelioko = RandomGen.NextBool(); 
     691            if (nelioko) 
     692            { 
     693                jama.Shape = Shapes.Rectangle; 
     694            } 
     695            else 
     696            { 
     697                jama.Shape = Shapes.Triangle; 
     698            } 
     699            nelioko = RandomGen.NextBool(); 
     700            if (nelioko) 
     701            { 
     702                jama.Color = RandomGen.NextColor(Color.Red, Color.Yellow); 
     703            } 
     704            else 
     705            { 
     706                jama.Color = alus.Color; 
     707            } 
     708            jama.X = alus.X; 
     709            jama.Y = alus.Y; 
     710            Vector maiskeenlento = Vector.FromLengthAndAngle(RandomGen.NextDouble(0, 100), RandomGen.NextAngle()); 
     711            TimeSpan eloaika = TimeSpan.FromSeconds(1); 
     712            jama.MaximumLifetime = eloaika; 
     713            jama.Tag = "jamaa"; 
     714            jama.IgnoresCollisionResponse = true; 
     715 
     716            jama.IgnoresExplosions = true; 
     717            jama.IgnoresGravity = true; 
     718            jama.IgnoresPhysicsLogics = true; 
     719            jama.KineticFriction = 0.5; 
     720            jama.LinearDamping = 0.99; 
     721             
     722            jama.Hit(maiskeenlento); 
     723            Add(jama); 
     724        } 
     725        alus.Destroy(); 
     726    } 
    552727} 
Note: See TracChangeset for help on using the changeset viewer.