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