source: 2015/24/AleksiS/CandyLand/CandyLand/CandyLand/CandyLand.cs @ 5990

Revision 5990, 7.1 KB checked in by laaljoso, 6 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 CandyLand : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vihollinen;
17
18    Image pelaajanKuva = LoadImage("tikku-ukko");
19    Image KarkinKuva = LoadImage("YellowCandy");
20    Image vihollisenKuva = LoadImage("CandyThief");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    Label pisteNaytto;
24
25    public override void Begin()
26    {
27        MultiSelectWindow alkuValikko = new MultiSelectWindow("Candy Land", "Pelaa", "Tietoa", "Lopeta");
28        Add(alkuValikko);
29        alkuValikko.AddItemHandler(1, Pelaa);
30        alkuValikko.AddItemHandler(2, i);
31        alkuValikko.AddItemHandler(3, Exit);
32    }
33
34    void Pelaa()
35    {
36        ClearAll();
37        Gravity = new Vector(0, -1000);
38
39        LuoPisteLaskuri();
40
41        LuoKentta();
42        LisaaNappaimet();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48
49    void i()
50    {
51        MessageDisplay.Add("Candy Land v. 1.0, Copyright 2015 Aleksi Soikkala. Candy Land on sekasorron tilassa. Kaikki karkit ovat loppuneet. Auta Candy Landin asukkaita karkkien keräämisessä ja puolusta kylää Candy Thiefiltä, jotta Candy Landin asukkaat voivat jatkaa elämäänsä normaalisti.");
52    }
53
54    List<Label> valikonKohdat;
55
56    void Valikko()
57    {
58        ClearAll();
59
60        valikonKohdat = new List<Label>();
61
62        Label kohta1 = new Label("Pelaa");
63        kohta1.Position = new Vector(0, 40);
64        valikonKohdat.Add(kohta1);
65
66        Label kohta2 = new Label("i");
67        kohta2.Position = new Vector(0, 0);
68        valikonKohdat.Add(kohta2);
69
70        Label kohta3 = new Label("Lopeta");
71        kohta3.Position = new Vector(0, -40);
72        valikonKohdat.Add(kohta3);
73        foreach (Label valikonKohta in valikonKohdat)
74        {
75            Add(valikonKohta);
76        }
77
78        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, Pelaa, null);
79        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, i, null);
80        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
81
82        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
83
84    }
85
86        void ValikossaLiikkuminen(AnalogState hiirenTila)
87        {
88            foreach (Label kohta in valikonKohdat)
89            {
90                if (mouseIsCursorOn(kohta))
91                {
92                    kohta.TextColor = Color.White;
93                }
94                else
95                {
96                    kohta.TextColor = Color.Black;
97                }
98            }
99
100    }
101
102    void Pelaa()
103    {
104    }
105
106    void i()
107    {
108    }
109
110
111
112    void LuoKentta()
113    {
114        TileMap kentta = TileMap.FromLevelAsset("kentta1");
115        kentta.SetTileMethod('#', LisaaTaso);
116        kentta.SetTileMethod('*', LisaaTahti);
117        kentta.SetTileMethod('N', LisaaPelaaja);
118        kentta.SetTileMethod('V', LisaaVihollinen);
119        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
120        Level.CreateBorders();
121        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
122    }
123   
124    IntMeter pisteLaskuri;
125
126    void LuoPisteLaskuri()
127    {
128        pisteLaskuri = new IntMeter(0,0,0);
129
130        pisteNaytto = new Label();
131        pisteNaytto.X = Screen.Left + 150;
132        pisteNaytto.Y = Screen.Top - 100;
133        pisteNaytto.TextColor = Color.Black;
134        pisteNaytto.Color = Color.White;
135        pisteNaytto.Title = "Karkit";
136       
137
138
139        pisteNaytto.BindTo(pisteLaskuri);
140        Add(pisteNaytto);
141
142    }
143    void LisaaTaso(Vector paikka, double leveys, double korkeus)
144    {
145        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
146        taso.Position = paikka;
147        taso.Color = Color.Green;
148        Add(taso);
149    }
150
151    void LisaaTahti(Vector paikka, double leveys, double korkeus)
152    {
153        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
154        tahti.IgnoresCollisionResponse = true;
155        tahti.Position = paikka;
156        tahti.Image = KarkinKuva;
157        tahti.Tag = "tahti";
158        Add(tahti);
159        pisteLaskuri.MaxValue++;
160        pisteNaytto.IntFormatString = " {0:D1}/" + pisteLaskuri.MaxValue;
161    }
162
163    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
164    {
165        pelaaja1 = new PlatformCharacter(leveys, korkeus);
166        pelaaja1.Position = paikka;
167        pelaaja1.Mass = 4.0;
168        pelaaja1.Image = pelaajanKuva;
169        pelaaja1.Tag = "pelaaja";
170        AddCollisionHandler(pelaaja1, "tahti", KeraaKarkki);
171        AddCollisionHandler(pelaaja1, "vihollinen", delegate(PhysicsObject A, PhysicsObject B)
172        {
173            Begin();
174        });
175        Add(pelaaja1);
176
177    }
178
179    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
180    {
181        vihollinen = new PlatformCharacter(leveys, korkeus);
182        vihollinen.Position = paikka;
183        vihollinen.Mass = 4.0;
184        vihollinen.Image = vihollisenKuva;
185        vihollinen.Shape = Shape.FromImage(vihollisenKuva);
186        vihollinen.Tag = "vihollinen";
187        vihollinen.IgnoresGravity = true;
188        Add(vihollinen);
189
190        FollowerBrain aivot = new FollowerBrain("pelaaja");
191        vihollinen.Brain = aivot;
192       
193    }
194
195    void LisaaNappaimet()
196    {
197        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
198        Keyboard.Listen(Key.P, ButtonState.Pressed, TauotaPeli, "Tauko");
199        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
200
201        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
202        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
203        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
204
205        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
206
207        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
208        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
209        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
210
211        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
212    }
213    void TauotaPeli()
214    {
215        MessageDisplay.Add("Peli tauolla");
216        Pause();
217    }
218
219    void Liikuta(PlatformCharacter hahmo, double nopeus)
220    {
221        hahmo.Walk(nopeus);
222    }
223
224    void Hyppaa(PlatformCharacter hahmo, double nopeus)
225    {
226        hahmo.Jump(nopeus);
227    }
228
229    void KeraaKarkki(PhysicsObject hahmo, PhysicsObject tahti)
230    {
231        maaliAani.Play();
232        MessageDisplay.Add("Keräsit karkin!");
233        tahti.Destroy();
234        pisteLaskuri.Value += 1;
235
236    }
237}
Note: See TracBrowser for help on using the repository browser.