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

Revision 9387, 9.1 KB checked in by npo17_79, 2 years ago (diff)

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

RevLine 
[9320]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
[9387]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);
[9366]18    Vector nopeusAlas = new Vector(0.0, -500.0);
[9320]19
[9341]20    const int RUUDUN_KOKO = 50;
[9320]21
[9366]22    PhysicsObject pelaaja1;
23    IntMeter pisteLaskuri;
[9341]24
[9320]25    Image taustaKuva = LoadImage("meri");
[9341]26    Image pelaajanKuva = LoadImage("sukeltaja1");
27    Image tahtiKuva = LoadImage("timantti");
[9387]28    Image vihollinenKuva = LoadImage("kala");
29    Image tasonkuva = LoadImage("kivet2");
[9320]30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    public override void Begin()
33    {
[9366]34
[9341]35        // Gravity = new Vector(0, -1000);
[9320]36
[9387]37        AlkuValikko();
[9320]38
[9387]39       // Mouse.IsCursorVisible = true;
40
[9320]41    }
42
43    void LuoKentta()
44    {
45        TileMap kentta = TileMap.FromLevelAsset("kentta1");
46        kentta.SetTileMethod('#', LisaaTaso);
[9341]47        kentta.SetTileMethod('*', LisaaAarre);
[9320]48        kentta.SetTileMethod('N', LisaaPelaaja);
[9366]49        kentta.SetTileMethod('V', LisaaVihollinen);
[9320]50        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
51        Level.CreateBorders();
52        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
53        Level.Background.Image = taustaKuva;
[9366]54
55
[9387]56        for (int i = 0; i < 50; i++)
[9366]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        }
[9320]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;
[9341]70        taso.Restitution = 0.4;
[9387]71        taso.Image = tasonkuva;
[9320]72        Add(taso);
73    }
[9366]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    //}
[9341]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    }
[9387]93   
94        void LisaaVihollinen()
[9366]95    {
[9387]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);
[9366]119    }
[9320]120
121    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
122    {
[9371]123        pelaaja1 = new PhysicsObject(leveys * 3, korkeus * 1);
[9320]124        pelaaja1.Position = paikka;
[9366]125        // pelaaja1.Mass = 4.0;
[9320]126        pelaaja1.Image = pelaajanKuva;
127        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
128        Add(pelaaja1);
[9341]129        pelaaja1.CanRotate = false;
[9320]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
[9366]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));
[9341]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);
[9320]141
142        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
143
[9341]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);
[9320]147
148        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
149    }
150
[9341]151    void Liikuta(PhysicsObject hahmo, Vector nopeus)
[9320]152    {
[9341]153        hahmo.Push(nopeus);
[9320]154    }
155
156
[9366]157
[9320]158    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
159    {
160        maaliAani.Play();
[9366]161        MessageDisplay.Add("Keräsit timantin!");
[9320]162        tahti.Destroy();
[9366]163        pisteLaskuri.Value += 1;
164
[9320]165    }
[9366]166
[9387]167    void AlkuValikko()
168    {
169        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko","Aloita peli", "Parhaat pisteet","Tekijätiedot", "Lopeta");
170        Level.Background.Color = Color.Blue;
[9366]171 
[9387]172        alkuValikko.AddItemHandler(0, AloitaPeli);
173        alkuValikko.AddItemHandler(1, ParhaatPisteet);
174        alkuValikko.AddItemHandler(2, Tekijätiedot);
175        alkuValikko.AddItemHandler(3, Exit);
[9366]176
[9387]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       
[9366]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    {
[9387]206        alaspainLaskuri = new DoubleMeter(5);
[9366]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
[9387]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
[9366]244            // täydennä mitä tapahtuu, kun aika loppuu
245        }
246    }
[9387]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.