Changeset 841
- Timestamp:
- 2010-06-15 11:29:29 (13 years ago)
- Location:
- 2010/24/elariilo
- Files:
-
- 77 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/24/elariilo/Pong/Peli.cs
r814 r841 5 5 public class Peli : PhysicsGame 6 6 { 7 Vector nopeusYlos = new Vector(0, 500); 8 Vector nopeusAlas = new Vector(0, -500); 9 7 10 PhysicsObject pallo; 11 PhysicsObject pallo2; 8 12 PhysicsObject maila1; 9 13 PhysicsObject maila2; 14 15 PhysicsObject vasenReuna; 16 PhysicsObject oikeaReuna; 17 18 IntMeter pelaajan1Pisteet; 19 IntMeter pelaajan2Pisteet; 10 20 11 21 protected override void Begin() 12 22 { 13 23 LuoKentta(); 14 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");24 LuoPallo2(); 15 25 AsetaOhjaimet(); 26 LisaaLaskurit(); 16 27 AloitaPeli(); 17 }18 PhysicsObject LuoMaila(double x, double y)19 {20 PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);21 maila.Shape = Shapes.Rectangle;22 maila.X = x;23 maila.Y = y;24 maila.Restitution = 1.0;25 Add(maila);26 27 return maila;28 28 } 29 29 … … 32 32 pallo = new PhysicsObject(40.0, 40.0); 33 33 pallo.Shape = Shapes.Circle; 34 pallo.Color = Color.Cyan; 34 35 pallo.X = -200.0; 35 36 pallo.Y = 0.0; 36 37 pallo.Restitution = 1.0; 37 38 Add(pallo); 39 AddCollisionHandler(pallo, KasittelePallonTormays); 38 40 39 LuoMaila(Level.Left + 20.0, 0.0);40 LuoMaila(Level.Right - 20.0, 0.0);41 maila1 = LuoMaila(Level.Left + 20.0, 0.0); 42 maila2 = LuoMaila(Level.Right - 20.0, 0.0); 41 43 42 43 Level.CreateBorders(false); 44 Level.BackgroundColor = Color.GreenYellow; 44 vasenReuna = Level.CreateLeftBorder(); 45 vasenReuna.Restitution = 1.0; 46 vasenReuna.IsVisible = false; 47 oikeaReuna = Level.CreateRightBorder(); 48 oikeaReuna.Restitution = 1.0; 49 oikeaReuna.IsVisible = false; 50 PhysicsObject ylaReuna = Level.CreateTopBorder(); 51 ylaReuna.Restitution = 1.0; 52 ylaReuna.IsVisible = false; 53 PhysicsObject alaReuna = Level.CreateBottomBorder(); 54 alaReuna.Restitution = 1.0; 55 alaReuna.IsVisible = false; 56 57 Level.BackgroundColor = Color.Black; 45 58 46 59 Camera.ZoomToLevel(); 47 60 } 48 61 49 void AsetaOhjaimet()62 void LuoPallo2() 50 63 { 51 Keyboard.Listen(Key.A, ButtonState.Pressed, LiikutaMailaaYlos, "Pelaaja 1: Liikuta mailaa ylös", maila1); 52 Keyboard.Listen(Key.A, ButtonState.Released, PysaytaMaila, null, maila1); 53 54 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 64 pallo2 = new PhysicsObject(50.0, 50.0); 65 } 66 67 68 69 70 PhysicsObject LuoMaila(double x, double y) 71 { 72 PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 73 maila.Shape = Shapes.Rectangle; 74 maila.Color = RandomGen.NextColor(); 75 maila.X = x; 76 maila.Y = y; 77 maila.Restitution = 1.0; 78 Add(maila); 79 return maila; 55 80 } 56 81 57 void Li ikutaMailaaYlos(PhysicsObject maila)82 void LisaaLaskurit() 58 83 { 59 Vector nopeus = new Vector(0, 200);60 maila.Velocity = nopeus;84 pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 85 pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 61 86 } 62 87 63 64 void PysaytaMaila(PhysicsObject maila) 88 IntMeter LuoPisteLaskuri(double x, double y) 65 89 { 90 IntMeter laskuri = new IntMeter(0); 91 laskuri.MaxValue = 10; 92 ValueDisplay naytto = new ValueDisplay(); 93 naytto.BindTo(laskuri); 94 naytto.X = x; 95 naytto.Y = y; 96 naytto.ValueColor = Color.White; 97 Add(naytto); 98 return laskuri; 99 } 66 100 101 void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 102 { 103 if (kohde == oikeaReuna) 104 { 105 pelaajan1Pisteet.Value += 1; 106 } 107 else if (kohde == vasenReuna) 108 { 109 pelaajan2Pisteet.Value += 1; 110 } 67 111 } 68 112 … … 73 117 } 74 118 119 void AsetaOhjaimet() 120 { 121 Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 122 Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 123 Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 124 Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 75 125 126 Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 127 Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 128 Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 129 Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 130 131 Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 132 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 133 134 ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 135 ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 136 ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 137 ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 138 139 ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 140 ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 141 ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 142 ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 143 144 ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 145 ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 146 } 147 148 void AsetaNopeus(PhysicsObject maila, Vector nopeus) 149 { 150 if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 151 { 152 maila.Velocity = Vector.Zero; 153 return; 154 } 155 if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 156 { 157 maila.Velocity = Vector.Zero; 158 return; 159 } 160 161 maila.Velocity = nopeus; 162 } 76 163 }
Note: See TracChangeset
for help on using the changeset viewer.