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

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