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