source: 2010/27/juoshako/Br3ak 1t/Peli.cs @ 1193

Revision 1193, 6.6 KB checked in by juoshako, 10 years ago (diff)

Br3ak 1t 90% valmiina.

Line 
1using System;
2using Jypeli;
3using System.Collections.Generic;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Laatta : PhysicsObject
8{
9    private bool onkoJoOsuttukerran;
10    public bool OnkoJoOsuttuKerran
11    {
12        get { return onkoJoOsuttukerran; }
13        set { onkoJoOsuttukerran = value; }
14    } 
15    public Laatta(double width, double height)
16        :base(width, height)
17    {
18        MakeStatic();
19    }
20}
21
22
23public class Peli : PhysicsGame
24{
25   
26    const int ruudunLeveys = 50;
27    const int ruudunKorkeus = 50;
28
29    Vector nopeusVasemmalle = new Vector (-200.0, 0);
30    Vector nopeusOikealle = new Vector(200.0, 0);
31
32    PhysicsObject maila;
33    PhysicsObject pallo;
34
35    IntMeter pisteLaskuri;
36
37    List<Label> valikonKohdat;
38
39    protected override void Begin()
40    {
41
42        Valikko();
43       
44    }
45    void AloitaPeli()
46    {
47        ClearAll();
48
49        LuoKentta();
50        LuoLaskuri();
51        AsetaOhjaimet();
52        //LuoMaila();
53
54        Vector impulssi = new Vector(0.0, 500.0);
55        pallo.Hit(impulssi);
56    }
57    void Lopeta()
58    {
59        Exit();
60    }
61    void LuoMaila()
62    {
63        maila = PhysicsObject.CreateStaticObject(300, 30);
64        //maila.Shape = Shapes.Circle;
65        maila.X = 0;
66        maila.Y = Level.Bottom + 100;
67        maila.CanRotate = false;
68        maila.KineticFriction = 1;
69        maila.Color = Color.Blue;
70        Add(maila);
71    }
72    void LuoKentta()
73    {
74        TileMap ruudut = TileMap.FromFile ("Kentta.txt");
75        ruudut['='] = LuoPalikka;
76        ruudut['*'] = LuoLaatta;
77        ruudut['.'] = LuoTiili;
78        ruudut.Insert (ruudunLeveys, ruudunKorkeus);
79        Camera.ZoomToLevel();
80
81        pallo = new PhysicsObject(40, 40);
82        pallo.Shape = Shapes.Circle;
83        pallo.X = 0;
84        pallo.Y = Level.Bottom+110;
85        pallo.Color = Color.Black;
86        Add (pallo);
87
88        LuoMaila();
89
90        AddCollisionHandler(pallo, KasittelePallonTormays);
91    }
92    PhysicsObject LuoPalikka()
93    {
94        PhysicsObject palikka = PhysicsObject.CreateStaticObject (50.0, 50.0);
95        palikka.Shape = Shapes.Rectangle;
96        palikka.Color = Color.Gray;
97        palikka.Restitution = 1.0;
98        palikka.Tag = "palikka";
99        return palikka;
100    }
101    PhysicsObject LuoLaatta()
102    {
103        Laatta laatta = new Laatta(48.0, 48.0);
104        laatta.Tag = "laatta";     
105        return laatta;
106    }
107    PhysicsObject LuoTiili()
108    {
109        PhysicsObject tiili = PhysicsObject.CreateStaticObject(50.0, 50.0);
110        tiili.Tag = "tiili";
111        tiili.Color = Color.Red;
112        tiili.Shape = Shapes.Rectangle;
113        return tiili;
114    }
115
116   
117    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
118    {
119        if (kohde.Tag.ToString() == "laatta")
120        {
121            bool tuhotaanko = ((Laatta)kohde).OnkoJoOsuttuKerran;
122            if (tuhotaanko)
123            {
124                Timer.SingleShot(0.1, kohde.Destroy);
125                pisteLaskuri.Value++;
126            }
127            else
128            {
129                ((Laatta)kohde).OnkoJoOsuttuKerran = true;
130                kohde.Color = Color.Gray;
131            }
132
133           
134        }
135        if (kohde.Tag.ToString() == "tiili")
136        {
137            MessageDisplay.Add("Peli loppui");
138            PeliPaattyi();
139        }
140
141    }
142
143    void AsetaOhjaimet()
144    {
145        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
146        Keyboard.Listen (Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta mailaa vasemmalle", maila, nopeusVasemmalle);
147        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, maila, Vector.Zero); 
148        Keyboard.Listen (Key.Right, ButtonState.Down, AsetaNopeus, "Liikuta mailaa oikealle", maila, nopeusOikealle);
149        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, maila, Vector.Zero);
150
151        //Keyboard.Listen (Key.Escape, ButtonState.Pressed, Exit, "Poistu");
152        Keyboard.Listen (Key.F1, ButtonState.Down, ShowControlHelp, "Näytä ohjeet");
153    }
154    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
155    {
156       
157        if (( nopeus.X < 0 ) && ( maila.X < Level.Left))
158        {
159            maila.Velocity = Vector.Zero;
160            return;
161        }
162            if (( nopeus.X > 0 ) && (maila.X > Level.Right))
163            {
164                maila.Velocity = Vector.Zero;
165                return;
166            }
167            maila.Velocity = nopeus;
168       
169    }
170    void LuoLaskuri()
171    {
172        pisteLaskuri = new IntMeter(0);
173        Label pisteNaytto = new Label();
174        pisteNaytto.X = Screen.Left + 100;
175        pisteNaytto.Y = Screen.Top -100;
176        pisteNaytto.TextColor = Color.Red;
177
178        pisteNaytto.BindTo(pisteLaskuri);
179        Add(pisteNaytto);
180
181        Label pisteTeksti = new Label("Pisteitä");
182        pisteTeksti.X = Screen.Left + 50;
183        pisteTeksti.X = Screen.Top - 100;
184        pisteTeksti.TextColor = Color.Red;
185        Add(pisteTeksti);
186
187        IntMeter laskuri = new IntMeter(0);
188        laskuri.MaxValue = 120;
189        laskuri.UpperLimit += LaskuriYlarajassa;
190    }
191    void PeliPaattyi()
192    {
193        pallo.Destroy();
194        maila.Destroy();
195    }
196    void Valikko()
197    {
198        ClearAll();
199        Mouse.IsCursorVisible = true;
200        valikonKohdat = new List<Label>();
201
202        Label kohta1 = new Label("Aloita uusi peli");
203        kohta1.Position = new Vector(0, 40);
204        valikonKohdat.Add(kohta1);
205
206        Label kohta2 = new Label("Lopeta");
207        kohta2.Position = new Vector(0, -40);
208        valikonKohdat.Add(kohta2);
209
210        foreach (Label valikonKohta in valikonKohdat)
211        {
212            Add(valikonKohta);
213        }
214        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
215        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
216
217        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
218        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
219    }
220    void ValikossaLiikkuminen(AnalogState hiirenTila)
221    {
222        foreach (Label kohta in valikonKohdat)
223        {
224            if (Mouse.IsCursorOn(kohta))
225            {
226                kohta.TextColor = Color.Red;
227            }
228            else
229            {
230                kohta.TextColor = Color.Black;
231            }
232        }
233    }
234    void LaskuriYlarajassa(int arvo)
235    {
236        MessageDisplay.TextColor = Color.White;
237        MessageDisplay.Add("Pääsit kentän läpi!");
238    }
239
240}
Note: See TracBrowser for help on using the repository browser.