Changeset 4058
- Timestamp:
- 2013-06-10 14:56:38 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2013/24/LauriK/Defend The Computer/Defend The Computer/Defend The Computer/Defend_The_Computer.cs
r4044 r4058 1 using System; 1 #region Alustus ja luokat 2 3 using System; 2 4 using System.Collections.Generic; 3 5 using Jypeli; … … 44 46 ScoreList pistelista; 45 47 46 double pelaajienlukumaara2; 47 double nopeus = 1000; 48 IntMeter pistelaskuri; 49 50 int pelaajienlukumaara2; 51 double nopeus = 100; 48 52 double kaantymisnopeus = 100; 49 double pisteet;50 int highscorekentannro;51 53 [Save] 52 54 int survivalkentannro; … … 54 56 int vaikeustaso; 55 57 [Save] 56 double pelaajienlukumaara; 58 int pelaajienlukumaara; 59 [Save] 60 bool aanetpaalla; 57 61 58 62 string pelaaja1ase = "Luoti"; 59 string pelaaja2ase ;63 string pelaaja2ase = "Luoti"; 60 64 61 65 List<Pelaaja> pelaajat = new List<Pelaaja>(); … … 65 69 double ruudunkoko = 16; 66 70 71 #endregion 72 67 73 public override void Begin() 68 74 { 69 75 ClearAll(); 70 76 77 pistelista = new ScoreList(10, false, 0); 78 71 79 pelaajat.Clear(); 72 80 73 81 IsPaused = true; 74 82 75 Lataakaikki(false, 0 );83 Lataakaikki(false, 0, 0); 76 84 77 85 Alkuvalikko(); … … 80 88 #region Tallennus ja lataus 81 89 82 void UusiKentta(int uusikentannro)83 {84 pistelista = new ScoreList(10, false, 0);85 DataStorage.TryLoad<ScoreList>(pistelista, "Survival" + survivalkentannro + ".xml");86 survivalkentannro = uusikentannro;87 }88 89 90 void Tyhjennanappaimet() 90 91 { 91 92 ClearControls(); 92 93 } 93 94 94 95 void Tallennakaikki() 95 96 { 96 97 SaveGame("Save.xml"); 97 DataStorage.Save<ScoreList>(pistelista, "Survival" + survivalkentannro + ".xml"); 98 } 99 100 void Lataakaikki(bool kentta, int kenttanro) 98 } 99 100 void TallennaLista() 101 { 102 DataStorage.Save<ScoreList>(pistelista, "Survival" + survivalkentannro + pelaajienlukumaara + ".xml"); 103 } 104 105 void Lataakaikki(bool kentta, int kenttanro, int players) 101 106 { 102 107 if (kentta == true) 103 108 { 104 109 pistelista = new ScoreList(10, false, 0); 105 DataStorage.TryLoad<ScoreList>(pistelista, "Survival" + kentta + ".xml");110 DataStorage.TryLoad<ScoreList>(pistelista, "Survival" + kenttanro + players + ".xml"); 106 111 } 107 112 108 113 if (DataStorage.Exists("Save.xml")) LoadGame("Save.xml"); 109 114 } … … 116 121 { 117 122 Tyhjennanappaimet(); 118 119 MultiSelectWindow alkuvalikko = new MultiSelectWindow("", "Start game", "Highscores", "Help", " Exit");123 124 MultiSelectWindow alkuvalikko = new MultiSelectWindow("", "Start game", "Highscores", "Help", "Sounds: " + ((aanetpaalla == true) ? "ON" : "OFF"), "Exit"); 120 125 alkuvalikko.AddItemHandler(0, Valitsepelinlataus); 121 126 alkuvalikko.AddItemHandler(1, Ennatykset); 122 127 alkuvalikko.AddItemHandler(2, Ohjeet); 123 alkuvalikko.AddItemHandler(3, Exit); 124 alkuvalikko.DefaultCancel = 3; 128 alkuvalikko.AddItemHandler(3, delegate 129 { 130 aanetpaalla = !aanetpaalla; 131 Tallennakaikki(); 132 Alkuvalikko(); 133 }); 134 alkuvalikko.AddItemHandler(4, delegate 135 { 136 YesNoWindow ikkuna = new YesNoWindow("Do you want to quit?"); 137 ikkuna.Yes += Exit; 138 ikkuna.No += delegate 139 { 140 ikkuna.Destroy(); 141 Alkuvalikko(); 142 }; 143 Add(ikkuna); 144 }); 145 alkuvalikko.DefaultCancel = 4; 125 146 Add(alkuvalikko); 126 147 127 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Exit");148 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Exit"); 128 149 } 129 150 … … 131 152 { 132 153 Tyhjennanappaimet(); 133 134 MultiSelectWindow valitsepeli = new MultiSelectWindow("Select level", " 1", "2", "Back");154 155 MultiSelectWindow valitsepeli = new MultiSelectWindow("Select level", "Level 1", "Level 2", "Back"); 135 156 valitsepeli.AddItemHandler(0, delegate 136 157 { … … 143 164 Valitsevaikeustaso(); 144 165 }); 145 valitsepeli.AddItemHandler(2, Alkuvalikko);166 valitsepeli.AddItemHandler(2, Valitsepelinlataus); 146 167 valitsepeli.DefaultCancel = 2; 147 168 Add(valitsepeli); … … 154 175 Tyhjennanappaimet(); 155 176 156 MultiSelectWindow alkuvalikko = new MultiSelectWindow("Select level", "Level 1", "Level 2", "Level 3", "Back"); 177 pistelista = new ScoreList(10, false, 0); 178 179 MultiSelectWindow alkuvalikko = new MultiSelectWindow("Select level", "Level 1 (1p)", "Level 1 (2p)", "Level 2 (1p)", "Level 2 (2p)", "Back"); 157 180 alkuvalikko.AddItemHandler(0, delegate 158 181 { 159 Lataakaikki(true, 1); 182 Lataakaikki(true, 1, 1); 183 HighScoreWindow topIkkuna = new HighScoreWindow( 184 "Highscores: Level 1, 1 players", 185 pistelista); 186 topIkkuna.Closed += delegate { Ennatykset(); }; 187 topIkkuna.List.ScoreFormat = "{0:0.##}"; 188 Add(topIkkuna); 160 189 }); 161 190 alkuvalikko.AddItemHandler(1, delegate 162 191 { 163 Lataakaikki(true, 2); 192 Lataakaikki(true, 1, 2); 193 HighScoreWindow topIkkuna = new HighScoreWindow( 194 "Highscores: Level 1, 2 players", 195 pistelista); 196 topIkkuna.Closed += delegate { Ennatykset(); }; 197 topIkkuna.List.ScoreFormat = "{0:0.##}"; 198 Add(topIkkuna); 164 199 }); 165 200 alkuvalikko.AddItemHandler(2, delegate 166 201 { 167 Lataakaikki(true, 3); 168 }); 169 alkuvalikko.AddItemHandler(3, Exit); 170 alkuvalikko.DefaultCancel = 3; 202 Lataakaikki(true, 2, 1); 203 HighScoreWindow topIkkuna = new HighScoreWindow( 204 "Highscores: Level 2, 1 players", 205 pistelista); 206 topIkkuna.Closed += delegate { Ennatykset(); }; 207 topIkkuna.List.ScoreFormat = "{0:0.##}"; 208 Add(topIkkuna); 209 }); 210 alkuvalikko.AddItemHandler(3, delegate 211 { 212 Lataakaikki(true, 2, 2); 213 HighScoreWindow topIkkuna = new HighScoreWindow( 214 "Highscores: Level 2, 2 players", 215 pistelista); 216 topIkkuna.Closed += delegate { Ennatykset(); }; 217 topIkkuna.List.ScoreFormat = "{0:0.##}"; 218 Add(topIkkuna); 219 }); 220 alkuvalikko.AddItemHandler(4, Alkuvalikko); 221 alkuvalikko.DefaultCancel = 4; 171 222 Add(alkuvalikko); 172 223 … … 182 233 { 183 234 Tyhjennanappaimet(); 184 235 185 236 MultiSelectWindow uusipeli = new MultiSelectWindow("Load existing game?", "New game", "Continue game", "Back"); 186 237 uusipeli.AddItemHandler(0, delegate … … 200 251 { 201 252 Tyhjennanappaimet(); 202 253 203 254 MultiSelectWindow pelaajienmaara = new MultiSelectWindow("Select number of players", "1 player", "2 players", "Back"); 204 255 pelaajienmaara.AddItemHandler(0, delegate … … 224 275 { 225 276 Tyhjennanappaimet(); 226 277 227 278 MultiSelectWindow vaikeustasonvalinta = new MultiSelectWindow("Select difficulty", "Easy", "Normal", "Hard", "Insane", "Back"); 228 279 vaikeustasonvalinta.AddItemHandler(0, delegate … … 280 331 } 281 332 282 283 333 #endregion 284 334 … … 288 338 { 289 339 Tallennakaikki(); 340 341 Lataakaikki(true, survivalkentannro, pelaajienlukumaara); 290 342 291 343 ClearAll(); … … 354 406 aikanaytto.Y = Screen.TopSafe - 50; 355 407 } 408 356 409 #endregion 357 410 … … 413 466 suojanimi.Y = pelaaja1suojapalkki.Y + 50; 414 467 Add(suojanimi); 468 469 pistelaskuri = new IntMeter(0); 470 471 Label pistenaytto = new Label(); 472 pistenaytto.X = Screen.Center.X; 473 pistenaytto.Top = Screen.Top - 10; 474 pistenaytto.Color = Color.Green; 475 476 pistenaytto.BindTo(pistelaskuri); 477 Add(pistenaytto); 415 478 416 479 if (pelaajat.Count == 1) return; … … 494 557 Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Shoot (P1)", pelaajat[0]); 495 558 559 Keyboard.Listen(Key.R, ButtonState.Pressed, delegate { pelaajat[0].elamalaskuri.Value -= 50; }, null); 560 561 Keyboard.Listen(Key.Q, ButtonState.Pressed, delegate { pistelaskuri.Value++; }, null, pelaajat[0]); 562 496 563 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Paussivalikko, "Pause"); 497 564 Keyboard.Listen(Key.Back, ButtonState.Pressed, Paussivalikko, "Pause"); … … 504 571 Keyboard.Listen(Key.Left, ButtonState.Down, Kaanna, "Turn (P2)", pelaajat[1], kaantymisnopeus); 505 572 Keyboard.Listen(Key.Right, ButtonState.Down, Kaanna, "Turn (P2)", pelaajat[1], -kaantymisnopeus); 573 Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Ammu, "Shoot (P2)", pelaajat[1]); 506 574 } 507 575 } … … 525 593 } 526 594 527 528 595 void Liikuta(Pelaaja tyyppi, double nopeus) 529 596 { … … 536 603 tyyppi.AngularVelocity = kaantymisnopeus; 537 604 } 605 606 #region Aseet ja ampuminen 538 607 539 608 void Ammu(Pelaaja pelaaja) … … 547 616 } 548 617 549 else 550 { 551 618 else if (pelaajat[1] == pelaaja) 619 { 620 if (pelaaja2ase == "Luoti") 621 { 622 Luoluoti(pelaajat[1].Position, Vector.FromLengthAndAngle(nopeus, pelaajat[1].Angle + Angle.FromDegrees(90))); 623 } 552 624 } 553 554 625 } 555 626 … … 585 656 rajahdys.Force = 0; 586 657 rajahdys.Position = osuja.Position; 658 if (aanetpaalla == false) rajahdys.Sound = null; 587 659 Add(rajahdys); 588 660 589 661 osuja.Destroy(); 590 662 } 663 664 #endregion 665 591 666 void Kuoli(Pelaaja pelaaja) 592 667 { … … 594 669 rajahdys.Position = pelaaja.Position; 595 670 rajahdys.Force = 0; 671 if (aanetpaalla == false) rajahdys.Sound = null; 596 672 Add(rajahdys); 597 673 … … 610 686 #region Vihut 611 687 612 void Luovihu(Vector paikka, double spawnausmatka, double leveys, double korkeus, double damage, string vihuntyyppi, double suunnanvaihtomin, double suunnanvaihtomax, double kaukonopeus, double lahinopeus, double kaukanaolo, int kuolemaaika, Image kuva)688 void Luovihu(Vector paikka, double spawnausmatka, double leveys, double korkeus, double damage, string vihuntyyppi, double suunnanvaihtomin, double suunnanvaihtomax, double kaukonopeus, double lahinopeus, double kaukanaolo, int kuolemaaika, Action<Vihollinen> toiminto, Image kuva) 613 689 { 614 690 Vihollinen vihu = new Vihollinen(leveys, korkeus, kuva); … … 639 715 aivot.FarBrain = satunnaisaivot; 640 716 717 aivot.StopWhenTargetClose = false; 718 719 720 if (toiminto != null) aivot.TargetClose += delegate { toiminto(vihu); }; 721 641 722 vihu.MaximumLifetime = new TimeSpan(0, 0, kuolemaaika); 642 723 … … 646 727 void Vihuspawneri(Vector paikka) 647 728 { 648 //for (int i = 1; i < 10*pelaajienlukumaara; i++)649 729 Timer ajastin = new Timer(); 650 ajastin.Interval = 5;730 ajastin.Interval = RandomGen.NextDouble(1, 5); 651 731 ajastin.Timeout += delegate 652 732 { 653 733 double luku = RandomGen.NextDouble(0, 1000); 654 if (luku < 1 )734 if (luku < 1*vaikeustaso) 655 735 { 656 Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.1, 3, 50, 75, ruudunkoko * 6, 20, null );736 Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.1, 3, 50, 75, ruudunkoko * 6, 20, null, null); 657 737 } 658 738 659 if (luku < 3)739 if (luku < 0.5*vaikeustaso) 660 740 { 661 Luovihu(paikka, ruudunkoko * 6, ruudunkoko *3, ruudunkoko*3, 10, "Uber", 0.1, 1, 50, 25, ruudunkoko * 6, 20, null);741 Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Nopea", 0.1, 1, 50, 40, ruudunkoko * 6, 20, null, null); 662 742 } 743 // delegate(Vihollinen v) { v.Color = Color.Black; } -> Actioniin 663 744 }; 664 745 665 746 ajastin.Start(); 666 747 } 667 668 669 //void Luovirus(Vector paikka, double leveys, double korkeus)670 //{671 // PhysicsObject virus = new PhysicsObject(leveys, korkeus);672 // AddCollisionHandler<PhysicsObject, Pelaaja>(virus, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.suojalaskuri.Value -= 10; });673 // AddCollisionHandler<PhysicsObject, Pelaaja>(virus, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.Hit(kohde.Position - tormaaja.Position.Normalize() * 20000); });674 // Add(virus);675 676 // virus.Tag = "Vihu";677 678 // RandomMoverBrain satunnaisaivot = new RandomMoverBrain();679 // satunnaisaivot.ChangeMovementSeconds = RandomGen.NextDouble(0.1, 3);680 // satunnaisaivot.Speed = 20;681 682 // // FollowerBrain aivot = new FollowerBrain(pelaajat.ToArray());683 // FollowerBrain aivot = new FollowerBrain("Pelaaja", "Seurattava");684 // aivot.Speed = 25;685 // aivot.DistanceFar = 70;686 // aivot.FarBrain = satunnaisaivot;687 688 // virus.Brain = aivot;689 //}690 691 //void Luotroijalainen(Vector paikka, double leveys, double korkeus)692 //{693 // PhysicsObject troijalainen = new PhysicsObject(leveys*0.5, korkeus*0.5);694 // AddCollisionHandler<PhysicsObject, Pelaaja>(troijalainen, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.suojalaskuri.Value -= 20; });695 // AddCollisionHandler<PhysicsObject, Pelaaja>(troijalainen, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.Hit(kohde.Position - tormaaja.Position.Normalize() * 20000); });696 // Add(troijalainen);697 698 // troijalainen.Tag = "Vihu";699 700 // troijalainen.Color = Color.Fuchsia;701 702 // RandomMoverBrain satunnaisaivot = new RandomMoverBrain();703 // satunnaisaivot.ChangeMovementSeconds = RandomGen.NextDouble(0.1, 5);704 // satunnaisaivot.Speed = 20;705 706 // FollowerBrain aivot = new FollowerBrain("Pelaaja", "Seurattava");707 // aivot.Speed = 30;708 // aivot.DistanceFar = 70;709 // aivot.FarBrain = satunnaisaivot;710 // aivot.DistanceClose = 20;711 // aivot.TargetClose += delegate {if(troijalainen.Height < 10) troijalainen.Size = troijalainen.Size * 1.5; };712 713 // troijalainen.Brain = aivot;714 //}715 748 716 749 #endregion … … 751 784 aikalaskuri.Stop(); 752 785 753 pisteet = aikalaskuri.SecondCounter.Value; 786 Lataakaikki(true, survivalkentannro, pelaajienlukumaara); 787 788 pistelaskuri.Value = pistelaskuri.Value += (int)Math.Round(aikalaskuri.SecondCounter.Value); 754 789 755 790 HighScoreWindow topIkkuna = new HighScoreWindow( 756 791 "Highscores", 757 "Congratulations, you made it to the high score list with %ppoints! Enter your name:",758 pistelista, piste et);759 topIkkuna. Closed += delegate { Tallennakaikki(); };760 761 Begin();792 "Congratulations, you made it to the high score list with {0:0.##} points! Enter your name:", 793 pistelista, pistelaskuri); 794 topIkkuna.List.ScoreFormat = "{0:0.##}"; 795 topIkkuna.Closed += delegate { TallennaLista(); Begin(); }; 796 Add(topIkkuna); 762 797 } 763 798
Note: See TracChangeset
for help on using the changeset viewer.