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

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