Changeset 3976 for 2013/23/Jon-ErikK/magnetaa.cs
- Timestamp:
- 2013-06-05 14:28:35 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2013/23/Jon-ErikK/magnetaa.cs
r3971 r3976 8 8 9 9 public class magnetaa : PhysicsGame 10 { 11 PhysicsObject pelaaja1; 12 PhysicsObject pelaaja2; 10 { 11 IntMeter pelaaja1Elamat; 12 IntMeter pelaaja2Elamat; 13 14 Pelaaja pelaaja1; 15 Pelaaja pelaaja2; 13 16 14 17 PhysicsObject ylaraja; … … 17 20 PhysicsObject vasenraja; 18 21 19 bool onkoMagneettinen1;20 bool onkoMagneettinen2;21 22 22 List<Ammus> ammukset; 23 24 Vector edellinenNopeusPelaaja1;25 Vector edellinenNopeusPelaaja2;26 23 27 24 Vector ylos = new Vector(0, 100); … … 34 31 ammukset = new List<Ammus>(); 35 32 36 onkoMagneettinen1 = true; 37 onkoMagneettinen1 = false; 38 39 edellinenNopeusPelaaja2 = new Vector(0, -400); 40 edellinenNopeusPelaaja1 = new Vector(0, 400); 41 42 luoKentta(0,100,0,-100); 33 luoKentta(-300,0,300,0,new Vector(0,1), new Vector(0,-1)); 43 34 asetaNappaimet(); 44 35 } 45 36 46 public void luoKentta(double pelaaja1x, double pelaaja1y, double pelaaja2x, double pelaaja2y) { 47 48 pelaaja1 = luoPelaaja(pelaaja1x, pelaaja1y); 49 pelaaja2 = luoPelaaja(pelaaja2x, pelaaja2y); 50 37 //pelikentän säätäminen alkaa 38 39 public void uusiPeli() 40 { 41 ClearAll(); 42 Begin(); 43 } 44 45 public void luoKentta(double pelaaja1x, double pelaaja1y, double pelaaja2x, double pelaaja2y, Vector alkusuunta1, Vector alkusuunta2) { 46 47 luoKentanOsat(); 48 49 pelaaja1 = luoPelaaja(pelaaja1x, pelaaja1y, alkusuunta1, 1); 50 pelaaja2 = luoPelaaja(pelaaja2x, pelaaja2y, alkusuunta2, 2); 51 52 } 53 54 public void luoKentanOsat() 55 { 51 56 Level.BackgroundColor = Color.Black; 52 57 58 luoTausta(); 59 luoKentanReunat(); 60 luoLaskurit(); 61 62 } 63 64 public void luoKentanReunat() 65 { 53 66 alaraja = Level.CreateBottomBorder(); 54 alaraja. IsVisible = true;67 alaraja.Color = Color.Charcoal; 55 68 56 69 ylaraja = Level.CreateTopBorder(); 57 ylaraja. IsVisible = true;70 ylaraja.Color = Color.Charcoal; 58 71 59 72 oikearaja = Level.CreateRightBorder(); 60 oikearaja. IsVisible = true;73 oikearaja.Color = Color.Charcoal; 61 74 62 75 vasenraja = Level.CreateLeftBorder(); 63 vasenraja.IsVisible = true; 64 } 65 66 public PhysicsObject luoPelaaja(double x, double y) { 67 68 PhysicsObject pelaaja = PhysicsObject.CreateStaticObject(50, 50); 69 pelaaja.Shape = Shape.Circle; 70 pelaaja.X = x; 71 pelaaja.Y = y; 72 pelaaja.MaxVelocity = 100.0; 76 vasenraja.Color = Color.Charcoal; 77 78 79 } 80 81 public void luoTausta() 82 { 83 GameObject sivusuorakulmio1 = new GameObject(300, Screen.Height); 84 sivusuorakulmio1.Color = Color.Charcoal; 85 sivusuorakulmio1.X = -650; 86 sivusuorakulmio1.Y = 0; 87 88 GameObject sivusuorakulmio2 = new GameObject(300, Screen.Height); 89 sivusuorakulmio2.Color = Color.Charcoal; 90 sivusuorakulmio2.X = 650; 91 sivusuorakulmio2.Y = 0; 92 93 Add(sivusuorakulmio1); 94 Add(sivusuorakulmio2); 95 96 GameObject tasoOikea = new GameObject(300, Level.Height); 97 tasoOikea.Shape = Shape.Rectangle; 98 tasoOikea.X =Level.Right-150; 99 tasoOikea.Y = 0; 100 tasoOikea.Color = Color.Silver; 101 102 GameObject tasoVasen = new GameObject(300, Level.Height); 103 tasoVasen.Shape = Shape.Rectangle; 104 tasoVasen.X = Level.Left+150; 105 tasoVasen.Y = 0; 106 tasoVasen.Color = Color.Silver; 107 108 Add(tasoOikea,-3); 109 Add(tasoVasen,-3); 110 } 111 112 public void luoLaskurit() 113 { 114 pelaaja1Elamat = new IntMeter(5); 115 Label pistenaytto1 = new Label(); 116 pistenaytto1.X = Screen.Left + 100; 117 pistenaytto1.Y = Screen.Top - 130; 118 pistenaytto1.Color = Color.Charcoal; 119 pistenaytto1.TextColor = Color.White; 120 121 pistenaytto1.BindTo(pelaaja1Elamat); 122 123 pelaaja2Elamat = new IntMeter(5); 124 Label pistenaytto2 = new Label(); 125 pistenaytto2.X = Screen.Right - 100; 126 pistenaytto2.Y = Screen.Top - 130; 127 pistenaytto2.Color = Color.Charcoal; 128 pistenaytto2.TextColor = Color.White; 129 130 pistenaytto2.BindTo(pelaaja2Elamat); 131 132 Add(pistenaytto1); 133 Add(pistenaytto2); 134 135 Label pelaajan1 = luoTekstillinenLabel(Color.White, "Pelaajan 1 elamat"); 136 pelaajan1.X = Screen.Left + 110; 137 pelaajan1.Y = Screen.Top - 100; 138 139 Label pelaajan2 = luoTekstillinenLabel(Color.White, "Pelaajan 2 elamat"); 140 pelaajan2.X = Screen.Right - 110; 141 pelaajan2.Y = Screen.Top - 100; 142 143 Add(pelaajan1); 144 Add(pelaajan2); 145 146 } 147 148 public Label luoTekstillinenLabel(Color tekstinVari, String teksti) 149 { 150 Label tekstikentta = new Label(); 151 tekstikentta.Text = teksti; 152 tekstikentta.TextColor = tekstinVari; 153 154 return tekstikentta; 155 } 156 157 public Pelaaja luoPelaaja(double x, double y, Vector alkusuunta, int numero) { 158 159 Pelaaja pelaaja = new Pelaaja(x, y, alkusuunta, numero); 160 73 161 Add(pelaaja); 74 162 … … 76 164 } 77 165 166 //pelikentän säätö loppuu 167 168 //Näppäimistön asetus 169 78 170 public void asetaNappaimet() { 79 171 80 Keyboard.Listen(Key.Up, ButtonState.Down, asetaNopeus, null, pelaaja1, ylos); 81 Keyboard.Listen(Key.Up, ButtonState.Released, asetaNopeus, null, pelaaja1, Vector.Zero); 82 Keyboard.Listen(Key.Down, ButtonState.Down, asetaNopeus, null, pelaaja1, alas); 83 Keyboard.Listen(Key.Down, ButtonState.Released, asetaNopeus, null, pelaaja1, Vector.Zero); 84 Keyboard.Listen(Key.Left, ButtonState.Down, asetaNopeus, null, pelaaja1, vasen); 85 Keyboard.Listen(Key.Left, ButtonState.Released, asetaNopeus, null, pelaaja1, Vector.Zero); 86 Keyboard.Listen(Key.Right, ButtonState.Down, asetaNopeus, null, pelaaja1, oikea); 87 Keyboard.Listen(Key.Right, ButtonState.Released, asetaNopeus, null, pelaaja1, Vector.Zero); 88 Keyboard.Listen(Key.Period, ButtonState.Pressed, ammu, null, pelaaja1); 89 Keyboard.Listen(Key.Comma, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja1); 90 91 Keyboard.Listen(Key.W, ButtonState.Down, asetaNopeus, null, pelaaja2, ylos); 92 Keyboard.Listen(Key.W, ButtonState.Released, asetaNopeus, null, pelaaja2, Vector.Zero); 93 Keyboard.Listen(Key.S, ButtonState.Down, asetaNopeus, null, pelaaja2, alas); 94 Keyboard.Listen(Key.S, ButtonState.Released, asetaNopeus, null, pelaaja2, Vector.Zero); 95 Keyboard.Listen(Key.A, ButtonState.Down, asetaNopeus, null, pelaaja2, vasen); 96 Keyboard.Listen(Key.A, ButtonState.Released, asetaNopeus, null, pelaaja2, Vector.Zero); 97 Keyboard.Listen(Key.D, ButtonState.Down, asetaNopeus, null, pelaaja2, oikea); 98 Keyboard.Listen(Key.D, ButtonState.Released, asetaNopeus, null, pelaaja2, Vector.Zero); 99 Keyboard.Listen(Key.Space, ButtonState.Pressed, ammu, null, pelaaja2); 100 Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja2); 172 Keyboard.Listen(Key.W, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, ylos); 173 Keyboard.Listen(Key.W, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero); 174 Keyboard.Listen(Key.S, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, alas); 175 Keyboard.Listen(Key.S, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero); 176 Keyboard.Listen(Key.A, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, vasen); 177 Keyboard.Listen(Key.A, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero); 178 Keyboard.Listen(Key.D, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, oikea); 179 Keyboard.Listen(Key.D, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero); 180 181 Keyboard.Listen(Key.Space, ButtonState.Pressed, ammu, null, pelaaja1); 182 Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja1); 183 Keyboard.Listen(Key.Q, ButtonState.Pressed, luoTorni, null, pelaaja1); 184 185 Keyboard.Listen(Key.Up, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, ylos); 186 Keyboard.Listen(Key.Up, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero); 187 Keyboard.Listen(Key.Down, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, alas); 188 Keyboard.Listen(Key.Down, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero); 189 Keyboard.Listen(Key.Left, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, vasen); 190 Keyboard.Listen(Key.Left, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero); 191 Keyboard.Listen(Key.Right, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, oikea); 192 Keyboard.Listen(Key.Right, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero); 193 194 Keyboard.Listen(Key.Period, ButtonState.Pressed, ammu, null, pelaaja2); 195 Keyboard.Listen(Key.Comma, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja2); 196 Keyboard.Listen(Key.M, ButtonState.Pressed, luoTorni, null, pelaaja2); 197 198 101 199 102 200 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); … … 104 202 } 105 203 106 public void asetaMagneettitarkastusajastin() 107 { 108 while (true) 109 { 110 Timer.SingleShot(0.01, tarkistaMagneetit); 111 } 112 } 113 114 public void tarkistaMagneetit() 115 { 116 } 117 118 public void asetaNopeus(PhysicsObject pelaaja, Vector nopeus) 119 { 120 121 if (pelaaja == pelaaja1) 122 { 123 if (nopeus.X != 0 && nopeus.Y != 0) 124 { 125 edellinenNopeusPelaaja1 = nopeus * 4; 126 } 127 else 128 { 129 edellinenNopeusPelaaja1 = pelaaja.Velocity * 4; 130 } 131 } 132 if (pelaaja == pelaaja2) 133 { 134 if (nopeus.X != 0 && nopeus.Y != 0) 135 { 136 edellinenNopeusPelaaja2 = nopeus * 4; 137 } 138 else 139 { 140 edellinenNopeusPelaaja2 = pelaaja.Velocity * 4; 141 } 142 } 204 //Näppäimistön asetus loppuu 205 206 //Pelaajan ja ammuksen nopeuksien asettaminen 207 208 public void asetaPelaajanSuuntaJaNopeus(Pelaaja pelaaja, Vector nopeus) 209 { 210 if (nopeus != Vector.Zero) 211 { 212 Vector apuyksikkovektori = new Vector(nopeus.X, nopeus.Y); 213 apuyksikkovektori = apuyksikkovektori.Normalize(); 214 215 216 217 maaritaPelaajanAmmuksenSuunta(apuyksikkovektori, pelaaja); 218 } 219 220 pelaaja.Velocity = nopeus; 221 } 222 223 public void maaritaPelaajanAmmuksenSuunta(Vector yksikkovektori, Pelaaja pelaaja) 224 { 225 if (yksikkovektori.X != 0 || yksikkovektori.Y != 0) 226 { 227 pelaaja.ammustenSuunta = yksikkovektori; 228 } 229 } 230 231 //Pelaajan ja ammuksen nopeuden asetus loppuu 232 233 //Ammuksen syntymä ja kuolema 234 235 public void ammu(Pelaaja pelaaja) 236 { 237 double apuX=pelaaja.ammustenSuunta.X * 38; 238 double apuY=pelaaja.ammustenSuunta.Y * 38; 239 240 luoUusiAmmus(pelaaja.X+apuX, pelaaja.Y+apuY, pelaaja.magneetinVari, pelaaja.ammustenSuunta); 241 } 242 243 public void luoUusiAmmus(double x, double y, bool onkoMagneettinen, Vector suunta) 244 { 245 Ammus uusiAmmus = new Ammus(onkoMagneettinen, x, y); 246 247 uusiAmmus.Velocity=suunta*200; 248 uusiAmmus.X = x; 249 uusiAmmus.Y = y; 143 250 144 pelaaja.Velocity = nopeus; 145 } 146 147 public void ammu(PhysicsObject pelaaja) 148 { 149 if (pelaaja == pelaaja1) 150 { 151 luoUusiAmmus(pelaaja.X + edellinenNopeusPelaaja1.X / 10, pelaaja.Y + edellinenNopeusPelaaja1.Y / 10, onkoMagneettinen1, edellinenNopeusPelaaja1); 152 153 } 154 else 155 { 156 luoUusiAmmus(pelaaja.X + edellinenNopeusPelaaja2.X / 10, pelaaja.Y + edellinenNopeusPelaaja2.Y / 10, onkoMagneettinen2, edellinenNopeusPelaaja2); 157 } 158 } 159 160 public void luoUusiAmmus(double x, double y, bool onkoMagneettinen, Vector nopeus) 161 { 162 Ammus uusiAmmus = new Ammus(20, 20, onkoMagneettinen); 163 164 uusiAmmus.asetaNopeus(nopeus); 165 uusiAmmus.asetaSijainti(x, y); 251 AddCollisionHandler(uusiAmmus, osumaAmmuksella); 166 252 167 253 Add(uusiAmmus); 168 254 169 AddCollisionHandler(uusiAmmus, osumaAmmuksella);170 171 255 ammukset.Add(uusiAmmus); 172 }173 174 public void vaihdaMagneettisuus(PhysicsObject pelaaja)175 {176 if (pelaaja == pelaaja1)177 {178 if (onkoMagneettinen1)179 {180 onkoMagneettinen1 = false;181 }182 else183 {184 onkoMagneettinen1 = true;185 }186 }187 else188 {189 if (onkoMagneettinen2)190 {191 onkoMagneettinen2 = false;192 }193 else194 {195 onkoMagneettinen2 = true;196 }197 }198 256 199 257 } … … 201 259 public void osumaAmmuksella(PhysicsObject ammus, PhysicsObject osuja) 202 260 { 261 Ammus ammus2 = (Ammus)ammus; 262 203 263 for(int i=0;i<ammukset.Count;i++){ 204 264 if (ammukset[i] == osuja) … … 206 266 osuja.Destroy(); 207 267 ammus.Destroy(); 208 } 209 } 210 211 if (osuja == pelaaja1 || osuja == pelaaja2) { 212 268 269 Ammus osuja2 = (Ammus)osuja; 270 ammukset.Remove(ammus2); 271 ammukset.Remove(osuja2); 272 273 return; 274 } 275 } 276 277 if (osuja == pelaaja2 || osuja == pelaaja1) { 278 279 Pelaaja pelaaja = (Pelaaja)osuja; 280 281 if (pelaaja == pelaaja1) 282 { 283 pelaaja1Elamat.Value -= 1; 284 if (pelaaja1Elamat < 1) 285 { 286 pelinLoppu(pelaaja); 287 } 288 } 289 if(pelaaja == pelaaja2) 290 { 291 pelaaja2Elamat.Value -= 1; 292 if (pelaaja2Elamat < 1) 293 { 294 pelinLoppu(pelaaja); 295 } 296 } 297 298 213 299 ammus.Destroy(); 214 215 } 216 217 if (osuja == ylaraja || osuja == alaraja) 218 { 219 ammus.Destroy(); 300 ammukset.Remove(ammus2); 301 302 return; 303 304 } 305 306 if (osuukoReunaan(ammus, osuja)) 307 { 308 return; 309 } 310 311 for (int i = 0; i < pelaaja1.tornit.Count; i++) 312 { 313 if (pelaaja1.tornit[i] == osuja) 314 { 315 ammus.Destroy(); 316 317 ammukset.Remove(ammus2); 318 319 pelaaja1.tornit[i].elamat.Value -= 1; 320 321 if (pelaaja1.tornit[i].elamat <= 0) 322 { 323 osuja.Destroy(); 324 pelaaja1.tornit.Remove(pelaaja1.tornit[i]); 325 } 326 327 return; 328 } 329 } 330 331 for (int i = 0; i < pelaaja2.tornit.Count; i++) 332 { 333 if (pelaaja2.tornit[i] == osuja) 334 { 335 ammus.Destroy(); 336 337 ammukset.Remove(ammus2); 338 339 pelaaja2.tornit[i].elamat.Value -= 1; 340 341 if (pelaaja2.tornit[i].elamat <= 0) 342 { 343 osuja.Destroy(); 344 pelaaja2.tornit.Remove(pelaaja2.tornit[i]); 345 } 346 347 return; 348 } 349 } 350 } 351 352 public bool osuukoReunaan(PhysicsObject ammus, PhysicsObject osuja) 353 { 354 if (osuja == ylaraja) 355 { 356 ammus.Y = -ammus.Y + 11; 357 Vector nopeus = ammus.Velocity; 358 Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; }); 359 360 return true; 361 362 } 363 364 if (osuja == alaraja) 365 { 366 ammus.Y = -ammus.Y - 11; 367 Vector nopeus = ammus.Velocity; 368 Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; }); 369 370 return true; 220 371 } 221 372 222 373 if (osuja == oikearaja) 223 374 { 224 ammus.X = -ammus.X + 12; 225 Timer.SingleShot(0.01, delegate { ammus.Velocity = new Vector(400.0, 0); }); 375 ammus.X = -ammus.X + 11; 376 Vector nopeus = ammus.Velocity; 377 Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; }); 378 379 return true; 380 381 } 382 383 if (osuja == vasenraja) 384 { 385 ammus.X = -ammus.X - 11; 386 Vector nopeus = ammus.Velocity; 387 Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; }); 388 return true; 389 } 390 391 return false; 392 } 393 394 //Ammuksen käsittely loppuu 395 396 //Magneettisuuden vaihto alkaa 397 398 public void vaihdaMagneettisuus(PhysicsObject pelaaja) 399 { 400 if (pelaaja == pelaaja2) 401 { 402 if (pelaaja2.magneetinVari) 403 { 404 pelaaja2.magneetinVari = false; 405 } 406 else 407 { 408 pelaaja2.magneetinVari = true; 409 } 410 } 411 else 412 { 413 if (pelaaja1.magneetinVari) 414 { 415 pelaaja1.magneetinVari = false; 416 } 417 else 418 { 419 pelaaja1.magneetinVari = true; 420 } 421 } 422 423 } 424 425 //Magneettisuuden vaihto loppuu 426 427 //Tornilogiikka alkaa 428 429 public void luoTorni(PhysicsObject pelaaja) 430 { 431 if (pelaaja == pelaaja1) 432 { 433 if (pelaaja1.tornit.Count < 5) 434 { 435 Add(pelaaja1.lisaaMagneettitorni()); 436 } 437 } 438 else 439 { 440 if (pelaaja2.tornit.Count < 5) 441 { 442 Add(pelaaja2.lisaaMagneettitorni()); 443 } 444 } 445 } 446 447 //Tornilogiikka loppuu 448 449 //Peli päivitys alkaa 450 451 protected override void Update(Time time) 452 { 453 base.Update(time); 454 tarkistaMagneetit(); 455 pelaajienTarkistus(); 456 } 457 458 public void tarkistaMagneetit() 459 { 460 461 for (int i = 0; i < ammukset.Count-1; i++) 462 { 463 for (int j = 1 + i; j < ammukset.Count; j++) 464 { 465 Vector voima = luoMagneettivektori(ammukset[i], ammukset[j]); 466 Vector vastavoima = voima * -1; 467 468 ammukset[i].Velocity = ammukset[i].Velocity + voima; 469 ammukset[j].Velocity = ammukset[j].Velocity + vastavoima; 470 } 471 } 472 473 for (int i = 0; i < pelaaja1.tornit.Count; i++) 474 { 475 for (int j = 0; j < ammukset.Count; j++) 476 { 477 Ammus ammus = ammukset[j]; 226 478 227 } 228 229 if (osuja == vasenraja) 230 { 231 ammus.X = -ammus.X - 12; 232 Timer.SingleShot(0.01, delegate { ammus.Velocity = new Vector(-400.0, 0); }); 233 } 234 235 } 479 Vector voima = luoMagneettivektori(ammukset[j],pelaaja1.tornit[i]); 480 481 ammus.Velocity = ammus.Velocity + voima; 482 } 483 } 484 485 for (int i = 0; i < pelaaja2.tornit.Count; i++) 486 { 487 for (int j = 0; j < ammukset.Count; j++) 488 { 489 Vector voima = luoMagneettivektori(ammukset[j], pelaaja2.tornit[i]); 490 491 ammukset[j].Velocity = ammukset[j].Velocity + voima; 492 } 493 } 494 } 495 496 public Vector luoMagneettivektori(Magneettisuus kohde1, Magneettisuus kohde2) 497 { 498 Vector palautettava = new Vector(kohde1.GetX()-kohde2.GetX(), kohde1.GetY()-kohde2.GetY()); 499 palautettava=palautettava.Normalize(); 500 501 double etaisyys = Math.Sqrt((kohde1.GetX() - kohde2.GetX())*(kohde1.GetX() - kohde2.GetX())+(kohde1.GetY() - kohde2.GetY())*(kohde1.GetY() - kohde2.GetY())); 502 503 palautettava = (palautettava * kohde1.MagneetinVahvuus*kohde2.MagneetinVahvuus) / (etaisyys*etaisyys); 504 505 if (!((kohde1.Magneettisuus && kohde2.Magneettisuus) || (!kohde1.Magneettisuus && !kohde2.Magneettisuus))) 506 { 507 palautettava = palautettava * -1; 508 } 509 510 return palautettava; 511 } 512 513 public void pelaajienTarkistus() 514 { 515 tarkistaPelaaja(pelaaja2); 516 tarkistaPelaaja(pelaaja1); 517 } 518 519 public void tarkistaPelaaja(Pelaaja pelaaja) 520 { 521 if (pelaaja.X < Level.Left + 25) 522 { 523 pelaaja.X = Level.Left + 25; 524 asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero); 525 } 526 else if(pelaaja.X>Level.Right - 25) 527 { 528 pelaaja.X = Level.Right - 25; 529 asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero); 530 } 531 532 if (pelaaja.Y > Level.Top - 25) 533 { 534 pelaaja.Y = Level.Top - 25; 535 asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero); 536 } 537 else if (pelaaja.Y < Level.Bottom + 25) 538 { 539 pelaaja.Y = Level.Bottom + 25; 540 asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero); 541 } 542 543 if (pelaaja.X < 225 && pelaaja.X > -225) 544 { 545 if (pelaaja.X < 0) 546 { 547 pelaaja.X = -225; 548 asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero); 549 } 550 else 551 { 552 pelaaja.X = 225; 553 asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero); 554 } 555 } 556 } 557 558 //Päivitys loppuu 559 560 public void pelinLoppu(Pelaaja pelaaja) 561 { 562 Pelaaja ilmoitettava; 563 564 if(pelaaja==pelaaja1) 565 { 566 ilmoitettava=pelaaja2; 567 } 568 else 569 { 570 ilmoitettava=pelaaja1; 571 } 572 573 ClearAll(); 574 575 Level.BackgroundColor = Color.Blue; 576 577 Label voittajanilmoitus = luoTekstillinenLabel(Color.White,"Pelaaja "+ilmoitettava.pelaajanNumero+" voitti pelin!"); 578 voittajanilmoitus.X = 0; 579 voittajanilmoitus.Y = 0; 580 581 Add(voittajanilmoitus); 582 583 Timer.SingleShot(2, delegate { uusiPeli(); }); 236 584 585 } 586 237 587 } 238 588 239 class Ammus : PhysicsObject 589 public interface Magneettisuus 240 590 { 241 public PhysicsObject vaikutusalue; 242 public bool magneettisuus; 243 244 public Ammus(double leveys, double korkeus,bool magneettisuus) 245 :base(leveys,korkeus) 246 { 247 vaikutusalue=PhysicsObject.CreateStaticObject(leveys*2,korkeus*2); 591 bool Magneettisuus { get; } 592 double MagneetinVahvuus { get; } 593 double GetX(); 594 double GetY(); 595 } 596 597 public class Ammus : PhysicsObject, Magneettisuus 598 { 599 600 private bool magneettisuus; 601 public bool Magneettisuus { get { return magneettisuus; } } 602 603 private double magneetinVahvuus; 604 public double MagneetinVahvuus { get { return magneetinVahvuus; } } 605 606 public Ammus(bool magneettisuus, double x, double y) 607 :base(20,20) 608 { 248 609 this.magneettisuus = magneettisuus; 249 250 vaikutusalue.IsVisible = false; 610 this.magneetinVahvuus = 200; 611 251 612 if (magneettisuus == true) 252 613 { … … 259 620 260 621 base.Shape = Shape.Circle; 261 vaikutusalue.Shape = Shape.Circle;262 263 264 }265 266 public void asetaNopeus(Vector nopeus) {267 base.Velocity = nopeus;268 vaikutusalue.Velocity = nopeus;269 }270 271 public void asetaSijainti(double x, double y) {272 273 622 base.X = x; 274 623 base.Y = y; 275 vaikutusalue.X = x; 276 vaikutusalue.Y = y; 277 624 625 } 626 627 public double GetY() 628 { 629 return base.Y; 630 } 631 632 public double GetX() 633 { 634 return base.X; 278 635 } 279 636 } 637 638 public class Magneettitorni:PhysicsObject, Magneettisuus 639 { 640 public IntMeter elamat; 641 642 private bool magneettisuus; 643 public bool Magneettisuus{get{return magneettisuus;}} 644 645 private double magneetinVahvuus; 646 public double MagneetinVahvuus{get{return magneetinVahvuus;}} 647 648 public Magneettitorni(bool magneettisuus, double x, double y) 649 :base(30,30) 650 { 651 this.magneettisuus = magneettisuus; 652 this.magneetinVahvuus = 300; 653 654 base.IgnoresPhysicsLogics = true; 655 base.IgnoresCollisionResponse = true; 656 base.Shape = Shape.Circle; 657 base.X = x; 658 base.Y = y; 659 660 if (magneettisuus) 661 { 662 base.Color = Color.Red; 663 } 664 else 665 { 666 base.Color = Color.Blue; 667 } 668 669 elamat = new IntMeter(3); 670 } 671 672 public double GetX() 673 { 674 return base.X; 675 } 676 677 public double GetY() 678 { 679 return base.Y; 680 } 681 682 } 683 684 public class Pelaaja : PhysicsObject 685 { 686 public bool magneetinVari; 687 public Vector ammustenSuunta; 688 public int pelaajanNumero; 689 690 public List<Magneettitorni> tornit; 691 692 public Pelaaja(double x, double y, Vector ammustenSuunta, int pelaaja) 693 :base(50,50) 694 { 695 magneetinVari = false; 696 this.ammustenSuunta = ammustenSuunta; 697 pelaajanNumero = pelaaja; 698 699 tornit = new List<Magneettitorni>(); 700 701 base.X = x; 702 base.Y = y; 703 base.Color = Color.White; 704 base.Shape = Shape.Circle; 705 base.IgnoresCollisionResponse = true; 706 base.IgnoresPhysicsLogics = true; 707 } 708 709 public Magneettitorni lisaaMagneettitorni() 710 { 711 Magneettitorni torni = new Magneettitorni(magneetinVari, base.X, base.Y); 712 713 tornit.Add(torni); 714 715 return torni; 716 } 717 }
Note: See TracChangeset
for help on using the changeset viewer.