Changeset 7748 for 2016/27


Ignore:
Timestamp:
2016-07-05 10:41:03 (3 years ago)
Author:
karkaite
Message:
 
Location:
2016/27/PekkaP/PongVersionTwo
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • 2016/27/PekkaP/PongVersionTwo/PongVersionTwo/PongVersionTwo/Ohjelma.cs

    r7683 r7748  
    66    static void Main(string[] args) 
    77    { 
    8         using (PongVersionTwo game = new PongVersionTwo()) 
     8        using (Pong 
     9            game = new Pong()) 
    910        { 
    1011#if !DEBUG 
  • 2016/27/PekkaP/PongVersionTwo/PongVersionTwo/PongVersionTwo/PongVersionTwo.cs

    r7718 r7748  
    1 using System; 
     1 
     2using System; 
    23using System.Collections.Generic; 
     4using System.Linq; 
     5using System.Text; 
    36using Jypeli; 
    47using Jypeli.Assets; 
     
    710using Jypeli.Widgets; 
    811 
    9 public class PongVersionTwo : PhysicsGame 
     12public class Pong : PhysicsGame 
    1013{ 
    1114    Vector nopeusYlos = new Vector(0, 200); 
     
    1619    PhysicsObject maila2; 
    1720 
     21    PhysicsObject vasenReuna; 
     22    PhysicsObject oikeaReuna; 
     23 
    1824    IntMeter pelaajan1Pisteet; 
    1925    IntMeter pelaajan2Pisteet; 
     26 
    2027    public override void Begin() 
    2128    { 
    22         // TODO: Kirjoita ohjelmakoodisi tähän 
    23         Luokentta(); 
     29        LuoKentta(); 
    2430        AsetaOhjaimet(); 
     31        LisaaLaskurit(); 
    2532        AloitaPeli(); 
    26         LisaaLaskurit(); 
    2733    } 
    28     void Luokentta() 
     34 
     35    void LuoKentta() 
    2936    { 
    3037        pallo = new PhysicsObject(40.0, 40.0); 
    31         pallo.Restitution = 3.0; 
    3238        pallo.Shape = Shape.Circle; 
    33         Add(pallo); 
     39        pallo.Color = Color.Black; 
    3440        pallo.X = -200.0; 
    3541        pallo.Y = 0.0; 
     42        pallo.Restitution = 1.0; 
     43        pallo.KineticFriction = 0.0; 
     44        pallo.MomentOfInertia = Double.PositiveInfinity; 
     45        Add(pallo); 
     46        AddCollisionHandler(pallo, KasittelePallonTormays); 
    3647 
    3748        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    38         maila2 = LuoMaila(Level.Right + 20.0, 0.0); 
     49        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3950 
    40         Level.CreateBorders(1.0, false); 
     51        vasenReuna = Level.CreateLeftBorder(); 
     52        vasenReuna.Restitution = 1.0; 
     53        vasenReuna.KineticFriction = 0.0; 
     54        vasenReuna.IsVisible = false; 
     55 
     56        oikeaReuna = Level.CreateRightBorder(); 
     57        oikeaReuna.Restitution = 1.0; 
     58        oikeaReuna.KineticFriction = 0.0; 
     59        oikeaReuna.IsVisible = false; 
     60 
     61        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     62        ylaReuna.Restitution = 1.0; 
     63        ylaReuna.KineticFriction = 0.0; 
     64        ylaReuna.IsVisible = false; 
     65 
     66        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     67        alaReuna.Restitution = 1.0; 
     68        alaReuna.IsVisible = false; 
     69        alaReuna.KineticFriction = 0.0; 
     70 
    4171        Level.Background.Color = Color.Green; 
    4272 
    4373        Camera.ZoomToLevel(); 
    4474    } 
    45     void AloitaPeli() 
    46     { 
    47         Vector impulssi = new Vector(500.0, 0.0); 
    48         pallo.Hit(impulssi); 
    49     } 
     75 
    5076    PhysicsObject LuoMaila(double x, double y) 
    5177    { 
    5278        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    5379        maila.Shape = Shape.Rectangle; 
     80        maila.Color = Color.Black; 
    5481        maila.X = x; 
    5582        maila.Y = y; 
    5683        maila.Restitution = 1.0; 
     84        maila.KineticFriction = 0.0; 
    5785        Add(maila); 
    5886        return maila; 
    59  
    60  
    6187    } 
    62     void AsetaOhjaimet() 
    63     { 
    64         Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
    65         Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    66         Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
    67         Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    68  
    69         Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
    70         Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    71         Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
    72         Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    73  
    74         Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    75         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    76     } 
    77     void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    78     { 
    79         if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
    80         { 
    81             maila.Velocity = Vector.Zero; 
    82             return; 
    83         } 
    84         if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
    85         { 
    86             maila.Velocity = Vector.Zero; 
    87             return; 
    88         } 
    89  
    90         maila.Velocity = nopeus; 
    91     } 
    92  
    9388 
    9489    void LisaaLaskurit() 
    9590    { 
    96         // ... 
     91        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     92        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
    9793    } 
     94 
    9895    IntMeter LuoPisteLaskuri(double x, double y) 
    9996    { 
     
    105102        naytto.X = x; 
    106103        naytto.Y = y; 
    107         naytto.TextColor = Color.Crimson; 
     104        naytto.TextColor = Color.Yellow; 
    108105        naytto.BorderColor = Level.Background.Color; 
     106        naytto.Color = Level.Background.Color; 
    109107        Add(naytto); 
    110108 
    111109        return laskuri; 
    112110    } 
     111 
     112    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     113    { 
     114        if (kohde == oikeaReuna) 
     115        { 
     116            pelaajan1Pisteet.Value += 1; 
     117        } 
     118        else if (kohde == vasenReuna) 
     119        { 
     120            pelaajan2Pisteet.Value += 1; 
     121        } 
     122    } 
     123 
     124    void AloitaPeli() 
     125    { 
     126        Vector impulssi = new Vector(500.0, 0.0); 
     127        pallo.Hit(impulssi); 
     128    } 
     129 
     130    void AsetaOhjaimet() 
     131    { 
     132        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     133        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     134        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     135        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     136 
     137        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     138        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     139        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     140        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     141 
     142        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     143        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     144 
     145        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     146        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     147        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     148        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     149 
     150        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     151        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     152        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     153        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     154 
     155        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     156        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     157    } 
     158 
     159    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     160    { 
     161        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     162        { 
     163            maila.Velocity = Vector.Zero; 
     164            return; 
     165        } 
     166        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     167        { 
     168            maila.Velocity = Vector.Zero; 
     169            return; 
     170        } 
     171 
     172        maila.Velocity = nopeus; 
     173    } 
     174    const double PALLON_MIN_NOPEUS = 500; 
     175 
     176    protected override void Update(Time time) 
     177    { 
     178        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS) 
     179        { 
     180            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y); 
     181        } 
     182        base.Update(time); 
     183    } 
    113184} 
Note: See TracChangeset for help on using the changeset viewer.