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

Revision 7369, 6.1 KB checked in by sieerinn, 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 == 1)
96        {
97            Vector suunta = Mouse.PositionOnWorld - hiirenEdellinenPaikka;
98            int pallojenMaara = 1 + (int)Math.Round(suunta.Magnitude / 2.5);
99
100            for (int i = 0; i < pallojenMaara; i++)
101            {
102                PhysicsObject piste = PhysicsObject.CreateStaticObject(5, 5);
103                piste.Position = hiirenEdellinenPaikka + suunta * (i / (float)pallojenMaara);
104                piste.Color = Color.Black;
105                piste.Shape = Shape.Circle;
106                Add(piste);
107            }
108        }
109
110        hiirenEdellinenPaikka = Mouse.PositionOnWorld;
111    }
112
113    void Palikat()
114    {
115        pallo = new PhysicsObject(25.0, 25.0);
116        pallo.Shape = Shape.Circle;
117
118
119
120
121        PhysicsObject kuutio = PhysicsObject.CreateStaticObject(40, 40);
122        kuutio.Shape = Shape.Rectangle;
123
124        PhysicsObject kaari = PhysicsObject.CreateStaticObject(500, 200);
125        kaari.Shape = Shape.FromImage(kaarikuva);
126        kaari.Angle = Angle.FromDegrees(140);
127        kaari.Image = kaarikuva;
128        kaari.Y = -100;
129        kaari.X = 20;
130        Add(kaari);
131
132        maali = PhysicsObject.CreateStaticObject(70, 70);
133        maali.Image = Maali;
134        maali.X = 0;
135        maali.Y = -100;
136        Add(maali);
137
138
139
140    }
141
142
143
144
145    void Grafiikat()
146    {
147        hiiri = new Label(50, 50);
148        hiiri.Image = kursori;
149        Mouse.ListenMovement(0.1, HiirenSeuraus, null);
150        Add(hiiri);
151
152
153    }
154    void HiirenSeuraus(AnalogState hiirenTila)
155    {
156        //hiiri.X = Mouse.PositionOnWorld.X;
157        //hiiri.Y = Mouse.PositionOnWorld.Y;
158        hiiri.Position = Mouse.PositionOnScreen;
159        Camera.StayInLevel = true;
160        Vector hiirenLiike = hiirenTila.MouseMovement;
161    }
162    void PalloLiikkeelle()
163    {
164        Add(pallo);
165        Camera.Follow(pallo);
166        Keyboard.Disable(Key.Enter);
167
168
169        ajastin = new Timer();
170        ajastin.Interval = 0.5;
171        ajastin.Timeout += TarkistaNopeus;
172        ajastin.Start();
173
174    }
175
176    void TarkistaNopeus()
177    {
178        if (pallo.Velocity.Magnitude < 0.3)
179        {
180
181            Havio();
182        }
183    }
184
185    void SeuraajaKamera()
186    {
187        Camera.X = Mouse.PositionOnWorld.X * 0.5;
188        Camera.Y = Mouse.PositionOnWorld.Y * 0.5;
189    }
190    void LuoSlider()
191    {
192        DoubleMeter zoomausKerroin = new DoubleMeter(0, -10000, 0);
193        zoomausKerroin.Changed += ZoomaaKenttaa;
194
195        Slider liukusaadin = new Slider(50, 20);
196        liukusaadin.BindTo(zoomausKerroin);
197
198
199        liukusaadin.X = Window.ClientBounds.Width / 2 - 100;
200        liukusaadin.Y = Screen.TopSafe - 80;
201
202        liukusaadin.Color = Color.Pink;
203        liukusaadin.Knob.Color = Color.Black;
204        liukusaadin.Track.Color = Color.Blue;
205        liukusaadin.BorderColor = Color.Red;
206        Add(liukusaadin);
207    }
208
209
210    void ZoomaaKenttaa(double vanhaArvo, double uusiArvo)
211    {
212        Camera.ZoomFactor = 1 + uusiArvo;
213    }
214    void Zoomaa()
215    {
216        Camera.ZoomFactor += Mouse.WheelChange * 0.05;
217    }
218    void PauseValikko()
219    {
220        Pause();
221        MultiSelectWindow pausevalikko = new MultiSelectWindow("Pause", "Resume", "Restart", "Options", "Menu", "Quit");
222        Add(pausevalikko);
223        pausevalikko.AddItemHandler(0, Pause);
224        pausevalikko.AddItemHandler(2, Asetukset);
225        pausevalikko.AddItemHandler(4, ConfirmExit);
226
227    }
228    void Asetukset()
229    {
230        MultiSelectWindow asetukset = new MultiSelectWindow("Options", "Back", "Sound", "Graphic");
231        Add(asetukset);
232        asetukset.AddItemHandler(0, delegate
233        {
234            Pause();
235            PauseValikko();
236        });
237    }
238    void Havio()
239    {
240        ajastin.Stop();
241        MultiSelectWindow havio = new MultiSelectWindow("YOU LOST!!!", "Try again", "Menu", "Quit");
242        Add(havio);
243
244        havio.AddItemHandler(2, ConfirmExit);
245    }
246}
Note: See TracBrowser for help on using the repository browser.