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