source: 2012/30/MatildaL/SquareGuard/SquareGuard/SquareGuard/SquareGuard.cs @ 3792

Revision 3792, 7.4 KB checked in by malirola, 11 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class SquareGuard : PhysicsGame
11{
12    const double nopeus = 200;
13    const double hyppyNopeus = 1000;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter nelio;
17    Image tahtiKuva = LoadImage("tahti");
18
19    int kenttaNro = 1;
20    IntMeter laskuri;
21
22    List<Label> valikonKohdat;
23
24
25    public override void Begin()
26    {
27        Valikko();
28        //Camera.ZoomFactor = 1.0;
29          Camera.StayInLevel = true;
30        //SeuraavaKentta();
31    }
32
33    void LuoKentta(string kenttatiedosto)
34    {
35        TileMap kentta = TileMap.FromLevelAsset(kenttatiedosto);
36        kentta.SetTileMethod('#', LisaaTaso);
37        kentta.SetTileMethod('*', LisaaTahti);
38        kentta.SetTileMethod('N', LisaaNelio);
39        kentta.SetTileMethod('P', LisaaPallo);
40        kentta.SetTileMethod('e', LisaaEste);
41        kentta.Execute();
42        Level.CreateBorders(1.0, false);
43        Level.BackgroundColor = Color.Lavender;
44    }
45
46    void LisaaTaso(Vector paikka, double leveys, double korkeus)
47    {
48        PhysicsObject taso = PhysicsObject.CreateStaticObject(50, 10);
49        taso.Position = paikka;
50        taso.Restitution = 1.0;
51        taso.Color = Color.Black;
52        Add(taso);
53        taso.CollisionIgnoreGroup = 1;
54    }
55
56    void LisaaTahti(Vector paikka, double leveys, double korkeus)
57    {
58        PhysicsObject tahti = PhysicsObject.CreateStaticObject(20, 20);
59        tahti.IgnoresCollisionResponse = true;
60        tahti.Position = paikka;
61        tahti.Shape = Shape.Diamond;
62        tahti.Color = Color.Violet;
63        tahti.Tag = "tahti";
64        Add(tahti);
65    }
66
67    void LisaaNelio(Vector paikka, double leveys, double korkeus)
68    {
69        nelio = new PlatformCharacter(20, 20);
70        nelio.Position = paikka;
71        nelio.Mass = 3.0;
72        nelio.Shape = Shape.Rectangle;
73        nelio.Color = Color.Purple;
74        AddCollisionHandler(nelio, "tahti", TormaaTahteen);
75        Add(nelio);
76    }
77
78    void LisaaPallo(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject pallo = new PhysicsObject(30, 30);
81        pallo.Shape = Shape.Circle;
82        pallo.Color = Color.Ultramarine;
83        pallo.Restitution = 1.0;
84        pallo.KineticFriction = 0.0;
85
86        pallo.Velocity = new Vector(0, 300);
87
88        pallo.Position = paikka;
89
90        AddCollisionHandler(pallo, "tahti", PalloTormaaTahteen);
91        AddCollisionHandler(pallo, "taso", PalloTormaaTasoon);
92        Add(pallo, 1);
93
94        pallo.IgnoresPhysicsLogics = true;
95
96        Vector voima = Vector.FromLengthAndAngle(RandomGen.NextDouble(0.0, 1000.0), RandomGen.NextAngle());
97        Vector impulssi = new Vector(600.0, 0.0);
98        pallo.Hit(impulssi);
99       
100        pallo.CollisionIgnoreGroup = 1;
101    }
102
103    void LisaaEste(Vector paikka, double leveys, double korkeus)
104    {
105        PhysicsObject este = PhysicsObject.CreateStaticObject(20, 20);
106        este.Color = Color.Black;
107        este.Shape = Shape.Circle;
108        este.Position = paikka;
109        Add(este);
110    }
111
112    void LisaaNappaimet()
113    {
114        Gravity = new Vector(0, -1000);
115
116        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
117        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
119
120        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", nelio, -nopeus);
121        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", nelio, nopeus);
122        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", nelio, hyppyNopeus);
123
124        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
125        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", nelio, -nopeus);
126        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", nelio, nopeus);
127        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", nelio, hyppyNopeus);
128
129        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
130    }
131
132    void Liikuta(PlatformCharacter hahmo, double nopeus)
133    {
134        hahmo.Walk(nopeus);
135    }
136
137    void Hyppaa(PlatformCharacter hahmo, double nopeus)
138    {
139        hahmo.Jump(nopeus);
140    }
141
142    void TormaaTahteen(PhysicsObject nelio, PhysicsObject tahti)
143    {
144        tahti.Destroy();
145        laskuri.Value += 1;
146        if (laskuri.Value == 8) KaikkiTahdet();
147    }
148
149    void PalloTormaaTasoon(PhysicsObject taso, PhysicsObject pallo)
150    {
151        taso.IgnoresCollisionResponse = true;
152    }
153
154    void PalloTormaaTahteen(PhysicsObject pallo, PhysicsObject tahti)
155    {
156        SeuraavaKentta();
157    }
158
159    void AloitaAlusta()
160    {
161        ClearAll();
162        SeuraavaKentta();
163    }
164
165    void SeuraavaKentta()
166    {
167        ClearAll();
168
169        if (kenttaNro == 1) LuoKentta("kentta1");
170        else if (kenttaNro == 2) LuoKentta("kentta2");
171        else if (kenttaNro == 3) LuoKentta("kentta3");
172        else if (kenttaNro == 4) LuoKentta("kentta4");
173        else if (kenttaNro > 4)
174
175        {
176            MessageDisplay.Add("Voitto!");
177            MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
178            Timer.SingleShot(5.0, Valikko);
179        }
180
181        LisaaNappaimet();
182        LuoLaskuri();
183    }
184
185    void KaikkiTahdet()
186    {
187        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
188        kenttaNro++;
189        SeuraavaKentta();
190    }
191
192    IntMeter LuoLaskuri()
193    {
194        laskuri = new IntMeter(0);
195        return laskuri;
196    }
197
198    void Valikko()
199    {
200        ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
201
202        valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
203
204        Level.BackgroundColor = Color.Lavender;
205
206        IsMouseVisible = true;
207
208        Label kohta1 = new Label("Aloita uusi peli");  // Luodaan uusi Label-olio, joka toimii uuden pelin aloituskohtana
209        kohta1.Position = new Vector(0, 40);  // Asetetaan valikon ensimmäinen kohta hieman kentän keskikohdan yläpuolelle
210        valikonKohdat.Add(kohta1);  // Lisätään luotu valikon kohta listaan jossa kohtia säilytetään
211
212        Label kohta3 = new Label("Lopeta peli");
213        kohta3.Position = new Vector(0, -40);
214        valikonKohdat.Add(kohta3);
215        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaAlusta, null);
216        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
217
218        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
219
220        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla
221        foreach (Label valikonKohta in valikonKohdat)
222
223        {
224            Add(valikonKohta);
225        }
226    }
227
228    void ValikossaLiikkuminen(AnalogState hiirenTila)
229    {
230        foreach (Label kohta in valikonKohdat)
231        {
232            if (Mouse.IsCursorOn(kohta))
233            {
234                kohta.TextColor = Color.Purple;
235            }
236            else
237            {
238                kohta.TextColor = Color.Black;
239            }
240
241        }
242    }
243
244
245}
Note: See TracBrowser for help on using the repository browser.