Changeset 911
- Timestamp:
- 2010-06-16 14:57:00 (13 years ago)
- 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 72 72 </Compile> 73 73 </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> 74 119 </Project> -
2010/24/arhetaka/FysiikkaPeli1/FysiikkaPeli1/Peli.cs
r865 r911 5 5 6 6 public class Peli : PhysicsGame 7 { 8 Vector nopeusYlos = new Vector(0, 200); 9 Vector nopeusAlas = new Vector(0, -200); 10 11 PhysicsObject pallo; 7 { 12 8 PhysicsObject alus1; 13 9 PhysicsObject alus2; … … 17 13 PhysicsObject alaReuna; 18 14 PhysicsObject ylaReuna; 15 16 int siirtymaLaidassa = 80; 17 int reunanetaisyysruudusta = 100; 19 18 20 19 IntMeter p1Pisteet; … … 27 26 DoubleMeter p2specialTeho; 28 27 29 Double specialLifeTime = 1; 30 28 BarGauge p1health; 29 BarGauge p2health; 30 31 DoubleMeter p1healthmittari; 32 DoubleMeter p2healthmittari; 33 34 Double specialLifeTime = 1.5; 31 35 Boolean p1specialkentalla = false; 32 36 Boolean p2specialkentalla = false; 33 34 37 Timer p1specialTimer; 35 38 Timer p2specialTimer; 36 37 int specialNopeus = 750; 39 int specialNopeus = 500; 38 40 39 41 Animation alus1_kaasu_tekst; 40 42 Animation alus2_kaasu_tekst; 41 42 43 double resolutionX; 43 44 double resolutionY; … … 45 46 Timer UpdateTimer; 46 47 double updateInterval = 0.1; 47 48 int siirtymaLaidassa = 80; 49 48 50 49 bool alus1_kaasuttaa = false; 51 50 bool alus2_kaasuttaa = false; … … 54 53 int AlustenHealth = 10; 55 54 double alustenIlmanvastus = 0.999; 55 56 int partikkelit = 50; 56 57 57 58 protected override void Begin() … … 72 73 void LuoKentta() 73 74 { 75 TeeGalaksi(); 76 TeeAsteroidi(0,0,3, 200); 74 77 TeeAlukset(); 75 78 UpDate(); //tekee ajopisteet ja tutkii ovatko alukset vielä kentällä 76 79 TeeSpecial(); //tekee special aseet ja lisää kuuntelijat 80 TeeHealth(); 77 81 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); 81 85 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 } 82 125 } 83 126 void TeeAlukset() … … 85 128 alus1 = LuoAlus(1, Level.Left + 20.0, 0.0); 86 129 alus1.Tag = "alus1"; 87 alus1.Image = LoadImage("alus1"); 130 alus1.Image = LoadImage("alus12"); 131 alus1.Color = Color.Red; 88 132 89 133 Image[] alus_kaasu1 = LoadImages( 90 "alus1 ",91 "alus1 _kaasuttaa"134 "alus12", 135 "alus12_kaasuttaa" 92 136 ); 93 137 alus1_kaasu_tekst = new Animation(alus_kaasu1); … … 99 143 alus2 = LuoAlus(2, Level.Right - 20.0, 0.0); 100 144 alus2.Tag = "alus2"; 101 alus2.Image = LoadImage("alus2"); 145 alus2.Image = LoadImage("alus22"); 146 alus2.Color = Color.Blue; 102 147 103 148 Image[] alus_kaasu2 = LoadImages( 104 "alus2 ",105 "alus2 _kaasuttaa"149 "alus22", 150 "alus22_kaasuttaa" 106 151 ); 107 152 … … 119 164 vasenReuna.IgnoresPhysicsLogics = true; 120 165 vasenReuna.Color = Color.White; 121 vasenReuna.X = -(resolutionX / 2) - 50;166 vasenReuna.X = -(resolutionX / 2) - reunanetaisyysruudusta; 122 167 vasenReuna.Restitution = 1.0; 123 168 vasenReuna.IsVisible = true; … … 130 175 oikeaReuna.IgnoresPhysicsLogics = true; 131 176 oikeaReuna.Color = Color.White; 132 oikeaReuna.X = (resolutionX / 2) + 50;177 oikeaReuna.X = (resolutionX / 2) + reunanetaisyysruudusta; 133 178 oikeaReuna.Restitution = 1.0; 134 179 oikeaReuna.IsVisible = true; … … 141 186 ylaReuna.IgnoresPhysicsLogics = true; 142 187 ylaReuna.Color = Color.White; 143 ylaReuna.Y = (resolutionY / 2) + 50;188 ylaReuna.Y = (resolutionY / 2) + reunanetaisyysruudusta; 144 189 ylaReuna.Restitution = 0.0; 145 190 ylaReuna.IsVisible = true; … … 152 197 alaReuna.IgnoresPhysicsLogics = true; 153 198 alaReuna.Color = Color.White; 154 alaReuna.Y = -(resolutionY / 2) - 50;199 alaReuna.Y = -(resolutionY / 2) - reunanetaisyysruudusta; 155 200 alaReuna.Restitution = 0.0; 156 201 alaReuna.IsVisible = true; … … 162 207 PhysicsObject LuoAlus(int kumpi, double x, double y) 163 208 { 164 PhysicsObject alus = new PhysicsObject( 30.0, 20.0);209 PhysicsObject alus = new PhysicsObject(60.0, 45.0); 165 210 alus.Shape = Shapes.Rectangle; 166 211 alus.X = x; … … 188 233 naytto.Y = y; 189 234 naytto.ValueColor = Color.White; 190 laskuri.UpperLimit += Voitto;191 192 Add(naytto);235 // laskuri.UpperLimit += Voitto; 236 237 // Add(naytto); 193 238 return laskuri; 194 239 } … … 196 241 { 197 242 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); 213 258 214 259 Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); … … 216 261 Keyboard.Listen(Key.F2, ButtonState.Pressed, AloitaPeli, "uusi peli"); 217 262 } 218 void kaannaVasen(PhysicsObject alus, int nopeus)263 void KaannaVasen(PhysicsObject alus, int nopeus) 219 264 { 220 265 alus.AngularVelocity = 4; 221 266 } 222 void kaannaOikea(PhysicsObject alus, int nopeus)267 void KaannaOikea(PhysicsObject alus, int nopeus) 223 268 { 224 269 alus.AngularVelocity = -4; 225 270 } 226 void pysaytaPyoriminen(PhysicsObject alus, int nopeus)271 void PysaytaPyoriminen(PhysicsObject alus, int nopeus) 227 272 { 228 273 alus.AngularVelocity = 0; 229 274 } 230 void kaasua(PhysicsObject alus, int nopeus)275 void Kaasua(PhysicsObject alus, int nopeus) 231 276 { 232 277 Angle aluksenKulma = alus.Angle; … … 245 290 246 291 } 247 void eikaasua(PhysicsObject alus, int nopeus)292 void Eikaasua(PhysicsObject alus, int nopeus) 248 293 { 249 294 alus.Animation.Stop(); … … 257 302 } 258 303 } 259 void ammu(PhysicsObject alus, int nopeus)304 void Ammu(PhysicsObject alus, int nopeus) 260 305 { 261 306 PhysicsObject ammus = new PhysicsObject(perusAmmusKoko, perusAmmusKoko); … … 268 313 TimeSpan elinaika = new TimeSpan(15000000); 269 314 ammus.MaximumLifetime = elinaika; 270 ammus.Tag = alus.Tag ;315 ammus.Tag = alus.Tag + "ammus"; 271 316 AddCollisionHandler(ammus, AmmusOsuu); 272 317 Add(ammus); … … 277 322 void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde) 278 323 { 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 284 334 { 285 rajaytap2Special(p2specialTimer); 335 if (special[4] == '2') 336 { 337 Rajaytap2Special(p2specialTimer); 338 } 339 else if (special[4] == '1') 340 { 341 Rajaytap1Special(p1specialTimer); 342 } 286 343 } 287 344 else 288 345 { 289 rajaytap1Special(p1specialTimer); 346 Explosion rajahdys; 347 rajahdys = new Explosion(40); 348 rajahdys.Position = ammus.Position; 349 Add(rajahdys); 290 350 } 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 } 311 388 } 312 389 void AlusOsuu(PhysicsObject alus, PhysicsObject kohde) … … 374 451 PhysicsObject piste = new PhysicsObject(2, 2); 375 452 piste.Shape = Shapes.Circle; 376 piste.Color = Color.Yellow;piste.IgnoresCollisionResponse = true; 453 piste.Color = Color.Yellow; 454 piste.IgnoresCollisionResponse = true; 377 455 piste.Tag = "ajopiste"; 378 456 piste.X = alus.X; … … 387 465 void ReunaanOsuu(PhysicsObject reuna, PhysicsObject osuja) 388 466 { 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); 407 515 } 408 516 void TeeSpecial() … … 434 542 p1special = new BarGauge(); 435 543 p1special.Max = 100; 436 p1special.ValueColor = Color.Light Blue;544 p1special.ValueColor = Color.LightPink; 437 545 p1special.BindTo(p1specialTeho); 438 546 p1special.X = Screen.Left + 100; 439 p1special.Y = Screen.Top - 200;547 p1special.Y = Screen.Top - 100; 440 548 p1special.Width = 40; 441 549 Add(p1special); … … 446 554 p2special.BindTo(p2specialTeho); 447 555 p2special.X = Screen.Right - 100; 448 p2special.Y = Screen.Top - 200;556 p2special.Y = Screen.Top - 100; 449 557 p2special.Width = 40; 450 558 Add(p2special); … … 454 562 if (alus.Tag == "alus1" && !p1specialkentalla) 455 563 { 456 p1specialTeho.Value += 2;564 p1specialTeho.Value += 1; 457 565 } 458 566 if (alus.Tag == "alus2" && !p2specialkentalla) 459 567 { 460 p2specialTeho.Value += 2;568 p2specialTeho.Value += 1; 461 569 } 462 570 … … 466 574 if (alus.Tag == "alus1" && !p1specialkentalla) 467 575 { 468 PhysicsObject ammus = new PhysicsObject((p1specialTeho / 2), (p1specialTeho / 2));576 PhysicsObject ammus = new PhysicsObject((p1specialTeho / 3), (p1specialTeho / 3)); 469 577 ammus.Shape = Shapes.Circle; 470 578 ammus.Color = Color.LightBlue; … … 472 580 ammus.Y = alus.Y; 473 581 ammus.IgnoresCollisionResponse = true; 474 ammus.Tag = alus.Tag ;582 ammus.Tag = alus.Tag + "special"; 475 583 AddCollisionHandler(ammus, AmmusOsuu); 476 584 ammus.Image = LoadImage("special"); … … 484 592 p1specialTimer.Tag = ammus; 485 593 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. 487 595 p1specialTimer.Start(); 488 596 p1specialTeho.Value = 1; … … 498 606 TimeSpan elinaika = TimeSpan.FromSeconds(specialLifeTime); 499 607 ammus.MaximumLifetime = elinaika; 500 ammus.Tag = alus.Tag;608 ammus.Tag = alus.Tag + "special"; 501 609 AddCollisionHandler(ammus, AmmusOsuu); 502 610 ammus.Image = LoadImage("special"); … … 510 618 p2specialTimer.Tag = ammus; 511 619 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. 513 621 p2specialTimer.Start(); 514 622 p2specialTeho.Value = 1; 515 623 } 516 624 } 517 private void rajaytap1Special(Timer sender)625 private void Rajaytap1Special(Timer sender) 518 626 { 519 PhysicsObject ammus = (PhysicsObject)sender.Tag; 627 PhysicsObject ammus = (PhysicsObject)sender.Tag; 520 628 Explosion jysays = new Explosion(ammus.Width * 3); 521 629 jysays.Position = ammus.Position; … … 526 634 p1specialkentalla = false; 527 635 } 528 private void rajaytap2Special(Timer sender)636 private void Rajaytap2Special(Timer sender) 529 637 { 530 638 PhysicsObject ammus = (PhysicsObject)sender.Tag; … … 537 645 p2specialkentalla = false; 538 646 } 539 void Voitto( intlaskuri)540 { 541 if (p 1Pisteet.Value >= AlustenHealth)647 void Voitto(Double laskuri) 648 { 649 if (p2healthmittari <= 0) 542 650 { 543 651 MessageDisplay.TextColor = Color.White; 544 652 MessageDisplay.Add("Pelaaja 1 voitti pelin."); 545 } 546 if (p2Pisteet.Value >= AlustenHealth) 653 TuhoaAlus(alus2); 654 } 655 if (p1healthmittari <= 0) 547 656 { 548 657 MessageDisplay.TextColor = Color.White; 549 658 MessageDisplay.Add("Pelaaja 2 voitti pelin."); 659 TuhoaAlus(alus1); 550 660 } 551 661 } 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 } 552 727 }
Note: See TracChangeset
for help on using the changeset viewer.