Ignore:
Timestamp:
2016-07-26 14:59:51 (7 years ago)
Author:
empaheik
Message:
 
Location:
2016/30/JuhaniP/FysiikkaPeliräjähdys
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • 2016/30/JuhaniP/FysiikkaPeliräjähdys/FysiikkaPeliräjähdys/FysiikkaPeliräjähdys/FysiikkaPeliräjähdys.cs

    r8088 r8123  
    99public class FysiikkaPeliräjähdys : PhysicsGame 
    1010{ 
    11     PhysicsObject pallo; 
     11    Vector nopeusYlos = new Vector(0, 200); 
     12    Vector nopeusAlas = new Vector(0, -200); 
     13    IntMeter pelaajan1Pisteet; 
     14    IntMeter pelaajan2Pisteet; 
     15PhysicsObject pallo; 
     16 
     17    PhysicsObject vasenReuna; 
     18    PhysicsObject oikeaReuna; 
     19 
     20    PhysicsObject maila1; 
     21    PhysicsObject maila2; 
    1222    public override void Begin() 
    1323    { 
    1424        LuoKentta(); 
    1525        AloitaPeli(); 
    16         Vector impulssi = new Vector(500.0, 0.0); 
    17         pallo.Hit(impulssi); 
     26        LisaaLaskurit(); 
     27        AsetaOhjaimet(); 
    1828 
    19         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    20         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     29 
     30 
    2131    } 
    2232    void LuoKentta() 
    2333    { 
     34        
    2435        pallo = new PhysicsObject(40.0, 40.0); 
    2536        Add(pallo); 
     37        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2638        pallo.Shape = Shape.Circle; 
    2739        pallo.X = -200.0; 
    2840        pallo.Y = 0.0; 
    29         Level.CreateBorders(1.0, false); 
     41        oikeaReuna = Level.CreateRightBorder(); 
     42        oikeaReuna.Restitution = 1.0; 
     43        oikeaReuna.IsVisible = false; 
     44        vasenReuna = Level.CreateLeftBorder(); 
     45        vasenReuna.Restitution = 1.0; 
     46        vasenReuna.IsVisible = false; 
     47        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     48        ylaReuna.Restitution = 1.0; 
     49        ylaReuna.IsVisible = false; 
     50        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     51        alaReuna.Restitution = 1.0; 
     52        alaReuna.IsVisible = false; 
    3053        pallo.Restitution = 1.0; 
     54        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     55        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     56 
     57 
    3158        Camera.ZoomToLevel(); 
    32         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    33         maila.Shape = Shape.Rectangle; 
    34         maila.X = Level.Left + 20.0; 
    35         maila.Y = 0.0; 
    36         maila.Restitution = 1.0; 
    37         Add(maila); 
    38         LuoMaila(Level.Left + 20.0, 0.0); 
    39         LuoMaila(Level.Right - 20.0, 0.0); 
     59 
    4060 
    4161    } 
     
    4565        pallo.Hit(impulssi); 
    4666    } 
    47     void LuoMaila(double x, double y) 
     67    PhysicsObject LuoMaila(double x, double y) 
    4868    { 
    4969        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     
    5373        maila.Restitution = 1.0; 
    5474        Add(maila); 
     75        return maila; 
    5576    } 
    5677    void AsetaOhjaimet() 
    5778    { 
     79        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: LiikutaMaila1Ylos", maila1, nopeusYlos); 
     80        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     81        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     82        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     83 
     84        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     85        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     86        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     87        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     88 
     89        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     90 
     91 
     92 
    5893        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    5994    } 
     95    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     96    { 
     97        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     98        { 
     99            maila.Velocity = Vector.Zero; 
     100            return; 
     101        } 
     102 
     103        maila.Velocity = nopeus; 
     104    } 
     105    void LisaaLaskurit() 
     106    { 
     107        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     108        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);    // ... 
     109    } 
     110    IntMeter LuoPisteLaskuri(double x,double y) 
     111    { 
     112        IntMeter laskuri = new IntMeter(0); 
     113        laskuri.MaxValue = 10; 
     114        Label naytto = new Label(); 
     115        naytto.BindTo(laskuri); 
     116        naytto.X = x; 
     117        naytto.Y = y; 
     118        naytto.TextColor = Color.White; 
     119        naytto.BorderColor = Level.Background.Color; 
     120        naytto.Color = Level.Background.Color; 
     121        Add(naytto); 
     122 
     123        return laskuri; 
     124    } 
     125    
     126    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     127    { 
     128        if (kohde == oikeaReuna) 
     129        { 
     130            pelaajan1Pisteet.Value += 1; 
     131        } 
     132        else if (kohde == vasenReuna) 
     133        { 
     134            pelaajan2Pisteet.Value += 1; 
     135        } 
     136    } 
     137} 
    60138 
    61139 
    62 } 
     140 
     141 
     142 
     143 
     144 
Note: See TracChangeset for help on using the changeset viewer.