Changeset 839 for 2010/24/olpesasa


Ignore:
Timestamp:
2010-06-15 11:28:32 (9 years ago)
Author:
anlakane
Message:

Tein pongin valmiiksi.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/olpesasa/Pong/Peli.cs

    r806 r839  
    22using Jypeli; 
    33using Jypeli.ScreenObjects; 
    4 using Jypeli.Assets; 
    54 
    65public class Peli : PhysicsGame 
    76{ 
    87    PhysicsObject pallo; 
     8 
    99    PhysicsObject maila1; 
    1010    PhysicsObject maila2; 
     11 
     12    PhysicsObject vasenReuna; 
     13    PhysicsObject oikeaReuna; 
     14 
     15    Vector nopeusYlos = new Vector(0, 200); 
     16    Vector nopeusAlas = new Vector(0, -200); 
     17 
     18    IntMeter pelaajan1Pisteet; 
     19    IntMeter pelaajan2Pisteet; 
     20 
    1121    protected override void Begin() 
    1222    { 
    13         //TODO: Alusta peli tässä 
    1423        LuoKentta(); 
    15         Ohjaimet(); 
     24        AsetaOhjaimet(); 
    1625        AloitaPeli(); 
     26        LisaaLaskurit(); 
    1727    } 
    18     void LuoKentta () 
     28 
     29    void LuoKentta() 
    1930    { 
    20         pallo = new PhysicsObject(50, 50); 
     31        pallo = new PhysicsObject(40.0, 40.0); 
    2132        pallo.Shape = Shapes.Circle; 
    22         pallo.Color = Color.Blue; 
     33        pallo.X = -200.0; 
     34        pallo.Y = 0.0; 
     35        pallo.Color = Color.MediumBlue; 
     36        pallo.Restitution = 1.5; 
     37        pallo.KineticFriction = 0; 
     38        pallo.CanRotate = false; 
    2339        Add(pallo); 
    24         pallo.X = -200; 
    25         pallo.Y = 50; 
    26         Level.CreateBorders(1.0, false); 
    27         pallo.Restitution = 2.2; 
    28         Level.BackgroundColor = Color.Black; 
     40 
     41        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     42        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     43 
     44        vasenReuna = Level.CreateLeftBorder(); 
     45 
     46        vasenReuna.Restitution = 1.0; 
     47        vasenReuna.IsVisible = false; 
     48 
     49        oikeaReuna = Level.CreateRightBorder(); 
     50 
     51        oikeaReuna.Restitution = 1.0; 
     52        oikeaReuna.IsVisible = false; 
     53        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     54        ylaReuna.Restitution = 1.0; 
     55        ylaReuna.IsVisible = false; 
     56        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     57        alaReuna.Restitution = 1.0; 
     58        alaReuna.IsVisible = false; 
     59 
     60        Level.BackgroundColor = Color.DarkBlue; 
     61 
    2962        Camera.ZoomToLevel(); 
     63        AddCollisionHandler(pallo, KasittelePallonTormays); 
     64    } 
    3065 
    31         LuoMaila(Level.Left + 20.0, 0.0); 
    32         LuoMaila(Level.Right - 20.0, 0.0); 
    33     } 
    34     void AloitaPeli() 
    35     { 
    36         Vector liiku = new Vector(100.0, 50.0); 
    37         pallo.Hit(liiku); 
    38     } 
    3966    PhysicsObject LuoMaila(double x, double y) 
    4067    { 
     
    4370        maila.X = x; 
    4471        maila.Y = y; 
    45         maila.Restitution = 1.0; 
     72        maila.Restitution = 1.5; 
     73        maila.Color = Color.Blue; 
    4674        Add(maila); 
    4775        return maila; 
    4876    } 
    49     void Ohjaimet() 
     77 
     78    void AloitaPeli() 
    5079    { 
     80        Vector impulssi = new Vector(500.0, 0.0); 
     81        pallo.Hit(impulssi); 
     82    } 
     83 
     84    void AsetaOhjaimet() 
     85    { 
     86        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     87        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     88        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     89        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     90 
     91        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     92        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     93        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     94        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     95 
     96        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    5197        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    52         Keyboard.Listen(Key.A, ButtonState.Pressed, MailaYlos, "Pelaaja 1: Liikuta mailaa ylös",maila1); 
    53         Keyboard.Listen(Key.A, ButtonState.Released, MailaStop, null,maila1); 
    54     } 
    55     void MailaYlos(PhysicsObject maila) 
    56     { 
    57          Vector nopeus = new Vector( 0, 200 ); 
    58          maila.Velocity = nopeus; 
     98 
     99        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     100        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     101        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     102        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     103 
     104        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     105        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     106        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     107        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     108 
     109        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     110        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
    59111 
    60112    } 
    61     void MailaStop(PhysicsObject maila) 
     113 
     114    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    62115    { 
    63         maila.Velocity = Vector.Zero; 
     116        if ((nopeus.Y < 0) && (maila.Y < Level.Bottom)) 
     117        { 
     118            maila.Velocity = Vector.Zero; 
     119            return; 
     120        } 
     121        if ((nopeus.Y > 0) && (maila.Y > Level.Top)) 
     122        { 
     123            maila.Velocity = Vector.Zero; 
     124            return; 
     125        } 
     126 
     127        maila.Velocity = nopeus; 
     128    } 
     129    void LisaaLaskurit() 
     130    { 
     131        pelaajan1Pisteet = PisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     132        pelaajan2Pisteet = PisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     133    } 
     134    IntMeter PisteLaskuri(double x, double y) 
     135    { 
     136        IntMeter laskuri = new IntMeter(0); 
     137        laskuri.MaxValue = 10; 
     138        ValueDisplay naytto = new ValueDisplay(); 
     139        naytto.BindTo(laskuri); 
     140        naytto.X = x; 
     141        naytto.Y = y; 
     142        naytto.ValueColor = Color.White; 
     143        Add(naytto); 
     144        return laskuri; 
     145    } 
     146    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     147    { 
     148        if (kohde == oikeaReuna) 
     149        { 
     150            pelaajan1Pisteet.Value += 1; 
     151        } 
     152        else if (kohde == vasenReuna) 
     153        { 
     154            pelaajan2Pisteet.Value += 1; 
     155        } 
    64156    } 
    65157 
Note: See TracChangeset for help on using the changeset viewer.