- Timestamp:
- 2013-06-26 15:01:36 (10 years ago)
- Location:
- 2013/26/LeeviK
- Files:
-
- 118 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2013/26/LeeviK/Pong/Pong/Pong/Pong.cs
r4202 r4249 9 9 public class Pong : PhysicsGame 10 10 { 11 Vector nopeusYl ös = new Vector(0, 200);12 Vector nopeusAlas = new Vector(0, 200);11 Vector nopeusYlos = new Vector(0, 200); 12 Vector nopeusAlas = new Vector(0, -200); 13 13 14 14 PhysicsObject maila1; 15 15 PhysicsObject maila2; 16 16 PhysicsObject pallo; 17 PhysicsObject vasenReuna; 18 PhysicsObject oikeaReuna; 19 20 IntMeter pelaajan1Pisteet; 21 IntMeter pelaajan2Pisteet; 22 17 23 public override void Begin() 18 { 24 { 25 19 26 LuoKentta(); 27 AloitaPeli(); 20 28 AsetaOhjaimet(); 21 29 AloitaPeli(); 30 LisaaLaskurit(); 22 31 // TODO: Kirjoita ohjelmakoodisi tähän 23 32 24 33 25 34 26 35 } 27 36 void LuoKentta() … … 30 39 pallo.Shape = Shape.Circle; 31 40 pallo.X = -200; 32 pallo.Restitution = 1.0;41 pallo.Restitution = 2.5; 33 42 Add(pallo); 34 LuoMaila(Level.Left + 20.0, 0.0); 35 LuoMaila(Level.Right - 20.0, 0.0); 43 AddCollisionHandler(pallo, KasittelePallonTormays); 44 maila1 = LuoMaila(Level.Left + 20.0, 0.0); 45 maila2 = LuoMaila(Level.Right - 20.0, 0.0); 36 46 37 Level.CreateBorders(1.0, false); 47 vasenReuna = Level.CreateLeftBorder(); 48 vasenReuna.Restitution = 1.0; 49 vasenReuna.IsVisible = false; 50 oikeaReuna = Level.CreateRightBorder(); 51 oikeaReuna.Restitution = 1.5; 52 oikeaReuna.IsVisible = false; 53 PhysicsObject alaReuna = Level.CreateBottomBorder(); 54 alaReuna.Restitution = 1.0; 55 alaReuna.IsVisible = false; 56 PhysicsObject yläReuna = Level.CreateTopBorder(); 57 yläReuna.Restitution = 1.0; 58 yläReuna.IsVisible = false; 38 59 Level.BackgroundColor = Color.Black; 39 60 Camera.ZoomToLevel(); 40 61 41 }void AloitaPeli() 42 { Vector impulssi = new Vector(500.0, 200.0); 62 } 63 void AloitaPeli() 64 { 65 Vector impulssi = new Vector(500.0, 200.0); 43 66 pallo.Hit(impulssi); 44 67 } 45 void LuoMaila(double x, double y) 68 69 PhysicsObject LuoMaila(double x, double y) 46 70 { 47 71 PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); … … 51 75 maila.Restitution = 1.0; 52 76 Add(maila); 77 return maila; 53 78 } 54 79 void AsetaOhjaimet() 55 80 { 56 Keyboard.Listen(Key.A, ButtonState.Down, LiikutaMaila1Ylos, Pelaaja1: "Liikuta mailaa ylös"); 57 Keyboard.Listen(Key.A, ButtonState.Released, PysaytaMaila1, null); 81 Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 82 Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 83 Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 84 Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 58 85 86 Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 87 Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 88 Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 89 Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 90 91 Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 59 92 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 93 94 } 95 IntMeter LuoPisteLaskuri(double x, double y) 96 { 97 IntMeter laskuri = new IntMeter(0); 98 laskuri.MaxValue = 10; 99 100 Label naytto = new Label(); 101 naytto.BindTo(laskuri); 102 naytto.X = x; 103 naytto.Y = y; 104 naytto.TextColor = Color.White; 105 naytto.BorderColor = Level.BackgroundColor; 106 naytto.Color = Level.BackgroundColor; 107 Add(naytto); 108 109 return laskuri; 110 } 111 void LisaaLaskurit() 112 { 113 pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 114 pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 115 } 60 116 61 } 62 void Asetanopeus(PhysicsObject maila, Vector nopeus) 117 void AsetaNopeus(PhysicsObject maila, Vector nopeus) 63 118 { 119 if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 120 { 121 maila.Velocity = Vector.Zero; 122 return; 123 } 124 if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 125 { 126 maila.Velocity = Vector.Zero; 127 return; 128 } 129 64 130 maila.Velocity = nopeus; 65 131 } 132 void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 133 { 134 if (kohde == oikeaReuna) 135 pelaajan1Pisteet.Value += 1; 136 137 else if (kohde == vasenReuna) 138 pelaajan2Pisteet.Value += 1; 139 140 } 141 142 66 143 } 144
Note: See TracChangeset
for help on using the changeset viewer.