source: 2016/24/JustusL/Object_Ball/Object_Ball/Object_Ball/Object_Ball.cs @ 7947

Revision 7947, 13.6 KB checked in by juleppaa, 5 years ago (diff)

valikoXDDD

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Object_Ball : PhysicsGame
10{
11    Image kaarikuva = LoadImage("kaarikakka");
12    Image kursori = LoadImage("palikka kursori");
13    Image Maali = LoadImage("maali_objectBall");
14    Image tauste = LoadImage("ruutu");
15
16    double RUUDUN_KOKO = 150;
17
18    Image[] painikeKuvat = LoadImages("kaariosa", "kyna", "palikka");
19
20    bool liikkes;
21    int kenttaNro = 1;
22    IntMeter pisteLaskuri;
23    Label hiiri;
24    PhysicsObject pallo;
25    PhysicsObject maali;
26
27    Vector hiirenLiike = Vector.Zero;
28
29    GameObject haamu;
30
31    Timer ajastin;
32
33    int tyokalu = -1;
34    Vector hiirenEdellinenPaikka = Vector.Zero;
35
36
37    public override void Begin()
38    {
39
40       
41        liikkes = false;
42        haamu = null;
43        Gravity = new Vector(0, -70);
44
45       
46
47        //Level.Background.Image = tauste;
48        //Level.Background.TileToLevel();
49
50       
51        //Camera.Follow(pallo);
52        Camera.StopFollowing();
53       
54        Ohjaimet();
55        LuoSlider();
56        LuoKauppa();
57        Grafiikat();
58
59
60        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta"+kenttaNro);
61
62        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
63        ruudut.SetTileMethod(Color.Red, LuoPallo);
64        //ruudut.SetTileMethod(, LuoTaso);
65        ruudut.SetTileMethod(new Color(255, 14, 255), LuoTahti);
66        ruudut.SetTileMethod(new Color(0, 255, 0), LuoMaali );
67
68        //3. Execute luo kentän
69        //   Parametreina leveys ja korkeus
70        ruudut.Execute(5, 5);
71
72        Level.Width = 1000;
73        Level.Height = 1000;
74        GameObject tausta = new GameObject(Level.Width, Level.Height);
75        tausta.Image = tauste;
76        tausta.TextureWrapSize = new Vector(300, 300);
77        Add(tausta, -3);
78        Level.CreateBorders();
79
80        pisteLaskuri = new IntMeter(0);
81
82        Label pisteNaytto = new Label();
83        pisteNaytto.IntFormatString = " {0:D1} Stars collected ";
84        pisteNaytto.TextColor = Color.HotPink;
85        pisteNaytto.X = Screen.Right  -100;
86        pisteNaytto.Y = Screen.Top - 108;
87        pisteNaytto.TextColor = Color.HotPink;
88        pisteNaytto.Color = Color.Black;
89        pisteNaytto.BindTo(pisteLaskuri);
90        Add(pisteNaytto);
91
92       
93    }
94
95    void LuoKauppa()
96    {
97        for (int i = 0; i < painikeKuvat.Length; i++)
98        {
99            LuoKauppaPainike(painikeKuvat[i], i);
100        }
101
102    }
103
104    void LuoKauppaPainike(Image kuvake, int paikka)
105    {
106        var kuva = new PushButton(kuvake);
107        kuva.Size = new Vector(1, 1) * RUUDUN_KOKO;
108        kuva.X = Window.ClientBounds.Width / 2 - 100;
109        kuva.Y = Window.ClientBounds.Height / 2 - (200 + RUUDUN_KOKO * paikka);
110        kuva.Color = Color.Green;
111        Add(kuva);
112
113        /*
114        liukusaadin.X = Window.ClientBounds.Width / 2 - 100;
115        liukusaadin.Y = Screen.TopSafe - 80;
116         * */
117
118
119        kuva.Clicked += delegate
120        {
121            tyokalu = paikka;
122
123            if (tyokalu == 0 || tyokalu == 2)
124            {
125                if (haamu != null) haamu.Destroy();
126                haamu = new GameObject(20, 20);
127                haamu.Color = new Color(0, 0, 0, 128);
128                Add(haamu);
129                if (tyokalu == 0)haamu.Shape = Shape.FromImage(kaarikuva);
130               
131               
132            }
133        };
134
135    }
136
137    void Ohjaimet()
138    {
139        IsMouseVisible = true;
140        Mouse.IsCursorVisible = false;
141
142        Mouse.Listen(MouseButton.Middle, ButtonState.Down, SeuraajaKamera, "Move Camera");
143        Mouse.ListenWheel(Zoomaa, null);
144
145        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, HiiriPainettu, null);
146        Mouse.Listen(MouseButton.Left, ButtonState.Down, HiiriAlhaalla, null);
147
148        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PauseValikko, "Pause");
149        Keyboard.Listen(Key.Enter, ButtonState.Pressed, PalloLiikkeelle, "Start");
150        Keyboard.Listen(Key.NumPad1, ButtonState.Down, MuutaKulmaa, null, 1);
151        Keyboard.Listen(Key.NumPad3, ButtonState.Down, MuutaKulmaa, null, -1);
152        Keyboard.Listen(Key.A, ButtonState.Down, MuutaKulmaa, null, 1);
153        Keyboard.Listen(Key.Z, ButtonState.Down, MuutaKulmaa, null, -1);
154        Keyboard.Listen(Key.Right, ButtonState.Down, MuutaSkaalaa, null, new Vector(1,0));
155        Keyboard.Listen(Key.Left, ButtonState.Down, MuutaSkaalaa, null, new Vector(-1, 0));
156        Keyboard.Listen(Key.Up, ButtonState.Down, MuutaSkaalaa, null, new Vector(0, 1));
157        Keyboard.Listen(Key.Down, ButtonState.Down, MuutaSkaalaa, null, new Vector(0, -1));
158    }
159
160    void HiiriPainettu()
161    {
162        if (tyokalu == 0 && !liikkes)
163        {
164           
165            PhysicsObject kaari = PhysicsObject.CreateStaticObject(haamu.Width, haamu.Height);
166            kaari.Shape = Shape.FromImage(kaarikuva);
167            kaari.Angle = haamu.Angle;
168            kaari.Image = kaarikuva;
169            kaari.Position = Mouse.PositionOnWorld;
170            Add(kaari);
171        }
172        if (tyokalu == 2 && !liikkes)
173        {
174            PhysicsObject kuutio = PhysicsObject.CreateStaticObject(haamu.Width, haamu.Height);
175            kuutio.Shape = Shape.Rectangle;
176            kuutio.Angle = haamu.Angle;
177            kuutio.Color = Color.Black;
178            kuutio.Position = Mouse.PositionOnWorld;
179            Add(kuutio);
180
181        }
182        hiirenEdellinenPaikka = Mouse.PositionOnWorld;
183    }
184
185    void HiiriAlhaalla()
186    {
187        if (Mouse.PositionOnScreen.X > Screen.Right - 180)
188        {
189            hiirenEdellinenPaikka = Mouse.PositionOnWorld;
190            return;
191        }
192
193       
194        if (tyokalu == 1)
195        {
196            if (haamu != null) haamu.Destroy();
197            Vector suunta = Mouse.PositionOnWorld - hiirenEdellinenPaikka;
198           
199            int pallojenMaara = 1 + (int)Math.Round(suunta.Magnitude / 1.0);
200
201            for (int i = 0; i < pallojenMaara; i++)
202            {
203                PhysicsObject piste = PhysicsObject.CreateStaticObject(3, 3);
204                piste.Position = hiirenEdellinenPaikka + suunta * (i / (float)pallojenMaara);
205                piste.Color = Color.Black;
206                piste.Shape = Shape.Circle;
207                Add(piste);
208            }
209        }
210     
211
212        hiirenEdellinenPaikka = Mouse.PositionOnWorld;
213    }
214
215    void MuutaKulmaa( int muutos)
216    {
217        if(tyokalu == 0 || tyokalu == 2)
218        {
219            haamu.Angle += Angle.FromDegrees(muutos);
220        }
221    }
222    void MuutaSkaalaa(Vector skaala)
223    {
224        if (haamu != null && (haamu.Size+skaala).X > 0 && (haamu.Size + skaala).Y > 0)
225        {
226            haamu.Size += skaala;
227        }
228    }
229    void LuoMaali(Vector paikka, double leveys, double korkeus)
230    {
231       
232
233        maali = PhysicsObject.CreateStaticObject(leveys*2, korkeus*2);
234        maali.Tag = "maali";
235        maali.Image = Maali;
236        maali.Position = paikka;
237
238        Add(maali);
239 }
240    void LuoPallo(Vector paikka, double leveys, double korkeus)
241{
242     pallo = new PhysicsObject(leveys, korkeus);
243        pallo.Shape = Shape.Circle;
244        pallo.Color = Color.Red;
245        pallo.IgnoresPhysicsLogics = true;
246        Add(pallo);
247        pallo.Position = paikka;
248        AddCollisionHandler(pallo, "maali", Voitto);
249        AddCollisionHandler(pallo, "tahti", Kerays);
250
251        Add(pallo);
252}
253    void LuoTahti(Vector paikka, double leveys, double korkeus)
254    {
255        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
256        tahti.Shape = Shape.Star;
257        tahti.Color = Color.HotPink;
258        tahti.Tag = "tahti";
259        tahti.Position = paikka;
260        tahti.IgnoresCollisionResponse = true;
261        Add(tahti);
262    }
263
264    void Kerays(PhysicsObject pallo, PhysicsObject tahti)
265    {
266        tahti.Destroy();
267        MessageDisplay.Add("Moi!");
268       
269        pisteLaskuri.Value++;
270    }
271
272
273
274    void Grafiikat()
275    {
276       hiiri = new Label(50, 50);
277       hiiri.Image = kursori;
278       
279        Mouse.ListenMovement(0.0, HiirenSeuraus, null);
280        Add(hiiri);
281
282
283    }
284    void HiirenSeuraus(AnalogState hiirenTila)
285    {
286        hiirenLiike = hiirenTila.MouseMovement;
287
288        hiiri.Position = Mouse.PositionOnWorld;
289        hiiri.Position = Mouse.PositionOnScreen;
290        Camera.StayInLevel = true;
291        if (haamu != null)
292        {
293            haamu.Position = Mouse.PositionOnWorld;
294        }
295
296    }
297    void PalloLiikkeelle()
298    {
299        //Add(pallo);
300        Camera.Follow(pallo);
301        Keyboard.Disable(Key.Enter);
302        pallo.IgnoresPhysicsLogics = false;
303        if (haamu != null) haamu.Destroy();
304        //tyokalu = -1;
305
306        liikkes = true;
307
308        ajastin = new Timer();
309        ajastin.Interval = 0.5;
310        ajastin.Timeout += TarkistaNopeus;
311        ajastin.Start();
312
313    }
314
315    void TarkistaNopeus()
316    {
317        if (pallo.Velocity.Magnitude < 0.03)
318        {
319
320            Havio();
321        }
322    }
323
324    void SeuraajaKamera()
325    {
326        Camera.Position += -hiirenLiike;
327        //Camera.X = Mouse.PositionOnWorld.X * 0.5;
328        //Camera.Y = Mouse.PositionOnWorld.Y * 0.5;
329    }
330    void LuoSlider()
331    {
332        DoubleMeter zoomausKerroin = new DoubleMeter(0, -100, 0);
333        zoomausKerroin.Changed += ZoomaaKenttaa;
334
335        Slider liukusaadin = new Slider(50, 20);
336        liukusaadin.BindTo(zoomausKerroin);
337       
338        liukusaadin.X = Window.ClientBounds.Width / 2 - 100;
339        liukusaadin.Y = Screen.TopSafe - 80;
340
341        liukusaadin.Color = Color.Pink;
342        liukusaadin.Knob.Color = Color.Black;
343        liukusaadin.Track.Color = Color.Blue;
344        liukusaadin.BorderColor = Color.Red;
345        Add(liukusaadin);
346    }
347
348
349    void ZoomaaKenttaa(double vanhaArvo, double uusiArvo)
350    {
351        Camera.ZoomFactor = 1 + uusiArvo;
352    }
353    void Zoomaa()
354    {
355        Camera.ZoomFactor += Mouse.WheelChange * 0.07;
356    }
357    void PauseValikko()
358    {
359        Pause();
360        MultiSelectWindow pausevalikko = new MultiSelectWindow("\n Pause", "Resume", "Restart", "Options", "Menu", "Quit");
361
362        pausevalikko.BorderColor = Color.Red;
363        pausevalikko.Font = Font.DefaultBold;
364        pausevalikko.SetButtonTextColor(Color.Black);
365        pausevalikko.SetButtonColor(new Color(1.0 , 0, 0, 0.4));
366        pausevalikko.SelectionColor = Color.DarkRed;
367        pausevalikko.Color = new Color(255, 255, 255, 0.4);
368        pausevalikko.QuestionLabel.TextColor = Color.DarkRed;
369       
370        Add(pausevalikko);
371        pausevalikko.AddItemHandler(0, Pause);
372        pausevalikko.AddItemHandler(1, Uudestaan);
373        pausevalikko.AddItemHandler(2, Asetukset);
374        pausevalikko.AddItemHandler(4, ConfirmExit);
375
376    }
377    void Asetukset()
378    {
379        MultiSelectWindow asetukset = new MultiSelectWindow("\n Options", "Back", "Sound", "Graphic");
380        Add(asetukset);
381        asetukset.BorderColor = Color.Red;
382        asetukset.Font = Font.DefaultBold;
383        asetukset.SetButtonTextColor(Color.Black);
384        asetukset.SetButtonColor(new Color(1.0, 0, 0, 0.4));
385        asetukset.SelectionColor = Color.DarkRed;
386        asetukset.Color = new Color(255, 255, 255, 0.4);
387        asetukset.QuestionLabel.TextColor = Color.DarkRed;
388        asetukset.AddItemHandler(0, delegate
389        {
390            Pause();
391            PauseValikko();
392        });
393
394
395    }
396    void Havio()
397    {
398        ajastin.Stop();
399        MultiSelectWindow havio = new MultiSelectWindow("YOU LOST!!!", "Try again", "Menu", "Quit");
400        Add(havio);
401        havio.SelectionColor = Color.Black;
402        havio.BorderColor = Color.DarkRed;
403        havio.SetButtonColor(Color.DarkRed);
404        havio.QuestionLabel.TextColor = Color.Red;
405        havio.AddItemHandler(0, Uudestaan);
406
407        havio.AddItemHandler(2, ConfirmExit);
408    }
409
410
411    void Voitto(PhysicsObject pallo, PhysicsObject maali)
412    {
413        pallo.Destroy();
414        string pisteIlmoitus;
415        if (pisteLaskuri.Value != 1)
416        {
417            pisteIlmoitus = "With " + pisteLaskuri.Value + " Stars";
418        }                   
419        else                 
420        {                   
421            pisteIlmoitus = "With " + pisteLaskuri.Value + " Star";
422        }
423       
424        MultiSelectWindow voittoValikko = new MultiSelectWindow("\n Nice job! \n\n Level " + kenttaNro + " Completed \n \n " + pisteIlmoitus, "Next", "Again?", "Menu", "Quit");
425        voittoValikko.BorderColor = Color.Red;
426        voittoValikko.Font = Font.DefaultBold;
427        voittoValikko.SetButtonTextColor(Color.Black);
428        voittoValikko.SetButtonColor(new Color(1.0, 0, 0, 0.4));
429        voittoValikko.SelectionColor = Color.DarkRed;
430        voittoValikko.Color = new Color(255, 255, 255, 0.4);
431        voittoValikko.QuestionLabel.TextColor = Color.DarkRed;
432        Add(voittoValikko);
433        voittoValikko.AddItemHandler(0, SeuraavaKentta);
434        voittoValikko.AddItemHandler(1, Uudestaan);
435
436        voittoValikko.AddItemHandler(3, ConfirmExit);
437        /*MessageDisplay.Add("You are good!");
438        Timer.SingleShot(3, Exit);*/
439    }
440    void SeuraavaKentta()
441    {
442        kenttaNro++;
443        Uudestaan();
444    }
445    void Uudestaan() 
446    {
447        IsPaused = false;
448        ClearAll();
449        tyokalu = -1;
450        //if (kenttaNro > 2) ; //Tähän kolmosen kohdalle tulee kenttien lukumäärä
451       // else Begin("kentta" + kenttaNro);
452        Begin();
453    }
454           
455           
456
457}
Note: See TracBrowser for help on using the repository browser.