Changeset 2698
- Timestamp:
- 2012-04-16 13:31:12 (11 years ago)
- Location:
- 2012/JAO/ViliLiponen/ponki
- Files:
-
- 14 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
2012/JAO/ViliLiponen/ponki/ponki/ponki/ponki.cs
r2673 r2698 9 9 public class ponki : PhysicsGame 10 10 { 11 Vector nopeusYlos = new Vector(0, 200); 12 Vector nopeusAlas = new Vector(0, -200); 13 14 PhysicsObject pallo; 15 PhysicsObject maila1; 16 PhysicsObject maila2; 17 18 PhysicsObject vasenReuna; 19 PhysicsObject oikeaReuna; 20 21 IntMeter pelaajan1Pisteet; 22 IntMeter pelaajan2Pisteet; 23 11 24 public override void Begin() 12 25 { 13 // TODO: Kirjoita ohjelmakoodisi tähän 26 LuoKentta(); 27 AsetaOhjaimet(); 28 LisaaLaskurit(); 29 AloitaPeli(); 30 } 14 31 15 PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 16 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 32 void LuoKentta() 33 { 34 pallo = new PhysicsObject(40.0, 40.0); 35 pallo.Shape = Shape.Star; 36 pallo.X = -200.0; 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.DarkMagenta; 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 { 116 Vector impulssi = new Vector(500.0, 0.0); 117 pallo.Hit(impulssi); 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; 17 163 } 18 164 } 165
Note: See TracChangeset
for help on using the changeset viewer.