Changeset 2823
- Timestamp:
- 2012-06-06 21:55:27 (11 years ago)
- Location:
- 2012/23/LeoL
- Files:
-
- 7 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2012/23/LeoL/Tasohyppelypeli1.cs
r2819 r2823 9 9 public class tasohyppelypeli : PhysicsGame 10 10 { 11 DoubleMeter elamaMittari; 11 string CurrentLevelFile = String.Empty; 12 13 DoubleMeter elamaMittari; 12 14 Image Ampujankuva = LoadImage("Ampuja"); 13 15 Image DemoninKuva = LoadImage("Dem1.anm"); 14 16 Image olionKuva = LoadImage("cafgar.anm"); 17 Image magenKuva = LoadImage("Mage"); 15 18 Image[] pelaajanAnim = LoadImages("pelaaja", "Pelaaja2", "Pelaaja3"); 16 double nopeusYlos = 1250; 19 Image[] pelaajanAnimPeilattu; 20 21 double nopeusYlos = 1250; 17 22 Vector nopeusOikea = new Vector(250, 0); 18 23 Vector nopeusVasen = new Vector(-250, 0); 19 24 Image pelaajanKuva = LoadImage("pelaaja"); 20 25 21 26 PlatformCharacter pelaaja; 22 27 23 28 public override void Begin() 24 29 { 30 ClearAll(); 31 MultiSelectWindow valikko = new MultiSelectWindow("Welcome to game", 32 "tutorial", "Start level 1", "Start level 2", "End"); 33 valikko.ItemSelected += PainettiinValikonNappia; 34 Add(valikko); 25 35 26 36 27 LuoKenttä(); 28 lataaKenttä(); 29 AsetaOhjaimet(); 30 31 32 33 } 34 35 void lataaKenttä() 36 { 37 } 38 39 void LuoKenttä() 40 { 41 TileMap ruudut = TileMap.FromLevelAsset("kartta"); 37 38 39 } 40 void 41 42 lataaKenttä() 43 { 44 } 45 46 void LuoKenttä(string levelFile) 47 { 48 TileMap ruudut = TileMap.FromLevelAsset(levelFile); 42 49 ruudut.SetTileMethod('_', LuoPalikka); 43 50 ruudut.SetTileMethod('.', LuoSeina); … … 47 54 ruudut.SetTileMethod('#', LuoDemoni); 48 55 ruudut.SetTileMethod('-', LuoAmpuja); 56 ruudut.SetTileMethod('=', LuoMaali); 57 ruudut.SetTileMethod(';', LuoMage); 49 58 ruudut.Execute(20, 20); 50 59 Level.Background.Color = Color.ForestGreen; 51 60 Camera.Follow(pelaaja); 52 61 Gravity = new Vector(0, -5000); 62 63 CurrentLevelFile = levelFile; 53 64 } 54 65 … … 84 95 { 85 96 Keyboard.Listen(Key.Escape, ButtonState.Down, ConfirmExit, "Poistu pelistä"); 86 87 97 Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja liikkuu vasemmalle", pelaaja, nopeusVasen); 88 98 Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); … … 91 101 Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 92 102 Keyboard.Listen(Key.E, ButtonState.Pressed, PelaajaLyo, null); 103 Keyboard.Listen(Key.Q, ButtonState.Pressed, PelaajaLyo2, null); 93 104 } 94 105 … … 97 108 pelaaja = new PlatformCharacter(20, 40); 98 109 pelaaja.Position = paikka; 99 110 100 111 pelaaja.Color = Color.Aquamarine; 101 112 pelaaja.Image = pelaajanKuva; … … 105 116 AddCollisionHandler(pelaaja, "Ampuja", PelaajaMenettaa2); 106 117 AddCollisionHandler(pelaaja, "cafgar", PelaajaMenettaa2); 118 AddCollisionHandler(pelaaja, "maali", SaavutitMaalin); 107 119 PelaajanElamat(); 108 120 pelaaja.Mass = 5000; 109 121 pelaaja.Weapon = new PlasmaCannon(20, 5); 122 pelaaja.Weapon.IsVisible = false; 123 110 124 Add(pelaaja); 111 125 } … … 116 130 } 117 131 118 119 120 void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde 132 133 134 void PelaajaKuolee(PhysicsObject pelaaja, PhysicsObject kohde) 121 135 { 122 136 pelaaja.Destroy(); 123 137 Replay(); 138 124 139 } 125 140 void LuoCafgar(Vector paikka, double leveys, double korkeus) … … 143 158 AddCollisionHandler(Demoni, "piikki", DemoniKuolee); 144 159 AddCollisionHandler(Demoni, "Ampuja", DemoniKuolee); 160 AddCollisionHandler(Demoni, "ammus", DemoniKuolee); 145 161 Demoni.Mass = 500; 146 162 Add(Demoni); … … 153 169 { 154 170 FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 155 seuraajanAivot.Speed = 150; 156 seuraajanAivot.TargetFollowDistance = 200; 157 seuraajanAivot.FollowAlways = true; 158 seuraajanAivot.TargetCloseDistance = 20; 159 160 171 seuraajanAivot.Speed = 150; 172 seuraajanAivot.TargetFollowDistance = 200; 173 seuraajanAivot.FollowAlways = true; 174 seuraajanAivot.TargetCloseDistance = 20; 175 176 177 178 seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella; 179 return seuraajanAivot; 180 } 181 182 183 void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e) 184 { 185 } 186 void DemoniKuolee(PhysicsObject Demoni, PhysicsObject kohde) 187 { 188 Demoni.Destroy(); 189 } 190 Brain AivotAmpuja() 191 { 192 FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 193 seuraajanAivot.Speed = 0; 194 seuraajanAivot.TargetFollowDistance = 200; 195 seuraajanAivot.FollowAlways = true; 196 seuraajanAivot.TargetCloseDistance = 200; 197 198 199 200 seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2; 201 return seuraajanAivot; 202 } 203 204 205 void mitaTapahtuuKunOllaanLahella2(object lahettajaAivot, EventArgs e) 206 { 207 ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle; 208 PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot(); 209 if (ammus != null) 210 { 211 AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2); 212 ammus.Tag = "ammus"; 213 } 214 } 215 void LuoAmpuja(Vector paikka, double leveys, double korkeus) 216 { 217 218 PlatformCharacter Ampuja = new PlatformCharacter(20, 20); 219 Ampuja.IgnoresGravity = true; 220 Ampuja.IgnoresPhysicsLogics = true; 221 Ampuja.MaxVelocity = 0.0; 222 Ampuja.Position = paikka; 223 Ampuja.Image = Ampujankuva; 224 Ampuja.Color = Color.Black; 225 Ampuja.Tag = "Ampuja"; 226 Ampuja.Brain = AivotAmpuja(); 227 Ampuja.Weapon = new PlasmaCannon(5, 3); 228 Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1); 229 Add(Ampuja); 230 } 231 void PelaajaMenettaa() 232 { 233 } 234 void PelaajanElamat() 235 { 236 elamaMittari = new DoubleMeter(50); 237 elamaMittari.MaxValue = 25; 238 ProgressBar elamaPalkki = new ProgressBar(150, 10); 239 elamaPalkki.BindTo(elamaMittari); 240 Add(elamaPalkki); 241 242 elamaPalkki.X = Screen.Right - 150; 243 elamaPalkki.Y = Screen.Top - 10; 244 elamaPalkki.Angle = Angle.RightAngle; 245 elamaPalkki.BarColor = Color.Green; 246 elamaPalkki.BorderColor = Color.White; 247 elamaPalkki.Angle = Angle.FromDegrees(90); 248 elamaMittari.Value = 50; 249 250 elamaMittari.LowerLimit += PelaajaTuhoutuu; 251 252 253 } 254 void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde) 255 { 256 elamaMittari.Value -= 3; 257 } 258 259 void PelaajaTuhoutuu(double mittarinArvo) 260 { 261 pelaaja.Destroy(); 262 MessageDisplay.Add("Dead"); 263 Replay(); 264 } 265 void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde) 266 { 267 elamaMittari.Value -= 5; 268 } 269 void PelaajaLyo() 270 { 271 pelaaja.Animation = new Animation(pelaajanAnim); 272 pelaaja.Animation.Start(); 273 pelaaja.Animation.Played += new Action(AnimValm); 274 pelaaja.Animation.FPS = 5; 275 } 276 void AnimValm() 277 { 278 pelaaja.Animation.Stop(); 279 } 280 void PelaajaLyo2() 281 { 282 pelaaja.Animation = new Animation(pelaajanAnimPeilattu); 283 pelaaja.Animation.Start(); 284 pelaaja.Animation.Played += new Action(AnimValm2); 285 pelaaja.Animation.FPS = 5; 286 } 287 void AnimValm2() 288 { 289 pelaaja.Animation.Stop(); 290 } 291 void PainettiinValikonNappia(int valinta) 292 { 293 switch (valinta) 294 { 295 case 0: 296 Aloitus("Tutorial map"); 297 break; 298 299 case 1: 300 Aloitus("kartta"); 301 break; 302 303 case 2: 304 Aloitus("Kentta2"); 305 break; 306 307 case 3: 308 Exit(); 309 break; 310 } 311 } 312 void Aloitus(string levelFile) 313 { 314 315 pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim); 316 317 LuoKenttä(levelFile); 318 lataaKenttä(); 319 AsetaOhjaimet(); 320 } 161 321 162 seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella; 163 return seuraajanAivot; 164 } 165 322 323 void LuoMaali(Vector paikka, double leveys, double korkeus) 324 { 325 PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 40); 326 maali.Position = paikka; 327 maali.Shape = Shape.Pentagon ; 328 maali.Tag = "maali"; 329 maali.Color = Color.Blue; 330 331 Add(maali); 332 } 333 void SaavutitMaalin(PhysicsObject pelaaja, PhysicsObject kohde) 334 { 335 YouWin(); 336 } 337 void Replay() 338 { 339 ClearAll(); 340 MultiSelectWindow valikko2 = new MultiSelectWindow("You Died", 341 "Replay", "Menu", "End"); 342 valikko2.ItemSelected += PainettiinValikonNappia2; 343 Add(valikko2); 344 } 345 void PainettiinValikonNappia2(int valinta) 346 { 347 switch (valinta) 348 { 349 350 case 0: 351 AloitaUudelleen(); 352 break; 353 354 case 1: 355 Begin(); 356 break; 357 358 case 2: 359 Exit(); 360 break; 361 } 362 } 363 void YouWin() 364 { 365 ClearAll(); 366 MultiSelectWindow valikko3 = new MultiSelectWindow("You Win", 367 "Replay", "Menu", "End"); 368 valikko3.ItemSelected += PainettiinValikonNappia3; 369 Add(valikko3); 370 } 371 void PainettiinValikonNappia3(int valinta) 372 { 373 switch (valinta) 374 { 375 case 0: 376 AloitaUudelleen(); 377 break; 378 379 case 1: 380 Begin(); 381 break; 382 383 case 2: 384 Exit(); 385 break; 386 } 387 } 388 389 void AloitaUudelleen() 390 { 391 ClearAll(); 392 pelaajanAnimPeilattu = Image.Mirror(pelaajanAnim); 393 394 LuoKenttä(CurrentLevelFile); 395 lataaKenttä(); 396 AsetaOhjaimet(); 397 } 398 Brain AivotMage() 399 { 400 FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja); 401 seuraajanAivot.Speed = 20; 402 seuraajanAivot.TargetFollowDistance = 200; 403 seuraajanAivot.FollowAlways = true; 404 seuraajanAivot.TargetCloseDistance = 300; 405 406 407 408 seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella3; 409 return seuraajanAivot; 410 } 411 412 413 void mitaTapahtuuKunOllaanLahella3(object lahettajaAivot, EventArgs e) 414 { 415 ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle; 416 PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot(); 417 if (ammus != null) 418 { 419 AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2); 420 ammus.Tag = "ammus"; 421 } 422 } 423 void LuoMage(Vector paikka, double leveys, double korkeus) 424 { 425 PhysicsObject Mage = PhysicsObject.CreateStaticObject(20, 40); 426 Mage.Position = paikka; 427 Mage.Image = magenKuva; 428 Mage.Color = Color.Black; 429 Mage.Tag = "mage"; 430 Mage.Brain = AivotMage(); 431 Add(Mage); 432 } 166 433 167 void mitaTapahtuuKunOllaanLahella(object lahettajaAivot, EventArgs e)168 {169 }170 void DemoniKuolee(PhysicsObject Demoni, PhysicsObject kohde)171 {172 173 174 Demoni.Destroy();175 }176 Brain AivotAmpuja()177 {178 FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);179 seuraajanAivot.Speed = 0;180 seuraajanAivot.TargetFollowDistance = 200;181 seuraajanAivot.FollowAlways = true;182 seuraajanAivot.TargetCloseDistance = 200;183 184 185 186 seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella2;187 return seuraajanAivot;188 }189 190 191 void mitaTapahtuuKunOllaanLahella2 (object lahettajaAivot, EventArgs e)192 {193 ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Angle = (pelaaja.Position - (lahettajaAivot as Brain).Owner.Position).Angle;194 PhysicsObject ammus = ((lahettajaAivot as Brain).Owner as PlatformCharacter).Weapon.Shoot();195 if (ammus != null)196 {197 AddCollisionHandler(ammus, pelaaja, PelaajaMenettaa2);198 AddCollisionHandler(ammus, "vihu", DemoniKuolee);199 }200 }201 void LuoAmpuja(Vector paikka, double leveys, double korkeus)202 {203 204 PlatformCharacter Ampuja = new PlatformCharacter(20, 20);205 Ampuja.IgnoresGravity = true;206 Ampuja.IgnoresPhysicsLogics = true;207 Ampuja.MaxVelocity = 0.0;208 Ampuja.Position = paikka;209 Ampuja.Image = Ampujankuva;210 Ampuja.Color = Color.Black;211 Ampuja.Tag = "Ampuja";212 Ampuja.Brain = AivotAmpuja();213 Ampuja.Weapon = new PlasmaCannon(5, 3);214 Ampuja.Weapon.TimeBetweenUse = TimeSpan.FromSeconds(1);215 Add(Ampuja);216 }217 void PelaajaMenettaa()218 {219 }220 void PelaajanElamat()221 {222 elamaMittari = new DoubleMeter(50);223 elamaMittari.MaxValue = 25;224 ProgressBar elamaPalkki = new ProgressBar(150, 10);225 elamaPalkki.BindTo(elamaMittari);226 Add(elamaPalkki);227 228 elamaPalkki.X = Screen.Right - 150;229 elamaPalkki.Y = Screen.Top - 10;230 elamaPalkki.Angle = Angle.RightAngle;231 elamaPalkki.BarColor = Color.Green;232 elamaPalkki.BorderColor = Color.White;233 elamaPalkki.Angle = Angle.FromDegrees(90);234 elamaMittari.Value = 50;235 236 elamaMittari.LowerLimit += PelaajaTuhoutuu;237 238 }239 void PelaajaMenettaa(PhysicsObject pelaaja, PhysicsObject kohde)240 {241 elamaMittari.Value -= 3;242 }243 244 void PelaajaTuhoutuu(double mittarinArvo)245 {246 pelaaja.Destroy();247 MessageDisplay.Add("Dead");248 }249 void PelaajaMenettaa2(PhysicsObject pelaaja, PhysicsObject kohde)250 {251 elamaMittari.Value -= 5;252 }253 void PelaajaLyo()254 {255 pelaaja.Animation = new Animation(pelaajanAnim);256 pelaaja.Animation.Start();257 pelaaja.Animation.Played += new Action(AnimValm);258 pelaaja.Animation.FPS = 5;259 }260 void AnimValm()261 {262 pelaaja.Animation.Stop();263 }264 265 434 } 266 435
Note: See TracChangeset
for help on using the changeset viewer.