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

Revision 7373, 6.1 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        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.Position = Mouse.PositionOnWorld;
166        Camera.StayInLevel = true;
167    }
168    void PalloLiikkeelle()
169    {
170        Add(pallo);
171        Camera.Follow(pallo);
172        Keyboard.Disable(Key.Enter);
173
174
175        ajastin = new Timer();
176        ajastin.Interval = 0.5;
177        ajastin.Timeout += TarkistaNopeus;
178        ajastin.Start();
179
180    }
181
182    void TarkistaNopeus()
183    {
184        if (pallo.Velocity.Magnitude < 0.3)
185        {
186
187            Havio();
188        }
189    }
190
191    void SeuraajaKamera()
192    {
193        Camera.X = Mouse.PositionOnWorld.X * 0.5;
194        Camera.Y = Mouse.PositionOnWorld.Y * 0.5;
195    }
196    void LuoSlider()
197    {
198        DoubleMeter zoomausKerroin = new DoubleMeter(0, -10000, 0);
199        zoomausKerroin.Changed += ZoomaaKenttaa;
200
201        Slider liukusaadin = new Slider(50, 20);
202        liukusaadin.BindTo(zoomausKerroin);
203
204
205        liukusaadin.X = Window.ClientBounds.Width / 2 - 100;
206        liukusaadin.Y = Screen.TopSafe - 80;
207
208        liukusaadin.Color = Color.Pink;
209        liukusaadin.Knob.Color = Color.Black;
210        liukusaadin.Track.Color = Color.Blue;
211        liukusaadin.BorderColor = Color.Red;
212        Add(liukusaadin);
213    }
214
215
216    void ZoomaaKenttaa(double vanhaArvo, double uusiArvo)
217    {
218        Camera.ZoomFactor = 1 + uusiArvo;
219    }
220    void Zoomaa()
221    {
222        Camera.ZoomFactor += Mouse.WheelChange * 0.05;
223    }
224    void PauseValikko()
225    {
226        Pause();
227        MultiSelectWindow pausevalikko = new MultiSelectWindow("Pause", "Resume", "Restart", "Options", "Menu", "Quit");
228        Add(pausevalikko);
229        pausevalikko.AddItemHandler(0, Pause);
230        pausevalikko.AddItemHandler(2, Asetukset);
231        pausevalikko.AddItemHandler(4, ConfirmExit);
232
233    }
234    void Asetukset()
235    {
236        MultiSelectWindow asetukset = new MultiSelectWindow("Options", "Back", "Sound", "Graphic");
237        Add(asetukset);
238        asetukset.AddItemHandler(0, delegate
239        {
240            Pause();
241            PauseValikko();
242        });
243    }
244    void Havio()
245    {
246        ajastin.Stop();
247        MultiSelectWindow havio = new MultiSelectWindow("YOU LOST!!!", "Try again", "Menu", "Quit");
248        Add(havio);
249
250        havio.AddItemHandler(2, ConfirmExit);
251    }
252}
Note: See TracBrowser for help on using the repository browser.