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

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