Changeset 8568 for 2017/24


Ignore:
Timestamp:
2017-06-13 11:59:41 (2 years ago)
Author:
npo17_9
Message:

valmis

Location:
2017/24/VesaT/HasuPonkiPeli
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • 2017/24/VesaT/HasuPonkiPeli/HasuPonkiPeli/HasuPonkiPeli/HasuPonkiPeli.cs

    r8539 r8568  
    11using System; 
    22using System.Collections.Generic; 
     3using System.Linq; 
     4using System.Text; 
    35using Jypeli; 
    46using Jypeli.Assets; 
     
    79using Jypeli.Widgets; 
    810 
    9 public class HasuPonkiPeli : PhysicsGame 
     11public class Pong : PhysicsGame 
    1012{ 
    1113    Vector nopeusYlos = new Vector(0, 200); 
     
    1315 
    1416    PhysicsObject pallo; 
    15  
    1617    PhysicsObject maila1; 
    1718    PhysicsObject maila2; 
     19 
     20    PhysicsObject vasenReuna; 
     21    PhysicsObject oikeaReuna; 
     22 
     23    IntMeter pelaajan1Pisteet; 
     24    IntMeter pelaajan2Pisteet; 
     25 
    1826    public override void Begin() 
    1927    { 
    2028        LuoKentta(); 
    2129        AsetaOhjaimet(); 
     30        LisaaLaskurit(); 
    2231        AloitaPeli(); 
     32    } 
    2333 
    24  
    25         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    26     } 
    2734    void LuoKentta() 
    2835    { 
    2936        pallo = new PhysicsObject(40.0, 40.0); 
     37        pallo.Shape = Shape.Circle; 
     38        pallo.X = -200.0; 
     39        pallo.Y = 0.0; 
     40        pallo.Restitution = 1.0; 
     41        pallo.KineticFriction = 0.0; 
     42        pallo.MomentOfInertia = Double.PositiveInfinity; 
    3043        Add(pallo); 
    31  
    32         pallo.Shape = Shape.Circle; 
    33         pallo.X = 0; 
    34         pallo.Y = 11; 
    35         Level.CreateBorders(1.0, false); 
    36         pallo.Restitution = 1.0; 
    37         Level.Background.Color = Color.Ultramarine; 
    38         Camera.ZoomToLevel(); 
     44        AddCollisionHandler(pallo, KasittelePallonTormays); 
    3945 
    4046        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    41         maila2 = LuoMaila(Level.Right + 20.0, 0.0); 
     47        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    4248 
     49        vasenReuna = Level.CreateLeftBorder(); 
     50        vasenReuna.Restitution = 1.0; 
     51        vasenReuna.KineticFriction = 0.0; 
     52        vasenReuna.IsVisible = false; 
    4353 
     54        oikeaReuna = Level.CreateRightBorder(); 
     55        oikeaReuna.Restitution = 1.0; 
     56        oikeaReuna.KineticFriction = 0.0; 
     57        oikeaReuna.IsVisible = false; 
    4458 
     59        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     60        ylaReuna.Restitution = 1.0; 
     61        ylaReuna.KineticFriction = 0.0; 
     62        ylaReuna.IsVisible = false; 
    4563 
    46     } 
     64        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     65        alaReuna.Restitution = 1.0; 
     66        alaReuna.IsVisible = false; 
     67        alaReuna.KineticFriction = 0.0; 
    4768 
    48     void AloitaPeli() 
    49     { 
    50         Vector impulssi = new Vector(500.0, 0.0); 
    51         pallo.Hit(impulssi); 
     69        Level.BackgroundColor = Color.Black; 
     70 
     71        Camera.ZoomToLevel(); 
    5272    } 
    5373 
     
    5979        maila.Y = y; 
    6080        maila.Restitution = 1.0; 
     81        maila.KineticFriction = 0.0; 
    6182        Add(maila); 
    6283        return maila; 
    6384    } 
    6485 
    65     void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     86    void LisaaLaskurit() 
    6687    { 
    67         maila.Velocity = nopeus; 
     88        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     89        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     90    } 
     91 
     92    IntMeter LuoPisteLaskuri(double x, double y) 
     93    { 
     94        IntMeter laskuri = new IntMeter(0); 
     95        laskuri.MaxValue = 10; 
     96 
     97        Label naytto = new Label(); 
     98        naytto.BindTo(laskuri); 
     99        naytto.X = x; 
     100        naytto.Y = y; 
     101        naytto.TextColor = Color.White; 
     102        naytto.BorderColor = Level.BackgroundColor; 
     103        naytto.Color = Level.BackgroundColor; 
     104        Add(naytto); 
     105 
     106        return laskuri; 
     107    } 
     108 
     109    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     110    { 
     111        if (kohde == oikeaReuna) 
     112        { 
     113            pelaajan1Pisteet.Value += 1; 
     114        } 
     115        else if (kohde == vasenReuna) 
     116        { 
     117            pelaajan2Pisteet.Value += 1; 
     118        } 
     119    } 
     120 
     121    void AloitaPeli() 
     122    { 
     123        Vector impulssi = new Vector(500.0, 0.0); 
     124        pallo.Hit(impulssi); 
    68125    } 
    69126 
    70127    void AsetaOhjaimet() 
    71128    { 
    72         Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
    73         Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    74         Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1 Liikuta mailaa alas", maila1, nopeusAlas); 
    75         Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1 Vector.Zero); 
    76         Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2 nopeusYlos); 
    77         Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2 nopeusYlos); 
    78         Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas) 
     129        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     130        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     131        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     132        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     133 
     134        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     135        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     136        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     137        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     138 
     139        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    79140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    80141 
     142        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     143        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     144        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     145        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     146 
     147        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     148        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     149        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     150        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     151 
     152        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     153        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    81154    } 
    82155 
     156    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     157    { 
     158        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     159        { 
     160            maila.Velocity = Vector.Zero; 
     161            return; 
     162        } 
     163        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     164        { 
     165            maila.Velocity = Vector.Zero; 
     166            return; 
     167        } 
    83168 
     169        maila.Velocity = nopeus; 
     170    } 
    84171} 
Note: See TracChangeset for help on using the changeset viewer.