source: 2011/26/JimiL/Pelit/Pong/Pong/Peli.cs @ 2228

Revision 2228, 5.1 KB checked in by saselamp, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Vector nopeusYlos = new Vector(0, 2000);
12    Vector nopeusAlas = new Vector(0, -2000);
13
14    //PhysicsObject pallo;
15
16    PhysicsObject maila1;
17    PhysicsObject maila2;
18
19     PhysicsObject vasenReuna;
20     PhysicsObject oikeaReuna;
21
22    IntMeter pelaajan1Pisteet;
23    IntMeter pelaajan2Pisteet;
24
25
26    public override void Begin()
27    {
28        LuoKentta();
29        AsetaOhjaimet();
30        LisaaLaskurit();
31        AloitaPeli();
32
33         Vector impulssi = new Vector(500.0, 0.0);
34        //pallo.Hit(impulssi);
35     
36
37    }
38    void LuoKentta()
39    {
40        for (int i = 0; i < 1000; i++)
41        {
42            PhysicsObject pallo = new PhysicsObject(25.0, 25.0);
43            pallo.X = RandomGen.NextInt(-400, 400);
44            pallo.Y = RandomGen.NextInt(-400, 400);
45            pallo.Restitution = 1.0;
46            pallo.Hit(new Vector(RandomGen.NextInt(-200, 200), RandomGen.NextInt(-200, 200)));
47            Add(pallo);
48        }
49       
50
51        maila1 = LuoMaila( Level.Left + 20.0, 0.0 );
52        maila2 = LuoMaila( Level.Right - 20.0, 0.0 );
53
54
55       
56        //Add(pallo);
57        //AddCollisionHandler(pallo, KasittelePallonTormays);
58
59        vasenReuna = Level.CreateLeftBorder();
60        vasenReuna.Restitution = 1.0;
61        vasenReuna.IsVisible = false;
62        oikeaReuna = Level.CreateRightBorder();
63        oikeaReuna.Restitution = 1.0;
64        oikeaReuna.IsVisible = false;
65        PhysicsObject ylaReuna = Level.CreateTopBorder();
66        ylaReuna.Restitution = 1.0;
67        ylaReuna.IsVisible = false;
68        PhysicsObject alaReuna = Level.CreateBottomBorder();
69        alaReuna.Restitution = 1.0;
70        alaReuna.IsVisible = false;
71
72
73
74
75
76        Level.BackgroundColor = Color.Black;
77        Camera.ZoomToLevel();
78
79
80        MessageDisplay.TextColor = Color.White;
81
82       
83
84    }
85    void AloitaPeli()
86    {
87         Vector impulssi = new Vector( 500.0, 0.0 );
88    //pallo.Hit( impulssi );
89
90    }
91    PhysicsObject LuoMaila(double x, double y)
92
93    {
94        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
95        maila.Shape = Shape.Rectangle;
96        maila.X = x;
97        maila.Y = y;
98        maila.Restitution = 1.0;
99        Add(maila);
100
101        return maila;
102    }
103   
104
105    void AsetaOhjaimet()
106    {
107        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
108        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
109        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
110        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
111
112        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
113        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
114        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
115        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
116
117        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
119
120    }
121    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
122    {
123        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
124        {
125            maila.Velocity = Vector.Zero;
126            return;
127        }
128
129        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
130
131        {
132            maila.Velocity = Vector.Zero;
133            return;
134        }
135
136        maila.Velocity = nopeus;
137    }
138    void LisaaLaskurit()
139    {
140        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
141        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
142
143    }
144    IntMeter LuoPisteLaskuri(double x, double y)
145    {
146        IntMeter laskuri = new IntMeter(0);
147        laskuri.MaxValue = 10;
148        Label naytto = new Label();
149        naytto.BindTo(laskuri);
150        naytto.X = x;
151        naytto.Y = y;
152        naytto.TextColor = Color.White;
153        naytto.BorderColor = Level.BackgroundColor;
154        naytto.Color = Level.BackgroundColor;
155        Add(naytto);
156        return laskuri;
157    }
158    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
159    {
160        if (kohde == oikeaReuna)
161        {
162            pelaajan1Pisteet.Value += 1;
163        }
164        else if (kohde == vasenReuna)
165        {
166            pelaajan2Pisteet.Value += 1;
167        }
168
169    }
170
171    const double PALLON_NOPEUS = 500;
172
173    protected override void Update(Time time)
174    {
175        //if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_NOPEUS)
176        {
177        //    pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y);
178        }
179        base.Update(time);
180    }
181
182}
Note: See TracBrowser for help on using the repository browser.