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

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