source: 2017/31/MirkaH/TimantitOvatIkuisia/TimantitOvatIkuisia/TimantitOvatIkuisia/TimantitOvatIkuisia.cs @ 9387

Revision 9387, 9.1 KB checked in by npo17_79, 23 months ago (diff)

Peli alkaa ja loppuu hyvin. Parhaat pisteet näkyvät hyvin.
Vihollisen suunnittelu kesken.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class TimantitOvatIkuisia : PhysicsGame
10{
11
12        EasyHighScore topLista = new EasyHighScore();
13
14
15            // const double nopeus = 200;
16            // const double hyppyNopeus = 750;
17            Vector nopeusYlös = new Vector(0.0, 500.0);
18    Vector nopeusAlas = new Vector(0.0, -500.0);
19
20    const int RUUDUN_KOKO = 50;
21
22    PhysicsObject pelaaja1;
23    IntMeter pisteLaskuri;
24
25    Image taustaKuva = LoadImage("meri");
26    Image pelaajanKuva = LoadImage("sukeltaja1");
27    Image tahtiKuva = LoadImage("timantti");
28    Image vihollinenKuva = LoadImage("kala");
29    Image tasonkuva = LoadImage("kivet2");
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    public override void Begin()
33    {
34
35        // Gravity = new Vector(0, -1000);
36
37        AlkuValikko();
38
39       // Mouse.IsCursorVisible = true;
40
41    }
42
43    void LuoKentta()
44    {
45        TileMap kentta = TileMap.FromLevelAsset("kentta1");
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('*', LisaaAarre);
48        kentta.SetTileMethod('N', LisaaPelaaja);
49        kentta.SetTileMethod('V', LisaaVihollinen);
50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
53        Level.Background.Image = taustaKuva;
54
55
56        for (int i = 0; i < 50; i++)
57        {
58            double xpaikka = RandomGen.NextDouble(Level.Left, Level.Right);
59            double ypaikka = RandomGen.NextDouble(Level.Top, Level.Bottom);
60            Vector paikka = new Vector(xpaikka, ypaikka);
61            LisaaAarre(paikka, RUUDUN_KOKO, RUUDUN_KOKO);
62        }
63    }
64
65    void LisaaTaso(Vector paikka, double leveys, double korkeus)
66    {
67        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        taso.Position = paikka;
69        taso.Color = Color.Black;
70        taso.Restitution = 0.4;
71        taso.Image = tasonkuva;
72        Add(taso);
73    }
74    //void LisaaAarre(double leveys, double korkeus,double x, double y )
75    //{
76    //    PhysicsObject aarre = PhysicsObject.CreateStaticObject(leveys, korkeus);
77    //    aarre.IgnoresCollisionResponse = true;
78    //    aarre.X = x;
79    //    aarre.Y = y;
80    //    aarre.Image = tahtiKuva;
81    //    aarre.Tag = "tahti";
82    //    Add(aarre);
83    //}
84    void LisaaAarre(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject aarre = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        aarre.IgnoresCollisionResponse = true;
88        aarre.Position = paikka;
89        aarre.Image = tahtiKuva;
90        aarre.Tag = "tahti";
91        Add(aarre);
92    }
93   
94        void LisaaVihollinen()
95    {
96            PhysicsObject vihollinen = new PhysicsObject(100.0, 100.0);
97            vihollinen.X = 300.0;
98            vihollinen.Y = 350.0;
99            vihollinen.Tag = "pahis";
100            vihollinen.Image = vihollinenKuva;
101            Add(vihollinen);
102
103            FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
104            seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
105            seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
106            seuraajanAivot.DistanceClose = 200;         // Etäisyys jolloin ollaan lähellä kohdetta
107            seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
108                                                         //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
109
110            // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
111            //seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
112
113        //    PhysicsObject vihollinen = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        //vihollinen.IgnoresCollisionResponse = true;
115        //vihollinen.Position = paikka;
116        //vihollinen.Image = vihollinenKuva;
117        //vihollinen.Tag = "vihollinen";
118        //Add(vihollinen);
119    }
120
121    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
122    {
123        pelaaja1 = new PhysicsObject(leveys * 3, korkeus * 1);
124        pelaaja1.Position = paikka;
125        // pelaaja1.Mass = 4.0;
126        pelaaja1.Image = pelaajanKuva;
127        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
128        Add(pelaaja1);
129        pelaaja1.CanRotate = false;
130    }
131
132    void LisaaNappaimet()
133    {
134        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
135        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
136
137        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-200, 0));
138        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(200, 0));
139        Keyboard.Listen(Key.Up, ButtonState.Down, Liikuta, "Pelaaja ylös", pelaaja1, nopeusYlös);
140        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Pelaaja alas", pelaaja1, nopeusAlas);
141
142        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
143
144        ///ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
145        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
146        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
147
148        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
149    }
150
151    void Liikuta(PhysicsObject hahmo, Vector nopeus)
152    {
153        hahmo.Push(nopeus);
154    }
155
156
157
158    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
159    {
160        maaliAani.Play();
161        MessageDisplay.Add("Keräsit timantin!");
162        tahti.Destroy();
163        pisteLaskuri.Value += 1;
164
165    }
166
167    void AlkuValikko()
168    {
169        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko","Aloita peli", "Parhaat pisteet","Tekijätiedot", "Lopeta");
170        Level.Background.Color = Color.Blue;
171 
172        alkuValikko.AddItemHandler(0, AloitaPeli);
173        alkuValikko.AddItemHandler(1, ParhaatPisteet);
174        alkuValikko.AddItemHandler(2, Tekijätiedot);
175        alkuValikko.AddItemHandler(3, Exit);
176
177        alkuValikko.DefaultCancel = 3;
178        alkuValikko.Color = Color.Red;
179        alkuValikko.SetButtonColor(Color.Blue);
180        //alkuValikko.Image=taustaKuva;
181
182        Add(alkuValikko);
183}
184
185       
186    void LuoPistelaskuri()
187    {
188        pisteLaskuri = new IntMeter(0);
189
190        Label pisteNaytto = new Label();
191        pisteNaytto.X = Screen.Left + 100;
192        pisteNaytto.Y = Screen.Top - 100;
193        pisteNaytto.TextColor = Color.Black;
194        pisteNaytto.Color = Color.White;
195
196        pisteNaytto.BindTo(pisteLaskuri);
197        Add(pisteNaytto);
198    }
199    DoubleMeter alaspainLaskuri;
200
201       
202    Timer aikaLaskuri;
203
204    void LuoAikaLaskuri()
205    {
206        alaspainLaskuri = new DoubleMeter(5);
207
208        aikaLaskuri = new Timer();
209        aikaLaskuri.Interval = 0.1;
210        aikaLaskuri.Timeout += LaskeAlaspain;
211        aikaLaskuri.Start();
212
213        Label aikaNaytto = new Label();
214        aikaNaytto.TextColor = Color.White;
215        aikaNaytto.DecimalPlaces = 1;
216        aikaNaytto.BindTo(alaspainLaskuri);
217        aikaNaytto.X = Screen.Right - 300.0;
218        aikaNaytto.Y = Screen.Bottom + 100.0;
219        Add(aikaNaytto);
220
221    }
222
223    void LaskeAlaspain()
224    {
225        alaspainLaskuri.Value -= 0.1;
226
227        if (alaspainLaskuri.Value <= 0)
228        {
229            MessageDisplay.Add("Aika loppui...");
230            aikaLaskuri.Stop();
231
232            PelaajaKuoli();
233
234            //pelaaja1.Destroy();
235            //ClearAll();
236
237            //Label pisteNaytto = new Label();
238            //pisteNaytto.TextColor = Color.White;
239
240            //pisteNaytto.Text = "Sait pisteitä " + pisteLaskuri.Value;
241       
242            //Add(pisteNaytto);
243
244            // täydennä mitä tapahtuu, kun aika loppuu
245        }
246    }
247    void AloitaPeli()
248
249    {
250        LuoKentta();
251        LisaaNappaimet();
252        LuoAikaLaskuri();
253        LuoPistelaskuri();
254
255
256        Camera.Follow(pelaaja1);
257        Camera.ZoomFactor = 1.2;
258        Camera.StayInLevel = true;
259        // Camera.ZoomToLevel();
260    }
261    void ParhaatPisteet()
262    {
263        topLista.Show();
264        topLista.HighScoreWindow.Closed += AloitaPeli;
265
266    }
267   
268
269        void Tekijätiedot()
270    {
271        MessageWindow ikkuna = new MessageWindow("Mirka Havinga");
272        Add(ikkuna);
273        ikkuna.Closed += delegate 
274        {
275            AlkuValikko();
276        };
277
278
279    }
280
281    void PelaajaKuoli()
282    {
283        pelaaja1.Destroy();
284        topLista.EnterAndShow(pisteLaskuri.Value);
285
286        topLista.HighScoreWindow.Closed += AloitaPeli;
287    }
288
289
290
291    void AloitaPeli(Window sender)
292    {
293        ClearAll();
294        AlkuValikko();
295       // topLista.Show();
296    }
297
298}
Note: See TracBrowser for help on using the repository browser.