using System; using System.Collections.Generic; using Jypeli; using Jypeli.Assets; using Jypeli.Controls; using Jypeli.Effects; using Jypeli.Widgets; public class Peli : PhysicsGame { Vector NopeusYlos = new Vector(0.0, 200.0); Vector NopeusAlas = new Vector(0.0, -200.0); PhysicsObject pallo; PhysicsObject maila1; PhysicsObject maila2; PhysicsObject vasenReuna; PhysicsObject oikeaReuna; IntMeter pelaajan1Pisteet; IntMeter pelaajan2Pisteet; public override void Begin() { // TODO: Kirjoita ohjelmakoodisi tähän LuoKentta(); AsetaOhjaimet(); LisaaLaskurit(); AloitaPeli(); } void LuoKentta() { pallo = new PhysicsObject(35.0, 35.0); pallo.Shape = Shape.Circle; pallo.Color = Color.DarkOrange; pallo.X = 0.0; pallo.Y = 0.0; pallo.Restitution = 1.0; Add(pallo); AddCollisionHandler(pallo, KasittelePallonTormays); maila1 = LuoMaila(Level.Left + 20.0, 0.0); maila2 = LuoMaila(Level.Right - 20.0, 0.0); vasenReuna = Level.CreateLeftBorder(); vasenReuna.Restitution = 1.0; vasenReuna.IsVisible = false; oikeaReuna = Level.CreateRightBorder(); oikeaReuna.Restitution = 1.0; oikeaReuna.IsVisible = false; PhysicsObject alaReuna = Level.CreateBottomBorder(); alaReuna.Restitution = 1.0; alaReuna.IsVisible = false; PhysicsObject yläReuna = Level.CreateTopBorder(); yläReuna.Restitution = 1.0; yläReuna.IsVisible = false; Level.BackgroundColor = Color.Aqua; Camera.ZoomToLevel(); } void AloitaPeli() { Vector impulssi = new Vector(500.0, 0.0); pallo.Hit(impulssi); } PhysicsObject LuoMaila(double x, double y) { PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); maila.Shape = Shape.Rectangle; maila.X = x; maila.Y = y; maila.Restitution = 1.0; Add(maila); return maila; } void AsetaOhjaimet() { Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, NopeusYlos); Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, NopeusAlas); Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, NopeusYlos); Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, NopeusAlas); Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); } void AsetaNopeus(PhysicsObject maila, Vector nopeus) { if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) { maila.Velocity = Vector.Zero; return; } if ((nopeus.Y > 0) && (maila.Top > Level.Top)) { maila.Velocity = Vector.Zero; return; } maila.Velocity = nopeus; } void LisaaLaskurit() { pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); } IntMeter LuoPisteLaskuri(double x, double y) { IntMeter laskuri = new IntMeter(0); laskuri.MaxValue = 10; Label naytto = new Label(); naytto.BindTo(laskuri); naytto.X = x; naytto.Y = y; naytto.TextColor = Color.White; naytto.BorderColor = Level.BackgroundColor; naytto.Color = Level.BackgroundColor; Add(naytto); return laskuri; } void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) { if (kohde == oikeaReuna) { pelaajan1Pisteet.Value += 1; } else if (kohde == vasenReuna) { pelaajan2Pisteet.Value += 1; } } }