Changeset 8537 for 2017/24


Ignore:
Timestamp:
2017-06-12 14:59:59 (2 years ago)
Author:
npo17_17
Message:
 
Location:
2017/24/TomasM/Pong/Pong/Pong
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 2017/24/TomasM/Pong/Pong/Pong/Pong.cs

    r8518 r8537  
    11using System; 
    22using System.Collections.Generic; 
     3using System.Linq; 
     4using System.Text; 
    35using Jypeli; 
    46using Jypeli.Assets; 
     
    1214    Vector nopeusAlas = new Vector(0, -200); 
    1315 
     16    const double PALLON_MIN_NOPEUS = 500; 
     17 
     18    protected override void Update(Time time) 
     19    { 
     20        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS) 
     21        { 
     22            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y); 
     23        } 
     24        base.Update(time); 
     25    } 
     26 
    1427    PhysicsObject pallo; 
    15  
    1628    PhysicsObject maila1; 
    1729    PhysicsObject maila2; 
     30 
     31    PhysicsObject vasenReuna; 
     32    PhysicsObject oikeaReuna; 
     33 
     34    IntMeter pelaajan1Pisteet; 
     35    IntMeter pelaajan2Pisteet; 
     36 
    1837    public override void Begin() 
    1938    { 
    2039        LuoKentta(); 
     40        LisaaLaskurit(); 
    2141        AloitaPeli(); 
    22         OhjainAsetukset(); 
     42        AsetaOhjaimet(); 
    2343 
     44    } 
    2445 
    25  
    26  
    27  
    28  
    29         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    30     } 
    3146    void LuoKentta() 
    3247    { 
    33         Vector impulssi = new Vector(500.0, 0.0); 
    3448        pallo = new PhysicsObject(40.0, 40.0); 
    3549        pallo.Shape = Shape.Circle; 
    3650        pallo.X = -200.0; 
    3751        pallo.Y = 0.0; 
    38         pallo.Hit(impulssi); 
     52        pallo.Restitution = 1.0; 
     53        pallo.KineticFriction = 0.0; 
     54        pallo.MomentOfInertia = Double.PositiveInfinity; 
    3955        Add(pallo); 
    40  
    41         Level.CreateBorders(); 
    42         pallo.Restitution = 1.0; 
    43         Level.CreateBorders(false); 
    44         Level.Background.Color = Color.Black; 
    45         Camera.ZoomToLevel(); 
     56        pallo.CanRotate = false; 
     57        AddCollisionHandler(pallo, KasittelePallonTormays); 
    4658 
    4759        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    4860        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    4961 
     62        vasenReuna = Level.CreateLeftBorder(); 
     63        vasenReuna.Restitution = 1.0; 
     64        vasenReuna.KineticFriction = 0.0; 
     65        vasenReuna.IsVisible = false; 
    5066 
     67        oikeaReuna = Level.CreateRightBorder(); 
     68        oikeaReuna.Restitution = 1.0; 
     69        oikeaReuna.KineticFriction = 0.0; 
     70        oikeaReuna.IsVisible = false; 
    5171 
     72        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     73        ylaReuna.Restitution = 1.0; 
     74        ylaReuna.KineticFriction = 0.0; 
     75        ylaReuna.IsVisible = false; 
    5276 
     77        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     78        alaReuna.Restitution = 1.0; 
     79        alaReuna.IsVisible = false; 
     80        alaReuna.KineticFriction = 0.0; 
    5381 
     82        Level.Background.Color = Color.Black; 
    5483 
     84        Camera.ZoomToLevel(); 
     85        const double PALLON_MIN_NOPEUS = 500; 
    5586 
     87} 
    5688 
     89    PhysicsObject LuoMaila(double x, double y) 
     90    { 
     91        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     92        maila.Shape = Shape.Rectangle; 
     93        maila.X = x; 
     94        maila.Y = y; 
     95        maila.Restitution = 1.0; 
     96        maila.KineticFriction = 0.0; 
     97        Add(maila); 
     98        return maila; 
    5799    } 
     100 
     101    void LisaaLaskurit() 
     102    { 
     103        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     104        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     105    } 
     106 
     107    IntMeter LuoPisteLaskuri(double x, double y) 
     108    { 
     109        IntMeter laskuri = new IntMeter(0); 
     110        laskuri.MaxValue = 10; 
     111 
     112        Label naytto = new Label(); 
     113        naytto.BindTo(laskuri); 
     114        naytto.X = x; 
     115        naytto.Y = y; 
     116        naytto.TextColor = Color.White; 
     117        naytto.BorderColor = Level.Background.Color; 
     118        naytto.Color = Level.Background.Color; 
     119        Add(naytto); 
     120 
     121        return laskuri; 
     122    } 
     123 
     124    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     125    { 
     126        if (kohde == oikeaReuna) 
     127        { 
     128            pelaajan1Pisteet.Value += 1; 
     129        } 
     130        else if (kohde == vasenReuna) 
     131        { 
     132            pelaajan2Pisteet.Value += 1; 
     133        } 
     134    } 
     135 
    58136    void AloitaPeli() 
    59137    { 
    60138        Vector impulssi = new Vector(500.0, 0.0); 
    61         PhysicsObject pallo = new PhysicsObject(40.0, 40.0); 
    62139        pallo.Hit(impulssi); 
     140    } 
     141     
    63142 
    64  
    65     } 
    66     PhysicsObject LuoMaila(double X, double Y) 
    67     { 
    68         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    69         maila.Shape = Shape.Rectangle; 
    70         maila.X = X; 
    71         maila.Y = Y; 
    72         maila.Restitution = 1.0; 
    73         Add(maila); 
    74         maila.Color = Color.Blue; 
    75         return maila; 
    76  
    77  
    78         PhysicsObject maila2 = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    79         maila2.Shape = Shape.Rectangle; 
    80         maila2.X = X; 
    81         maila2.Y = Y; 
    82         maila2.Restitution = 1.0; 
    83         Add(maila2); 
    84         maila2.Color = Color.Blue; 
    85         return maila2; 
    86  
    87     } 
    88143    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    89144    { 
    90         maila.Velocity = nopeus; 
    91  
     145        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     146        { 
     147            maila.Velocity = Vector.Zero; 
     148            return; 
     149        } 
    92150        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
    93151        { 
     
    97155 
    98156        maila.Velocity = nopeus; 
    99  
    100  
    101  
    102         maila1.Velocity = nopeus 
    103     ; 
    104157    } 
    105     void OhjainAsetukset() 
    106  
     158    void AsetaOhjaimet() 
    107159    { 
    108  
    109         Vector nopeusYlos = new Vector(0, 200); 
    110         Vector nopeusAlas = new Vector(0, -200); 
    111  
    112160        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
    113161        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     
    121169 
    122170        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    123  
    124  
    125  
    126         //AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
    127  
    128         // PhysicsObject maila; 
    129         //PhysicsObject maila2; 
    130  
    131         // Keyboard.Listen(Key.A, ButtonState.Up, LiikutaMaila1Ylos, "Pelaaja 1: Liikuta mailaa ylös"); 
    132         // Keyboard.Listen(Key.A, ButtonState.Released, PysaytaMaila1, null); 
    133  
    134  
     171        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    135172    } 
    136 } 
     173    } 
Note: See TracChangeset for help on using the changeset viewer.