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

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