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

Revision 7821, 12.5 KB checked in by juleppaa, 3 years ago (diff)
RevLine 
[7368]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
[7677]20    bool liikkes;
[7369]21
[7368]22    Label hiiri;
23    PhysicsObject pallo;
24    PhysicsObject maali;
[7418]25
[7767]26    Vector hiirenLiike = Vector.Zero;
[7724]27
[7677]28    GameObject haamu;
29
[7368]30    Timer ajastin;
31
[7418]32    int tyokalu = -1;
[7369]33    Vector hiirenEdellinenPaikka = Vector.Zero;
[7368]34
35
36    public override void Begin()
37    {
38
[7418]39       
[7706]40        liikkes = false;
41        haamu = null;
[7368]42        Gravity = new Vector(0, -70);
43
[7770]44        Level.Width = 10000;
45        Level.Height = 10000;
[7669]46        Level.CreateBorders();
[7706]47
48        //Level.Background.Image = tauste;
49        //Level.Background.TileToLevel();
50
51        GameObject tausta = new GameObject(Level.Width, Level.Height);
52        tausta.Image = tauste;
53        tausta.TextureWrapSize = new Vector(300, 300);
54        Add(tausta, -3);
[7767]55        //Camera.Follow(pallo);
56        Camera.StopFollowing();
[7791]57       
[7368]58        Ohjaimet();
59        LuoSlider();
60        LuoKauppa();
[7379]61        Grafiikat();
[7368]62
63
[7724]64        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1");
65
66        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
67       /* ruudut.SetTileMethod(Color.Green, );
68        ruudut.SetTileMethod(Color.Black, LuoTaso);
69        ruudut.SetTileMethod(Color.Yellow, LuoTahti);
70
71        //3. Execute luo kentän
72        //   Parametreina leveys ja korkeus
73        ruudut.Execute(20, 20);*/
[7368]74    }
75
76    void LuoKauppa()
77    {
78        for (int i = 0; i < painikeKuvat.Length; i++)
79        {
80            LuoKauppaPainike(painikeKuvat[i], i);
81        }
82
83    }
84
85    void LuoKauppaPainike(Image kuvake, int paikka)
86    {
87        var kuva = new PushButton(kuvake);
88        kuva.Size = new Vector(1, 1) * RUUDUN_KOKO;
89        kuva.X = Window.ClientBounds.Width / 2 - 100;
90        kuva.Y = Window.ClientBounds.Height / 2 - (200 + RUUDUN_KOKO * paikka);
91        kuva.Color = Color.Green;
92        Add(kuva);
93
[7379]94        /*
95        liukusaadin.X = Window.ClientBounds.Width / 2 - 100;
96        liukusaadin.Y = Screen.TopSafe - 80;
97         * */
98
99
[7368]100        kuva.Clicked += delegate
101        {
102            tyokalu = paikka;
[7677]103
104            if (tyokalu == 0 || tyokalu == 2)
105            {
106                if (haamu != null) haamu.Destroy();
107                haamu = new GameObject(100, 100);
[7767]108                haamu.Color = new Color(0, 0, 0, 128);
[7677]109                Add(haamu);
[7767]110                if (tyokalu == 0)haamu.Shape = Shape.FromImage(kaarikuva);
111               
112               
[7677]113            }
[7368]114        };
115
116    }
117
118    void Ohjaimet()
119    {
[7379]120        IsMouseVisible = true;
[7669]121        Mouse.IsCursorVisible = false;
[7368]122
123        Mouse.Listen(MouseButton.Middle, ButtonState.Down, SeuraajaKamera, "Move Camera");
124        Mouse.ListenWheel(Zoomaa, null);
125
[7369]126        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, HiiriPainettu, null);
[7368]127        Mouse.Listen(MouseButton.Left, ButtonState.Down, HiiriAlhaalla, null);
128
129        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PauseValikko, "Pause");
130        Keyboard.Listen(Key.Enter, ButtonState.Pressed, PalloLiikkeelle, "Start");
[7767]131        Keyboard.Listen(Key.Delete,ButtonState.Down, delegate {
132           
133            Keyboard.Listen(Key.Right, ButtonState.Down, MuutaSkaalaa, null, new Vector(1.5, 0));
134            Keyboard.Listen(Key.Left, ButtonState.Down, MuutaSkaalaa, null, new Vector(-1.5, 0));
135            Keyboard.Listen(Key.Up, ButtonState.Down, MuutaSkaalaa, null, new Vector(0, 1.5));
136            Keyboard.Listen(Key.Down, ButtonState.Down, MuutaSkaalaa, null, new Vector(0, -1.5));
137           
138        }, null );
[7368]139
[7677]140        Keyboard.Listen(Key.NumPad1, ButtonState.Down, MuutaKulmaa, null, 1);
141        Keyboard.Listen(Key.NumPad3, ButtonState.Down, MuutaKulmaa, null, -1);
142        Keyboard.Listen(Key.Right, ButtonState.Down, MuutaSkaalaa, null, new Vector(1,0));
143        Keyboard.Listen(Key.Left, ButtonState.Down, MuutaSkaalaa, null, new Vector(-1, 0));
144        Keyboard.Listen(Key.Up, ButtonState.Down, MuutaSkaalaa, null, new Vector(0, 1));
145        Keyboard.Listen(Key.Down, ButtonState.Down, MuutaSkaalaa, null, new Vector(0, -1));
[7368]146    }
147
[7369]148    void HiiriPainettu()
149    {
[7677]150        if (tyokalu == 0 && !liikkes)
[7418]151        {
[7677]152           
153            PhysicsObject kaari = PhysicsObject.CreateStaticObject(haamu.Width, haamu.Height);
[7418]154            kaari.Shape = Shape.FromImage(kaarikuva);
[7677]155            kaari.Angle = haamu.Angle;
[7418]156            kaari.Image = kaarikuva;
[7669]157            kaari.Position = Mouse.PositionOnWorld;
[7418]158            Add(kaari);
159        }
[7677]160        if (tyokalu == 2 && !liikkes)
[7418]161        {
[7677]162            PhysicsObject kuutio = PhysicsObject.CreateStaticObject(haamu.Width, haamu.Height);
[7418]163            kuutio.Shape = Shape.Rectangle;
[7677]164            kuutio.Angle = haamu.Angle;
[7418]165            kuutio.Color = Color.Black;
[7669]166            kuutio.Position = Mouse.PositionOnWorld;
[7418]167            Add(kuutio);
168
169        }
[7369]170        hiirenEdellinenPaikka = Mouse.PositionOnWorld;
171    }
172
[7368]173    void HiiriAlhaalla()
174    {
[7418]175        if (Mouse.PositionOnScreen.X > Screen.Right - 180)
[7379]176        {
177            hiirenEdellinenPaikka = Mouse.PositionOnWorld;
178            return;
179        }
180
[7418]181       
[7369]182        if (tyokalu == 1)
[7368]183        {
[7706]184            if (haamu != null) haamu.Destroy();
[7369]185            Vector suunta = Mouse.PositionOnWorld - hiirenEdellinenPaikka;
[7669]186           
[7370]187            int pallojenMaara = 1 + (int)Math.Round(suunta.Magnitude / 5.0);
[7369]188
189            for (int i = 0; i < pallojenMaara; i++)
190            {
191                PhysicsObject piste = PhysicsObject.CreateStaticObject(5, 5);
192                piste.Position = hiirenEdellinenPaikka + suunta * (i / (float)pallojenMaara);
193                piste.Color = Color.Black;
194                piste.Shape = Shape.Circle;
195                Add(piste);
196            }
[7368]197        }
[7418]198     
[7369]199
200        hiirenEdellinenPaikka = Mouse.PositionOnWorld;
[7368]201    }
202
[7677]203    void MuutaKulmaa( int muutos)
[7418]204    {
205        if(tyokalu == 0 || tyokalu == 2)
206        {
[7677]207            haamu.Angle += Angle.FromDegrees(muutos);
[7418]208        }
209    }
[7677]210    void MuutaSkaalaa(Vector skaala)
211    {
[7706]212        if (haamu != null && (haamu.Size+skaala).X > 0 && (haamu.Size + skaala).Y > 0)
[7677]213        {
214            haamu.Size += skaala;
215        }
216    }
[7791]217    void Palikka()
[7368]218    {
[7821]219       
[7368]220
221        maali = PhysicsObject.CreateStaticObject(70, 70);
[7418]222        maali.Tag = "maali";
[7368]223        maali.Image = Maali;
[7418]224        maali.X = 700;
225        maali.Y = -400;
[7368]226
[7418]227        Add(maali);
[7368]228
[7706]229
230
231    }
[7821]232    void LuoPallo(Vector paikka double leveys, double korkeus)
233{
234     pallo = new PhysicsObject(25.0, 25.0);
235        pallo.Shape = Shape.Circle;
236        pallo.Color = Color.Red;
237        pallo.IgnoresPhysicsLogics = true;
238        Add(pallo);
239        AddCollisionHandler(pallo, "maali", Voitto);
240        AddCollisionHandler(pallo, "tahti", Kerays);
241
242        Add(pallo);
243}
[7791]244    void LuoTahti(Vector paikka, double leveys, double ko)
[7706]245    {
246        PhysicsObject tahti = PhysicsObject.CreateStaticObject(25, 25);
[7669]247        tahti.Shape = Shape.Star;
248        tahti.Color = Color.HotPink;
249        tahti.Tag = "tahti";
250        tahti.X = 100;
[7706]251
[7669]252        Add(tahti);
[7368]253    }
254
[7669]255    void Kerays(PhysicsObject pallo, PhysicsObject tahti)
256    {
257        tahti.Destroy();
258        MessageDisplay.Add("Moi!");
259       IntMeter pisteLaskuri = new IntMeter(0);
[7368]260
[7669]261        Label pisteNaytto = new Label();
262        pisteNaytto.X = Screen.Left + 100;
263        pisteNaytto.Y = Screen.Top - 100;
264        pisteNaytto.TextColor = Color.Black;
265        pisteNaytto.Color = Color.White;
266        pisteNaytto.BindTo(pisteLaskuri);
267        Add(pisteNaytto);
[7368]268
[7669]269        pisteLaskuri.Value++;
270    }
[7368]271
[7669]272
273
[7368]274    void Grafiikat()
275    {
[7669]276       hiiri = new Label(50, 50);
277       hiiri.Image = kursori;
[7370]278       
[7677]279        Mouse.ListenMovement(0.0, HiirenSeuraus, null);
[7379]280        Add(hiiri);
[7368]281
282
283    }
284    void HiirenSeuraus(AnalogState hiirenTila)
285    {
[7767]286        hiirenLiike = hiirenTila.MouseMovement;
287
[7669]288        hiiri.Position = Mouse.PositionOnWorld;
[7379]289        hiiri.Position = Mouse.PositionOnScreen;
[7368]290        Camera.StayInLevel = true;
[7677]291        if (haamu != null)
292        {
[7706]293            haamu.Position = Mouse.PositionOnWorld;
[7677]294        }
295
[7368]296    }
297    void PalloLiikkeelle()
298    {
[7770]299        //Add(pallo);
300        Camera.Follow(pallo);
[7368]301        Keyboard.Disable(Key.Enter);
[7418]302        pallo.IgnoresPhysicsLogics = false;
[7706]303        if (haamu != null) haamu.Destroy();
[7770]304        //tyokalu = -1;
[7368]305
[7677]306        liikkes = true;
307
[7368]308        ajastin = new Timer();
309        ajastin.Interval = 0.5;
310        ajastin.Timeout += TarkistaNopeus;
311        ajastin.Start();
[7369]312
[7368]313    }
314
315    void TarkistaNopeus()
316    {
[7706]317        if (pallo.Velocity.Magnitude < 0.04)
[7368]318        {
[7369]319
[7368]320            Havio();
321        }
322    }
323
324    void SeuraajaKamera()
325    {
[7767]326        Camera.Position += -hiirenLiike;
327        //Camera.X = Mouse.PositionOnWorld.X * 0.5;
328        //Camera.Y = Mouse.PositionOnWorld.Y * 0.5;
[7368]329    }
330    void LuoSlider()
331    {
[7770]332        DoubleMeter zoomausKerroin = new DoubleMeter(0, -100, 0);
[7368]333        zoomausKerroin.Changed += ZoomaaKenttaa;
334
335        Slider liukusaadin = new Slider(50, 20);
336        liukusaadin.BindTo(zoomausKerroin);
[7669]337       
[7368]338        liukusaadin.X = Window.ClientBounds.Width / 2 - 100;
339        liukusaadin.Y = Screen.TopSafe - 80;
340
341        liukusaadin.Color = Color.Pink;
342        liukusaadin.Knob.Color = Color.Black;
343        liukusaadin.Track.Color = Color.Blue;
344        liukusaadin.BorderColor = Color.Red;
345        Add(liukusaadin);
346    }
347
348
349    void ZoomaaKenttaa(double vanhaArvo, double uusiArvo)
350    {
351        Camera.ZoomFactor = 1 + uusiArvo;
352    }
353    void Zoomaa()
354    {
355        Camera.ZoomFactor += Mouse.WheelChange * 0.05;
356    }
357    void PauseValikko()
358    {
359        Pause();
360        MultiSelectWindow pausevalikko = new MultiSelectWindow("Pause", "Resume", "Restart", "Options", "Menu", "Quit");
[7791]361
[7669]362        pausevalikko.BorderColor = Color.Red;
363        pausevalikko.Font = Font.DefaultBold;
[7821]364        pausevalikko.SetButtonTextColor(Color.Black);
365        pausevalikko.SetButtonColor(new Color(1.0 , 0, 0, 0.4));
[7791]366        pausevalikko.SelectionColor = Color.DarkRed;
[7669]367        pausevalikko.Color = Color.Transparent;
[7706]368        pausevalikko.QuestionLabel.TextColor = Color.DarkRed;
[7669]369       
[7368]370        Add(pausevalikko);
371        pausevalikko.AddItemHandler(0, Pause);
[7669]372        pausevalikko.AddItemHandler(1, Uudestaan);
[7368]373        pausevalikko.AddItemHandler(2, Asetukset);
374        pausevalikko.AddItemHandler(4, ConfirmExit);
375
376    }
377    void Asetukset()
378    {
379        MultiSelectWindow asetukset = new MultiSelectWindow("Options", "Back", "Sound", "Graphic");
380        Add(asetukset);
[7791]381        asetukset.BorderColor = Color.Red;
382        asetukset.Font = Font.DefaultBold;
[7821]383        asetukset.SetButtonTextColor(Color.Black);
384        asetukset.SetButtonColor(new Color(1.0, 0, 0, 0.4));
[7791]385        asetukset.SelectionColor = Color.DarkRed;
386        asetukset.Color = Color.Transparent;
387        asetukset.QuestionLabel.TextColor = Color.DarkRed;
[7368]388        asetukset.AddItemHandler(0, delegate
389        {
390            Pause();
391            PauseValikko();
392        });
[7669]393
394
[7368]395    }
396    void Havio()
397    {
398        ajastin.Stop();
399        MultiSelectWindow havio = new MultiSelectWindow("YOU LOST!!!", "Try again", "Menu", "Quit");
400        Add(havio);
[7791]401        havio.SelectionColor = Color.Black;
402        havio.BorderColor = Color.DarkRed;
403        havio.SetButtonColor(Color.DarkRed);
404        havio.QuestionLabel.TextColor = Color.Red;
[7368]405
[7669]406        havio.AddItemHandler(0, Uudestaan);
[7368]407        havio.AddItemHandler(2, ConfirmExit);
408    }
[7418]409
410
411    void Voitto(PhysicsObject pallo, PhysicsObject maali)
412    {
413        pallo.Destroy();
[7706]414        MultiSelectWindow voittoValikko = new MultiSelectWindow("Nice job!","Next", "Again?", "Menu", "Quit");
[7669]415        Add(voittoValikko);
416        voittoValikko.AddItemHandler(0, Uudestaan);
417        voittoValikko.AddItemHandler(2, ConfirmExit);
418        /*MessageDisplay.Add("You are good!");
419        Timer.SingleShot(3, Exit);*/
[7418]420    }
421
[7669]422    void Uudestaan() 
423    {
[7770]424        IsPaused = false;
[7669]425        ClearAll();
426        tyokalu = -1;
427        Begin();
428    }
[7418]429           
430           
431
[7368]432}
Note: See TracBrowser for help on using the repository browser.