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