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

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