Changeset 1318 for 2010/30


Ignore:
Timestamp:
2010-07-27 11:30:11 (9 years ago)
Author:
hniemi
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/30/oteimatt/pong/Peli.cs

    r1281 r1318  
    66public class Peli : PhysicsGame 
    77{ 
     8    Vector nopeusYlos = new Vector(0, 200); 
     9    Vector nopeusAlas = new Vector(0, -200); 
     10    PhysicsObject maila1; 
     11    PhysicsObject maila2; 
     12    IntMeter pelaajan1Pisteet; 
     13    IntMeter pelaajan2Pisteet; 
     14    PhysicsObject vasenReuna; 
     15    PhysicsObject oikeaReuna; 
     16 
     17 
    818    PhysicsObject pallo; 
    919 
     
    1121    { 
    1222        LuoKentta(); 
    13         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     23        AsetaOhjaimet(); 
     24        LisaaLaskurit(); 
    1425        AloitaPeli(); 
    1526 
     27         
    1628    } 
    1729 
     
    2638        pallo.Restitution = 1.0; 
    2739        Add(pallo); 
     40        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2841 
    29         LuoMaila(Level.Left + 20.0, 0.0); 
    30         LuoMaila(Level.Right - 20.0, 0.0); 
    31     
    3242 
    33         Level.CreateBorders(1.0, false); 
     43        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     44        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     45 
     46        vasenReuna = Level.CreateLeftBorder(); 
     47        PhysicsObject vasenReuna = Level.CreateLeftBorder(); 
     48        vasenReuna.Restitution = 1.0; 
     49        vasenReuna.IsVisible = false; 
     50 
     51        oikeaReuna = Level.CreateRightBorder(); 
     52        PhysicsObject oikeaReuna = Level.CreateRightBorder(); 
     53        oikeaReuna.Restitution = 1.0; 
     54        oikeaReuna.IsVisible = false; 
     55 
     56        PhysicsObject pohjaReuna = Level.CreateBottomBorder(); 
     57        pohjaReuna.Restitution = 1.0; 
     58        pohjaReuna.IsVisible = false; 
     59 
     60        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     61        ylaReuna.Restitution = 1.0; 
     62        ylaReuna.IsVisible = false; 
     63 
     64 
    3465        Camera.ZoomToLevel(); 
    3566        Level.BackgroundColor = Color.Black; 
     
    4071    void AloitaPeli() 
    4172    { 
    42      Vector impulssi = new Vector(500.0, 100.0); 
     73     Vector impulssi = new Vector(1000.0, 1000.0); 
    4374     pallo.Hit(impulssi); 
    4475      
    4576    } 
    4677 
    47     void LuoMaila(double x, double y) 
    48     { 
    49         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     78    PhysicsObject LuoMaila(double x, double y) 
     79    
     80{ 
     81 
     82 
     83         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    5084        maila.Shape = Shapes.Rectangle; 
    5185        maila.X = x; 
     
    5387        maila.Restitution = 1.0; 
    5488        Add(maila); 
     89 
     90         return maila; 
     91 
     92    } 
     93    void AsetaOhjaimet() 
     94    { 
     95         Keyboard.Listen( Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos ); 
     96         Keyboard.Listen( Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     97 
     98         Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     99         Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     100 
     101         Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     102         Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     103 
     104         Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     105         Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     106 
     107         Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     108 
     109 
     110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     111 
     112        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     113        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     114        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     115        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     116 
     117        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     118        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     119        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     120        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     121 
     122        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     123        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     124 
     125    }  
     126 
     127    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     128    { 
     129        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     130        { 
     131            maila.Velocity = Vector.Zero; 
     132            return; 
     133        } 
     134 
     135        if ( (nopeus.Y > 0) && (maila.Top > Level.Top)) 
     136        { 
     137            maila.Velocity = Vector.Zero; 
     138            return; 
     139        } 
     140     
     141        maila.Velocity = nopeus; 
     142    } 
     143    void LisaaLaskurit() 
     144    { 
     145        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     146        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     147 
     148    } 
     149    IntMeter LuoPisteLaskuri(double x,double y) 
     150    { 
     151        IntMeter laskuri = new IntMeter(0); 
     152        laskuri.MaxValue = 10; 
     153        Label naytto = new Label(); 
     154        naytto.BindTo(laskuri); 
     155        naytto.X = x; 
     156        naytto.Y = y; 
     157        naytto.TextColor = Color.White; 
     158        Add(naytto); 
     159 
     160        return laskuri; 
     161    } 
     162 
     163    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     164    { 
     165        if (kohde == oikeaReuna) 
     166        { 
     167            pelaajan1Pisteet.Value += 1; 
     168        } 
     169        else if (kohde == vasenReuna) 
     170        { 
     171            pelaajan2Pisteet.Value += 1; 
     172        } 
    55173    } 
    56174 
Note: See TracChangeset for help on using the changeset viewer.