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

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