Changeset 2106 for 2011/24


Ignore:
Timestamp:
2011-06-17 12:46:48 (8 years ago)
Author:
alehanni
Message:
 
Location:
2011/24/AleksiH
Files:
47 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2011/24/AleksiH/pong/pong/Peli.cs

    r1968 r2106  
    1 using System; 
     1using System; 
    22using System.Collections.Generic; 
     3using System.Linq; 
     4using System.Text; 
    35using Jypeli; 
    46using Jypeli.Assets; 
     
    911public class Peli : PhysicsGame 
    1012{ 
     13    Vector nopeusYlos = new Vector(0, 200); 
     14    Vector nopeusAlas = new Vector(0, -200); 
    1115 
    1216    PhysicsObject pallo; 
     17    PhysicsObject maila1; 
     18    PhysicsObject maila2; 
     19 
     20    PhysicsObject vasenReuna; 
     21    PhysicsObject oikeaReuna; 
     22 
     23    IntMeter pelaajan1Pisteet; 
     24    IntMeter pelaajan2Pisteet; 
    1325 
    1426    public override void Begin() 
    1527    { 
    16  
    1728        LuoKentta(); 
    18         
    19          
     29        AsetaOhjaimet(); 
     30        LisaaLaskurit(); 
    2031        AloitaPeli(); 
    21 } 
     32    } 
    2233 
    2334    void LuoKentta() 
    2435    { 
    25         // TODO: Kirjoita ohjelmakoodisi tähän 
    2636        pallo = new PhysicsObject(40.0, 40.0); 
    2737        pallo.Shape = Shape.Circle; 
    28         Add(pallo); 
    29  
    30         LuoMaila(Level.Left + 20.0, 0.0); 
    31         LuoMaila(Level.Right - 20.0, 0.0); 
    32  
    33  
    3438        pallo.X = -200.0; 
    3539        pallo.Y = 0.0; 
    36         Vector impulssi = new Vector(500.0, 0.0); 
    37         pallo.Hit(impulssi); 
    38         Level.CreateBorders(1.0, false); 
    3940        pallo.Restitution = 1.0; 
     41        pallo.KineticFriction = 0.0; 
     42        Add(pallo); 
     43        AddCollisionHandler(pallo, KasittelePallonTormays); 
     44 
     45        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     46        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     47 
     48        vasenReuna = Level.CreateLeftBorder(); 
     49        vasenReuna.Restitution = 1.0; 
     50        vasenReuna.IsVisible = false; 
     51        oikeaReuna = Level.CreateRightBorder(); 
     52        oikeaReuna.Restitution = 1.0; 
     53        oikeaReuna.IsVisible = false; 
     54        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     55        ylaReuna.Restitution = 1.0; 
     56        ylaReuna.IsVisible = false; 
     57        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     58        alaReuna.Restitution = 1.0; 
     59        alaReuna.IsVisible = false; 
     60 
    4061        Level.BackgroundColor = Color.Black; 
     62 
    4163        Camera.ZoomToLevel(); 
     64    } 
    4265 
    43     } 
    44      
    45  
    46  
    47     void AloitaPeli() 
    48     { 
    49         Vector Impulssi = new Vector(500.0, 0.0 ); 
    50     pallo.Hit( Impulssi ); 
    51     PhysicsObject maila2 = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    52      
    53  
    54 } 
    55     void LuoMaila(double x, double y) 
     66    PhysicsObject LuoMaila(double x, double y) 
    5667    { 
    5768        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     
    6172        maila.Restitution = 1.0; 
    6273        Add(maila); 
     74        return maila; 
     75    } 
    6376 
     77    void LisaaLaskurit() 
     78    { 
     79        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     80        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
    6481    } 
     82 
     83    IntMeter LuoPisteLaskuri(double x, double y) 
     84    { 
     85        IntMeter laskuri = new IntMeter(0); 
     86        laskuri.MaxValue = 10; 
     87        Label naytto = new Label(); 
     88        naytto.BindTo(laskuri); 
     89        naytto.X = x; 
     90        naytto.Y = y; 
     91        naytto.TextColor = Color.White; 
     92        naytto.BorderColor = Level.BackgroundColor; 
     93        naytto.Color = Level.BackgroundColor; 
     94        Add(naytto); 
     95        return laskuri; 
     96    } 
     97 
     98    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     99    { 
     100        if (kohde == oikeaReuna) 
     101        { 
     102            pelaajan1Pisteet.Value += 1; 
     103        } 
     104        else if (kohde == vasenReuna) 
     105        { 
     106            pelaajan2Pisteet.Value += 1; 
     107        } 
     108    } 
     109 
     110    void AloitaPeli() 
     111    { 
     112        Vector impulssi = new Vector(500.0, 0.0); 
     113        pallo.Hit(impulssi); 
     114    } 
     115 
    65116    void AsetaOhjaimet() 
    66117    { 
    67         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    68         Keyboard.Listen(Key.A, ButtonState.Down, LiikutaMailaaYlos, "Pelaaja 1: Liikuta mailaa ylös"); 
    69         Keyboard.Listen(Key.A, ButtonState.Released, PysaytaMaila, null); 
     118        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     119        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     120        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     121        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     122 
     123        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     124        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     125        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     126        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     127 
     128        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    70129        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    71130 
     131        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     132        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     133        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     134        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    72135 
     136        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     137        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     138        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     139        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     140 
     141        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     142        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
    73143    } 
    74     void AsetaNopeus 
     144 
     145    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     146    { 
     147        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     148        { 
     149            maila.Velocity = Vector.Zero; 
     150            return; 
     151        } 
     152        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     153        { 
     154            maila.Velocity = Vector.Zero; 
     155            return; 
     156        } 
     157 
     158        maila.Velocity = nopeus; 
     159    } 
    75160} 
    76        
Note: See TracChangeset for help on using the changeset viewer.