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

Revision 3773, 6.7 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 = 0.1;
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 > 3) MessageDisplay.Add("Voitto!");
173        MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
174       
175        LisaaNappaimet();
176        LuoLaskuri();
177    }
178
179    void KaikkiTahdet()
180    {
181        //Kasvatetaan kenttänumeroa yhdellä ja siirrytään seuraavaan kenttään:
182        kenttaNro++;
183        SeuraavaKentta();
184    }
185
186    IntMeter LuoLaskuri()
187    {
188        laskuri = new IntMeter(0);
189        return laskuri;
190    }
191
192    void Valikko()
193    {
194        ClearAll(); // Tyhjennetään kenttä kaikista peliolioista
195
196        valikonKohdat = new List<Label>(); // Alustetaan lista, johon valikon kohdat tulevat
197
198        Label kohta1 = new Label("Aloita uusi peli");  // Luodaan uusi Label-olio, joka toimii uuden pelin aloituskohtana
199        kohta1.Position = new Vector(0, 40);  // Asetetaan valikon ensimmäinen kohta hieman kentän keskikohdan yläpuolelle
200        valikonKohdat.Add(kohta1);  // Lisätään luotu valikon kohta listaan jossa kohtia säilytetään
201
202        Label kohta2 = new Label("Parhaat pisteet");
203        kohta2.Position = new Vector(0, 0);
204        valikonKohdat.Add(kohta2);
205
206        Label kohta3 = new Label("Lopeta peli");
207        kohta3.Position = new Vector(0, -40);
208        valikonKohdat.Add(kohta3);
209
210        // Lisätään kaikki luodut kohdat peliin foreach-silmukalla
211        foreach (Label valikonKohta in valikonKohdat)
212        {
213            Add(valikonKohta);
214        }
215
216       
217
218
219
220    }
221
222
223
224}
Note: See TracBrowser for help on using the repository browser.