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

Revision 7677, 10.1 KB checked in by juleppaa, 3 years ago (diff)

skaala

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