Changeset 820


Ignore:
Timestamp:
2010-06-14 15:13:09 (10 years ago)
Author:
joaamaka
Message:

Tein pong-pelin vaiheeseen 6 asti.

File:
1 edited

Legend:

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

    r805 r820  
    22using Jypeli; 
    33using Jypeli.ScreenObjects; 
    4 using Jypeli.Assets; 
    54 
    65public class Peli : PhysicsGame 
     
    98    PhysicsObject maila1; 
    109    PhysicsObject maila2; 
    11     Vector nopeusYlos = new Vector(0, 200); 
    12     Vector nopeusAlas = new Vector(0, -200); 
     10    Vector nopeusYlos = new Vector(0, 500); 
     11    Vector nopeusAlas = new Vector(0, -500); 
    1312 
     13    PhysicsObject vasenReuna; 
     14    PhysicsObject oikeaReuna; 
     15 
     16    IntMeter pelaajan1Pisteet; 
     17    IntMeter pelaajan2Pisteet; 
    1418 
    1519    protected override void Begin() 
     
    1822        AsetaOhjaimet(); 
    1923        AloitaPeli(); 
     24        LisaaLaskurit(); 
    2025    } 
    2126 
     
    2530        pallo.Shape = Shapes.Circle; 
    2631        pallo.Color = Color.Yellow; 
     32        pallo.KineticFriction; 
    2733        Add(pallo); 
    2834        pallo.Restitution = 1.0; 
     
    3339        maila2=LuoMaila(Level.Right - 20.0, 0.0); 
    3440 
    35         Level.CreateBorders(false); 
     41        AddCollisionHandler(pallo, KasittelePallonTormays); 
     42 
     43        vasenReuna = Level.CreateLeftBorder(); 
     44        vasenReuna.Restitution = 1.0; 
     45        vasenReuna.IsVisible = false; 
     46        oikeaReuna = Level.CreateRightBorder(); 
     47        oikeaReuna.Restitution = 1.0; 
     48        oikeaReuna.IsVisible = false; 
     49        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     50        ylaReuna.Restitution = 1.0; 
     51        ylaReuna.IsVisible = false; 
     52        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     53        alaReuna.Restitution = 1.0; 
     54        alaReuna.IsVisible = false; 
     55 
    3656        Level.BackgroundColor = Color.Red; 
    3757 
     
    7191        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    7292        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     93     
     94        ControllerOne.Listen( Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos ); 
     95        ControllerOne.Listen( Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     96        ControllerOne.Listen( Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas ); 
     97        ControllerOne.Listen( Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     98 
     99        ControllerTwo.Listen( Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos ); 
     100        ControllerTwo.Listen( Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero ); 
     101        ControllerTwo.Listen( Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas ); 
     102        ControllerTwo.Listen( Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero ); 
     103 
     104        ControllerOne.Listen( Button.Back, ButtonState.Pressed, Exit, "Poistu" ); 
     105        ControllerTwo.Listen( Button.Back, ButtonState.Pressed, Exit, "Poistu" ); 
     106     
    73107    } 
    74108 
     109    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     110    { 
     111        if ((nopeus.Y < 0) && (maila.Y < Level.Bottom)) 
     112        { 
     113            maila.Velocity = Vector.Zero; 
     114            return; 
     115        } 
     116        if ((nopeus.Y > 0) && (maila.Y > Level.Top)) 
     117        { 
     118            maila.Velocity = Vector.Zero; 
     119            return; 
     120        } 
    75121 
    76    void LiikutaMailaaYlos(PhysicsObject maila) 
    77    { 
    78        if (maila.Y >= Level.Top) 
    79        { 
    80            maila.Velocity = Vector.Zero; 
    81            return; 
    82        } 
     122        maila.Velocity = nopeus; 
    83123 
    84        Vector nopeus = new Vector(0, 500); 
    85        maila.Velocity = nopeus; 
    86    } 
     124    } 
    87125 
    88    void LiikutaMailaaAlas(PhysicsObject maila) 
    89    { 
    90        Vector nopeus = new Vector(0, -500); 
    91        maila.Velocity = nopeus; 
    92    } 
     126    void LisaaLaskurit() 
     127    { 
     128        pelaajan1Pisteet = LuoPisteLaskuri( Screen.Left + 100.0, Screen.Top - 100.0 ); 
     129        pelaajan2Pisteet = LuoPisteLaskuri( Screen.Right - 100.0, Screen.Top - 100.0 ); 
     130    } 
     131     
     132    IntMeter LuoPisteLaskuri(double x, double y) 
     133    { 
     134        IntMeter laskuri = new IntMeter(0); 
     135        laskuri.MaxValue = 10; 
     136        ValueDisplay naytto = new ValueDisplay(); 
     137        naytto.BindTo(laskuri); 
     138        naytto.X = x; 
     139        naytto.Y = y; 
     140        naytto.ValueColor = Color.White; 
     141        Add(naytto); 
     142        return laskuri; 
     143    } 
    93144 
    94      
    95     void PysaytaMaila(PhysicsObject maila) 
    96    { 
    97        maila.Velocity = Vector.Zero; 
    98    } 
     145    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     146    { 
     147                if ( kohde == oikeaReuna ) 
     148            { 
     149                pelaajan1Pisteet.Value += 1; 
     150            } 
     151            else if ( kohde == vasenReuna ) 
     152            { 
     153                pelaajan2Pisteet.Value += 1; 
     154            } 
     155 
     156    } 
    99157 
    100158} 
Note: See TracChangeset for help on using the changeset viewer.