Changeset 9307


Ignore:
Timestamp:
2017-08-01 13:46:37 (23 months ago)
Author:
npo17_79
Message:

Pongipeli valmis.

Location:
2017/31/MirkaH/Pong
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • 2017/31/MirkaH/Pong/Pong/Pong/Pong.cs

    r9277 r9307  
    99public class Pong : PhysicsGame 
    1010{ 
    11     Vector nopeusYlos = new Vector(0, 200); 
     11    Vector nopeusYlos = new Vector(0, 400); 
    1212    Vector nopeusAlas = new Vector(0, -200); 
    1313 
     
    1717    PhysicsObject maila2; 
    1818 
     19    PhysicsObject vasenReuna; 
     20    PhysicsObject oikeaReuna; 
     21        
     22 
     23    IntMeter pelaajan1Pisteet; 
     24    IntMeter pelaajan2Pisteet; 
     25 
    1926    public override void Begin() 
    2027    { 
    21        
     28 
    2229        LuoKentta(); 
    2330        AsetaOhjaimet(); 
     31        LisaaLaskurit(); 
    2432        AloitaPeli(); 
    25        
     33 
    2634 
    2735 
     
    4957 
    5058 
     59 
    5160    void LuoKentta() 
    5261 
     
    5564        pallo = new PhysicsObject(40.0, 70.0); 
    5665        Add(pallo); 
    57         pallo.Shape = Shape.Circle; 
     66        pallo.Shape = Shape.Heart; 
     67     
    5868        pallo.Color = Color.DarkBlue; 
    5969        Level.Background.Color = Color.DarkTurquoise; 
     
    6373        pallo.CanRotate = false; 
    6474 
     75        AddCollisionHandler(pallo, KasittelePallonTormays); 
     76 
    6577        //reunat, kimmoisuus ja näkyvyys 
    66         Surfaces reunat = Level.CreateBorders(1.0, true); 
    67         foreach (Surface reuna in reunat) reuna.Color = Color.Crimson; 
     78 
     79        //Surfaces reunat = Level.CreateBorders(1.0, true); 
     80 
     81        vasenReuna = Level.CreateLeftBorder(); 
     82        vasenReuna.Restitution = 1.0; 
     83        vasenReuna.IsVisible = true; 
     84        vasenReuna.Color = Color.Aquamarine; 
     85 
     86        oikeaReuna = Level.CreateRightBorder(); 
     87        oikeaReuna.Restitution = 1.0; 
     88        oikeaReuna.IsVisible = true; 
     89        oikeaReuna.Color = Color.Aqua; 
     90 
     91        PhysicsObject alareuna = Level.CreateBottomBorder(); 
     92        alareuna.Restitution = 1.0; 
     93        alareuna.IsVisible = true; 
     94        alareuna.Color = Color.BloodRed; 
     95 
     96        PhysicsObject ylareuna = Level.CreateTopBorder(); 
     97        ylareuna.Restitution = 1.0; 
     98        ylareuna.IsVisible = true; 
     99        ylareuna.Color = Color.MediumVioletRed; 
     100 
     101       
     102 
     103 
     104         
    68105        Camera.ZoomToAllObjects(); 
    69106 
    70107        //maila 
    71        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    72        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    73        // LuoMaila(0, 0); 
     108        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     109        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     110        // LuoMaila(0, 0); 
     111    } 
    74112 
     113    void LisaaLaskurit() 
     114    { 
     115        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     116        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
    75117    } 
     118 
     119 
     120    IntMeter LuoPisteLaskuri(double x, double y) 
     121    { 
     122        IntMeter laskuri = new IntMeter(0); 
     123        laskuri.MaxValue = 10; 
     124        Label naytto = new Label(); 
     125        naytto.BindTo(laskuri); 
     126        naytto.X = x; 
     127        naytto.Y = y; 
     128        naytto.TextColor = Color.Black; 
     129        naytto.BorderColor = Level.Background.Color; 
     130        naytto.Color = Level.Background.Color; 
     131        Add(naytto); 
     132 
     133        return laskuri; 
     134    } 
     135 
     136 
     137void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     138    { 
     139        if (kohde == oikeaReuna) 
     140        { pelaajan1Pisteet.Value += 1; 
     141        } 
     142        else if (kohde == vasenReuna) 
     143            { 
     144            pelaajan2Pisteet.Value += 1; 
     145        } 
     146    } 
     147 
     148 
     149    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     150    { 
     151        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     152        { 
     153            maila.Velocity = Vector.Zero; 
     154            return; 
     155        } 
     156        
     157 
     158        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     159        { 
     160            maila.Velocity = Vector.Zero; 
     161            return; 
     162        } 
     163         
     164        maila.Velocity = nopeus; 
     165    } 
     166     
    76167    //Pelin aloittaminen 
    77168    void AloitaPeli() 
     
    92183 
    93184    } 
    94     void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    95     { maila.Velocity = nopeus; 
     185    const double PALLON_MIN_NOPEUS = 500; 
     186 
     187    protected override void Update(Time time) 
     188    { 
     189        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS) 
     190        { 
     191            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y); 
     192        } 
     193        base.Update(time); 
    96194    } 
     195 
    97196} 
Note: See TracChangeset for help on using the changeset viewer.