Changeset 1102


Ignore:
Timestamp:
2010-07-06 14:57:24 (9 years ago)
Author:
paaaanro
Message:

Sain Pongin valmiiksi

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/27/oteehann/Pong/Peli.cs

    r1066 r1102  
    66public class Peli : PhysicsGame 
    77{ 
     8    Vector nopeusYlos = new Vector(0, 200); 
     9    Vector nopeusAlas = new Vector(0, -200); 
     10 
    811    PhysicsObject pallo; 
     12    PhysicsObject maila1; 
     13    PhysicsObject maila2; 
     14 
     15    PhysicsObject vasenReuna; 
     16    PhysicsObject oikeaReuna; 
     17 
     18    IntMeter pelaajan1Pisteet; 
     19    IntMeter pelaajan2Pisteet; 
     20 
     21 
     22 
    923    protected override void Begin() 
    1024    { 
    11        
     25 
    1226        //TODO: Alusta peli tässä 
    1327 
    1428        LuoKentta(); 
    15         Vector impulssi = new Vector(700.0, 700.0); 
     29        AsetaOhjaimet(); 
     30        LisaaLaskurit(); 
     31        AloitaPeli(); 
     32        Vector impulssi = new Vector(700.0, 250.0); 
    1633        pallo.Hit(impulssi); 
    17        
     34 
    1835    } 
    1936 
    2037    void LuoKentta() 
    2138    { 
    22          pallo = new PhysicsObject(40.0, 40.0); 
     39        pallo = new PhysicsObject(40.0, 40.0); 
    2340        pallo.Color = Color.White; 
    2441        pallo.Shape = Shapes.Circle; 
     
    2845        Level.CreateBorders(); 
    2946        pallo.Restitution = 1.0; 
    30         Level.CreateBorders(1.0, false); 
     47        vasenReuna = Level.CreateLeftBorder(); 
     48        vasenReuna.Restitution = 1.0; 
     49        vasenReuna.IsVisible = false; 
     50        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     51        alaReuna.Restitution = 1.0; 
     52        alaReuna.IsVisible = false; 
     53        oikeaReuna = Level.CreateRightBorder(); 
     54        oikeaReuna.Restitution = 1.0; 
     55        oikeaReuna.IsVisible = false; 
     56        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     57        ylaReuna.Restitution = 1.0; 
     58        ylaReuna.IsVisible = false; 
     59 
     60        vasenReuna = Level.CreateLeftBorder(); 
     61        oikeaReuna = Level.CreateRightBorder(); 
     62 
     63 
    3164        Level.BackgroundColor = Color.Red; 
    3265        Camera.ZoomToLevel(); 
    33         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    34         maila.Shape = Shapes.Rectangle; 
    35         maila.X = Level.Left + 20.0; 
    36         maila.Y = 0.0; 
    37         maila.Restitution = 1.0; 
    38         Add(maila); 
     66        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     67        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     68        AddCollisionHandler(pallo, KasittelePallonTormays); 
     69 
     70 
    3971 
    4072 
    4173    } 
    4274 
    43     void AloitaPeli; 
     75    void AloitaPeli() 
     76    { 
     77        Vector impulssi = new Vector(500.0, 0.0); 
     78        pallo.Hit(impulssi); 
     79 
     80    } 
     81 
     82    PhysicsObject LuoMaila(double x, double y) 
     83    { 
     84        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     85        maila.Shape = Shapes.Rectangle; 
     86        maila.X = x; 
     87        maila.Y = y; 
     88        maila.Restitution = 1.0; 
     89        Add(maila); 
     90        return maila; 
     91    } 
     92    void AsetaOhjaimet() 
     93    { 
     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 
     100        Keyboard.Listen(Key.Z, ButtonState.Released, Asetanopeus, null, maila1, Vector.Zero); 
     101 
     102        Keyboard.Listen(Key.Up, ButtonState.Down, Asetanopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     103        Keyboard.Listen(Key.Up, ButtonState.Released, Asetanopeus, null, maila2, Vector.Zero); 
     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        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     109    } 
     110    void LiikutaMailaaYlos(PhysicsObject maila) 
     111    { 
     112        if (maila.Y < Level.Top) 
     113        { 
     114 
     115 
     116            Vector nopeus = new Vector(0, 200); 
     117            maila.Velocity = nopeus; 
     118        } 
     119    } 
     120    void PysaytaMaila(PhysicsObject maila) 
     121    { 
     122        maila.Velocity = Vector.Zero; 
     123    } 
     124    void LiikutaMailaaAlas(PhysicsObject maila) 
     125    { 
     126        Vector nopeus = new Vector(0, -200); 
     127        maila.Velocity = nopeus; 
     128 
     129    } 
     130    void Asetanopeus(PhysicsObject maila, Vector nopeus) 
     131    { 
     132        if ((nopeus.Y < 0) && (maila.Y < Level.Bottom)) 
     133        { 
     134            maila.Velocity = Vector.Zero; 
     135            return; 
     136        } 
     137        if ((nopeus.Y > 0) && (maila.Y > Level.Top)) 
     138        { 
     139            maila.Velocity = Vector.Zero; 
     140            return; 
     141        } 
     142 
     143        maila.Velocity = nopeus; 
     144 
     145 
     146    } 
     147    void LisaaLaskurit() 
     148    {//... 
     149        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     150        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     151    } 
     152 
     153    IntMeter LuoPisteLaskuri(double x, double y) 
     154    { 
     155        IntMeter laskuri = new IntMeter(0); 
     156        laskuri.MaxValue = 10; 
     157        Label naytto = new Label(); 
     158        naytto.BindTo(laskuri); 
     159        naytto.X = x; 
     160        naytto.Y = y; 
     161        naytto.TextColor = Color.White; 
     162        Add(naytto); 
     163 
     164        return laskuri; 
     165 
     166    } 
     167    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     168    { 
     169        if (kohde == oikeaReuna) 
     170        { 
     171            pelaajan1Pisteet.Value += 1; 
     172        } 
     173        else if (kohde == vasenReuna) 
     174        { 
     175            pelaajan2Pisteet.Value += 1; 
     176 
     177        } 
     178 
     179 
     180    } 
    44181} 
     182     
     183 
     184      
     185         
     186 
     187 
     188 
Note: See TracChangeset for help on using the changeset viewer.